{"title":"Rule Engine","nodeType":"Predictor","id":"*zpGPAjDyExkFL2HB","factoryName":"org.knime.base.node.rules.engine.RuleEngineNodeFactory","factoryId":"org.knime.base.node.rules.engine.RuleEngineNodeFactory","path":["Manipulation","Row","Other"],"owner":"knime","ownerAccountId":"account:team:b5f0848f-496d-4e6a-b869-fa3532248db7","description":"<p>This node takes a list of user-defined rules and tries to match them to each row in the input table. If a rule matches, its outcome value is added into a new column. The first matching rule in order of definition determines the outcome.</p><p>Each rule is represented by a line. To add comments, start a line with <tt>//</tt> (comments can not be placed in the same line as a rule). Anything after <tt>//</tt> will not be interpreted as a rule. Rules consist of a condition part (antecedent), which must evaluate to <i>true</i> or <i>false</i> , and an outcome (consequent, after the &#61;&gt; symbol) which is put into the new column if the rule matches.</p>\n            \t\t\t\n            <p>The outcome of a rule may be any of the following: a string (between <tt>&#34;</tt> or <tt>/</tt> ), a number, a boolean constant, a reference to another column or the value of a flow variable value. The type of the outcome column is the common super type of all possible outcomes (including the rules that can never match). If no rule matches, the outcome is a missing value.</p>\n            \t\t\t\n            <p>Columns are given by their name surrounded by $, numbers are given in the usual decimal representation. Note that strings must not contain (double-)quotes. Flow variables are represented by <b>$${<!-- --></b> TypeCharacterAndFlowVarName <b>}$$</b> . The TypeCharacter should be &#39;D&#39; for double (real) values, &#39;I&#39; for integer values and &#39;S&#39; for strings. You can insert column names or flow variables by hand or by clicking in the respective lists in the dialog.</p>\n                        \n            <p>The logical expressions can be grouped with parentheses. The precedence rules for them are the following: <tt>NOT</tt> binds most, <tt>AND</tt> , <tt>XOR</tt> and finally <tt>OR</tt> the least. Comparison operators always take precedence over logical connectives. All operators (and their names) are case-sensitive.</p>\n            \t\t\t\n            <p>The <tt>ROWID</tt> represents the row key string, the <tt>ROWINDEX</tt> is a the index of the row (first row has <tt>0</tt> value), while <tt>ROWCOUNT</tt> stands for the number of rows in the table.</p>\n            \t\t\t\n            <p>Some example rules (each should be in one line):</p>\n            \t\t\t\n            <pre>// This is a comment\n$Col0$ &gt; 0 &#61;&gt; &#34;Positive&#34;\n</pre>\n            \t\t\tWhen the values in Col0 are greater than 0, we assign Positive to the\n\t\t\tresult column value (if no previous rule matched).\n\t\t\t\n            <pre>$Col0$ &#61; &#34;Active&#34; AND $Col1$ &lt;&#61; 5 &#61;&gt; &#34;Outlier&#34;\n</pre>\n            \t\t\tYou can combine conditions.\n\t\t\t\n            <pre>$Col0$ LIKE &#34;Market Street*&#34; AND \n    ($Col1$ IN (&#34;married&#34;, &#34;divorced&#34;) \n        OR $Col2$ &gt; 40) &#61;&gt; &#34;Strange&#34;\n$Col0$ MATCHES $${SFlowVar0}$$ OR $$ROWINDEX$$ &lt; $${IFlowVar1}$$ &#61;&gt;\n    $Col0$\n</pre>\n            \t\t\tWith parentheses you can combine multiple conditions. The result in\n\t\t\tthe second case comes from one of the columns.\n\t\t\t\n            <pre>$Col0$ &gt; 5 &#61;&gt; $${SCol1}$$\n</pre>\n            \t\t\tThe result can also come from a flow variable.\n\t\t\t\n            <p>You can use either Ctrl&#43;Space to insert predefined parts, or select them from the upper controls.</p>\n            \t\t\t\n\t\t\t\n            <p>The following comparisons result true (other values are neither less, nor greater or equal to missing and NaN values):</p><ul><li><b>?</b> &#61;,&lt;&#61;,&gt;&#61; <b>?</b></li><li><b>NaN</b> &#61;,&lt;&#61;,&gt;&#61; <b>NaN</b></li></ul>\n                \t\t\t\n            \n            \t\t\n        \n        ","shortDescription":"Applies user-defined business rules to the input table","keywords":["Condition","If then","Formula","Imputation"],"deprecated":false,"streamable":true,"tags":["Manipulation","Row","Other","Streamable"],"icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDY3IDc5LjE1Nzc0NywgMjAxNS8wMy8zMC0yMzo0MDo0MiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowYjM2YWM5Ny01ZWJhLTQwZTctOTE4OS1iYmU4ZDdkMGYyNGUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzU0QURGNzAxNjhDMTFFNUJEOTVBMUI1OTFFQzZGQkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzU0QURGNkYxNjhDMTFFNUJEOTVBMUI1OTFFQzZGQkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDplYjRlYWE5NS1mMzM5LTQzZTctYmY1Yy0yNzFmOThkY2ZiMmIiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MGIzNmFjOTctNWViYS00MGU3LTkxODktYmJlOGQ3ZDBmMjRlIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+JvYtSAAAAOxJREFUeNqkU0kOgzAMdBANvAkhFQ4cuSKeAG/gwHP4IlmIm0Q1VaCl0I4UKTH2eBLGDBGBMYY3nsARbBpoJejIXL4UM8QUcYcj2CYBn5LCB6KgxTVgQGCMgV/wN0F8Wu/mijxJQwXfkGUZ9H0PYp6PFVAnenWlFHDO/f5eFJCk6dsCNMuCUkrcYhxHl4BVVQVx6wP0tURAcPumaYJit6Zp8jGt1DFBXddrEa1hGNbv6qlyR7BovSa1bbsW53keSP9IQNIIXddhWZa7N6FGRMBomPCslV2e/UPOB3Z+WHTZeuFQvXxAzrqKhwADALmDG8FwJcY0AAAAAElFTkSuQmCC","views":[],"inPorts":[{"objectClass":"org.knime.core.node.BufferedDataTable","color":"000000","dataType":"Table","optional":false,"name":"Table","description":"Any datatable"}],"outPorts":[{"objectClass":"org.knime.core.node.BufferedDataTable","color":"000000","dataType":"Table","optional":false,"name":"Classified values","description":"The input table with an additional column containing the outcome of the matching rule for each row."}],"dynInPorts":[],"dynOutPorts":[],"additionalSiteInformation":{"url":"https://update.knime.com/analytics-platform/5.12","trusted":true,"enabledByDefault":true,"name":"KNIME Analytics Platform 5.12 Update Site","version":"5.12.0"},"dialog":[{"sectionName":"Rule Editor","fields":[{"name":"Column List","description":"Available columns, which can be used as variables in a rule.","optional":false},{"name":"Flow Variable List","description":"Available flow variables, which can be used as variables in a rule.","optional":false},{"name":"Category","description":"The operator categories.","optional":false},{"name":"Function","description":"A list of valid operators in the selected category.","optional":false},{"name":"Description","description":"Short help about the operator.","optional":false},{"name":"Expression","description":"The rule editor. You can complete the expressions with Ctrl&#43;Space. Each row represents a rule. A red background of the line signals an error and the left side of the editor then shows an error icon.","optional":false},{"name":"Append Column","description":"Name of the newly appended column, which contains the outcome of the rules.","optional":false},{"name":"Replace Column","description":"The column to replace","optional":false}]}],"links":[],"kudos":[{"accountId":"account:user:3784265b-0f76-45f2-9a61-e472e4206f70","user":"nimantha","date":"2021-02-07T17:44:41+00:00"},{"accountId":"account:user:751e2226-1074-4bf6-b7af-29a0c091d977","user":"gimbo","date":"2021-02-19T09:17:24+00:00"},{"accountId":"account:user:6e639a62-a85d-498c-8112-0f199e557f12","user":"luca_gaona_1","date":"2024-05-31T12:11:53+00:00"},{"accountId":"account:user:3a5aea77-6309-4354-8099-fd59b8c12196","user":"paolotamag","date":"2021-02-12T08:55:57+00:00"},{"accountId":"account:user:1a89b8de-a1af-46a8-a907-d520758b3d19","user":"lada","date":"2020-12-29T16:08:15+00:00"},{"accountId":"account:user:0f5e06cb-4fae-4635-b4e4-ee6cc12a3294","user":"vincenzo","date":"2021-03-30T07:57:26+00:00"},{"accountId":"account:user:498b0732-17cb-40a8-bc35-fccbe94ac93e","user":"nborbas","date":"2023-04-27T08:34:39+00:00"}],"kudosCount":7,"bundleInformation":{"bundleVersion":"5.12.0.v202606171353","bundleName":"KNIME Java Snippet Nodes","bundleSymbolicName":"org.knime.jsnippets","bundleVendor":"KNIME AG, Zurich, Switzerland","featureSymbolicName":"org.knime.features.javasnippet","featureName":"KNIME Javasnippet","featureVersion":"5.12.0.v202606171353","featureVendor":"KNIME AG, Zurich, Switzerland","extensionId":"*hXfYFyb7ZzM0xseG"},"frequentSuccessors":[{"id":"*5stmXk6zY_ORA4bC","factoryName":"org.knime.base.node.preproc.groupby.GroupByNodeFactory","probability":0.10976094035422126},{"id":"*zpGPAjDyExkFL2HB","factoryName":"org.knime.base.node.rules.engine.RuleEngineNodeFactory","probability":0.09379715669922961},{"id":"*DOkyMaii62U05xZ1","factoryName":"org.knime.base.node.preproc.filter.column.DataColumnSpecFilterNodeFactory","probability":0.07640378047811928},{"id":"*ZgYyOm1P9VJVBE9e","factoryName":"org.knime.base.node.preproc.joiner.Joiner2NodeFactory","probability":0.07616551505043286},{"id":"*jd2U-FYTI8jCbQls","factoryName":"org.knime.base.node.preproc.filter.row.RowFilterNodeFactory","probability":0.07044714478595822},{"id":"*0rhLXWO6OS1xMi8T","factoryName":"org.knime.base.node.preproc.append.row.AppendedRowsNodeFactory","probability":0.04153760622666984},{"id":"*2fI5rIsFDCFPHc0R","factoryName":"org.knime.ext.jep.JEPNodeFactory","probability":0.03534270510682233},{"id":"*Q-yW-3C9DumtInuz","factoryName":"org.knime.base.node.rules.engine.RuleEngineFilterNodeFactory","probability":0.034310221586847746},{"id":"*eOn8ibZnxIkY7XhT","factoryName":"org.knime.base.node.preproc.stringmanipulation.StringManipulationNodeFactory","probability":0.03018028750694941},{"id":"*PHWv6FsABEjrSc76","factoryName":"org.knime.base.node.preproc.rename.RenameNodeFactory","probability":0.021046779445635773}]}
