<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Vertex Documentation – Rule engine module</title>
    <link>/docs/modules/vertex-infra-ruleengine/</link>
    <description>Recent content in Rule engine module on Vertex Documentation</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    
	  <atom:link href="/docs/modules/vertex-infra-ruleengine/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Screens</title>
      <link>/docs/modules/vertex-infra-ruleengine/screens/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/modules/vertex-infra-ruleengine/screens/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Docs: Scripting language</title>
      <link>/docs/modules/vertex-infra-ruleengine/scripting_language/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/modules/vertex-infra-ruleengine/scripting_language/</guid>
      <description>
        
        
        &lt;h1 id=&#34;scripting-language-reference&#34;&gt;Scripting language reference&lt;/h1&gt;
&lt;p&gt;This page is the language reference for the BRE (business rule engine) scripting language used throughout the Vertex platform. It covers the statement model, the data types, the operators and the control flow constructs, with worked examples for the pitfalls new rule authors run into. Every code example on this page is executable as written and is pinned by a &lt;code&gt;docs_*&lt;/code&gt; script case in &lt;code&gt;EE.Library.UnitTests\Rules\ScriptCases&lt;/code&gt;, so the documented behavior is the tested behavior.&lt;/p&gt;
&lt;h2 id=&#34;working-in-the-script-editor&#34;&gt;Working in the script editor&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;On the Vertex home page press the button &amp;ldquo;script library&amp;rdquo; to access all the scripts that have currently been made.&lt;/li&gt;
&lt;li&gt;Then press the button &amp;ldquo;new script&amp;rdquo; to create a new script.&lt;/li&gt;
&lt;li&gt;Select a name and potentially also a description for your script and press on &amp;ldquo;create and add properties&amp;rdquo;. A text editor will open where you can edit your script.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A context can be entered into the script by pressing the &amp;ldquo;import context&amp;rdquo; button on the top right of the script text editor. This context provides variables that can be accessed from within the script. All the available variables for a certain context can be viewed by importing that context and opening the &amp;ldquo;input&amp;rdquo; tab under the text editor. Pressing the green &amp;ldquo;run&amp;rdquo; button runs the script and fills the output tab underneath the editor.&lt;/p&gt;
&lt;h1 id=&#34;statements&#34;&gt;Statements&lt;/h1&gt;
&lt;p&gt;A script is a sequence of statements. Each statement is an expression; an assignment is an expression too. When the script finishes, the value of the last evaluated statement is the result of the script (next to whatever was explicitly assigned to the output, see &lt;a href=&#34;#variables-and-assignment&#34;&gt;Variables and assignment&lt;/a&gt;).&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;parameterName1 = 1
parameterName1 + 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;2&lt;/code&gt;. The first line stores a value under the name &lt;code&gt;parameterName1&lt;/code&gt;, the second line reads it back and produces the script result.&lt;/p&gt;
&lt;h2 id=&#34;statement-separators-newline-or-&#34;&gt;Statement separators: newline or &lt;code&gt;;;&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Statements are separated by a line break, by the &lt;code&gt;;;&lt;/code&gt; separator, or a mix of both. These two scripts are identical:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;price = 10
quantity = 4
price * quantity
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;price = 10;; quantity = 4;; price * quantity
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result of both: &lt;code&gt;40&lt;/code&gt;. Use &lt;code&gt;;;&lt;/code&gt; when statements must share a line, for example inside a single-line block. A single &lt;code&gt;;&lt;/code&gt; does NOT separate statements - it separates arguments and elements, which is the next topic.&lt;/p&gt;
&lt;h2 id=&#34;one-character-apart--vs--vs--vs-&#34;&gt;One character apart: &lt;code&gt;;&lt;/code&gt; vs &lt;code&gt;;;&lt;/code&gt; vs &lt;code&gt;:&lt;/code&gt; vs &lt;code&gt;,&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Four separators look alike but mean very different things. Getting these wrong is the most common beginner mistake in this language.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Separator&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Separates method arguments, collection elements and object properties: &lt;code&gt;pow(10; 2)&lt;/code&gt;, &lt;code&gt;c[1; 2]&lt;/code&gt;, &lt;code&gt;{A: 1; B: 2}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;;;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Separates statements on one line: &lt;code&gt;a = 1;; b = 2&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;:&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Separates an object property key from its value: &lt;code&gt;{Price: 10}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;,&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A decimal separator inside a number - NEVER an argument separator&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The comma deserves special attention. &lt;code&gt;1,5&lt;/code&gt; is one single number token, so a call like this does not do what it appears to do:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;round(1,5)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This is a call to &lt;code&gt;round&lt;/code&gt; with ONE argument, not two. The engine reads &lt;code&gt;1,5&lt;/code&gt; as a single number: in a rule context whose input culture uses the comma as decimal separator that number is 1.5 (so this parses as &lt;code&gt;round(1.5)&lt;/code&gt;), and in a point-decimal culture such as &lt;code&gt;en-US&lt;/code&gt; the comma is a thousands separator and the number is 15. Either way &lt;code&gt;round&lt;/code&gt; then fails at run time, because it requires two arguments (the value and the number of decimals). Arguments are always separated with &lt;code&gt;;&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;round(1.5; 0)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;2&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;both-decimal-separators-are-accepted&#34;&gt;Both decimal separators are accepted&lt;/h2&gt;
&lt;p&gt;The grammar accepts both &lt;code&gt;.&lt;/code&gt; and &lt;code&gt;,&lt;/code&gt; inside a number literal. Which one denotes the decimal fraction is decided by the input culture of the rules context the script runs in: &lt;code&gt;1.5&lt;/code&gt; is one and a half under &lt;code&gt;en-US&lt;/code&gt; but fifteen under &lt;code&gt;nl-NL&lt;/code&gt; (where &lt;code&gt;.&lt;/code&gt; groups thousands), and vice versa for &lt;code&gt;1,5&lt;/code&gt;. Write number literals with the decimal separator of the context your script runs in, and keep the previous section in mind: a comma never separates arguments.&lt;/p&gt;
&lt;h1 id=&#34;data-types&#34;&gt;Data types&lt;/h1&gt;
&lt;h2 id=&#34;numbers&#34;&gt;Numbers&lt;/h2&gt;
&lt;p&gt;All numeric values share one number type. Standard arithmetic works as expected, including scientific notation and repeated signs:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;0.5+0.5
((1+1)+1)
--1
1e10
10/2
10^2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The lines evaluate to &lt;code&gt;1&lt;/code&gt;, &lt;code&gt;3&lt;/code&gt;, &lt;code&gt;1&lt;/code&gt;, &lt;code&gt;10000000000&lt;/code&gt;, &lt;code&gt;5&lt;/code&gt; and &lt;code&gt;100&lt;/code&gt; (the last line is the script result). &lt;code&gt;^&lt;/code&gt; is the power operator and &lt;code&gt;--1&lt;/code&gt; resolves to &lt;code&gt;1&lt;/code&gt; because the two unary minus signs cancel out.&lt;/p&gt;
&lt;h2 id=&#34;booleans&#34;&gt;Booleans&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;TRUE&lt;/code&gt; and &lt;code&gt;FALSE&lt;/code&gt; (in any casing, see &lt;a href=&#34;#case-insensitivity&#34;&gt;Case-insensitivity&lt;/a&gt;) form the boolean type. Booleans are typically produced by the relational operators:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;1 &amp;gt; 0
10 &amp;lt;= 10
2 != 2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The lines evaluate to &lt;code&gt;true&lt;/code&gt;, &lt;code&gt;true&lt;/code&gt; and &lt;code&gt;false&lt;/code&gt;. Booleans combine with the logical operators:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;NOT true
true AND false
true OR false
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The lines evaluate to &lt;code&gt;false&lt;/code&gt;, &lt;code&gt;false&lt;/code&gt; and &lt;code&gt;true&lt;/code&gt;. Boolean literals are case-insensitive:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(true == TRUE) AND (False == FALSE)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;TRUE&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;null&#34;&gt;null&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;null&lt;/code&gt; represents the absence of a value and is case-insensitive as well:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;IsNull(null) AND IsNull(NULL) AND IsNull(NuLl)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;TRUE&lt;/code&gt;. Use &lt;code&gt;IsNull&lt;/code&gt; to test for it; &lt;code&gt;numeric()&lt;/code&gt; without arguments produces a null number:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;IsNull(numeric())
IsNull(36)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The lines evaluate to &lt;code&gt;true&lt;/code&gt; and &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;strings&#34;&gt;Strings&lt;/h2&gt;
&lt;p&gt;A string literal is text between single or double quotes:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;#34;This is a string&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To put a quote of the surrounding style inside the literal, escape it with a forward slash: &lt;code&gt;/&#39;&lt;/code&gt; produces &lt;code&gt;&#39;&lt;/code&gt; and &lt;code&gt;/&amp;quot;&lt;/code&gt; produces &lt;code&gt;&amp;quot;&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;single = &amp;#39;It/&amp;#39;s quoted&amp;#39;
double = &amp;#34;Say /&amp;#34;hi/&amp;#34;&amp;#34;
single + &amp;#39; - &amp;#39; + double
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;It&#39;s quoted - Say &amp;quot;hi&amp;quot;&lt;/code&gt;. Strings are concatenated with &lt;code&gt;+&lt;/code&gt;. Note that the escape character is the forward slash &lt;code&gt;/&lt;/code&gt;, not the backslash used in many other languages.&lt;/p&gt;
&lt;h2 id=&#34;date-and-time&#34;&gt;Date and time&lt;/h2&gt;
&lt;p&gt;A datetime value represents a specific date and time. Construct one with the &lt;code&gt;DateTime&lt;/code&gt; method from a string in &lt;code&gt;dd-MM-yyyy&lt;/code&gt;, &lt;code&gt;dd/MM/yyyy&lt;/code&gt; or ISO &lt;code&gt;yyyy-MM-ddTHH:mm:ss&lt;/code&gt; format:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;DateTime(&amp;#39;01-01-2017&amp;#39;)
DateTime(&amp;#39;2009-06-15T13:45:30&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The first line is midnight on 1 January 2017, the second is 15 June 2009 at 13:45:30. How a datetime is displayed depends on the output culture of the rules context.&lt;/p&gt;
&lt;h2 id=&#34;collections&#34;&gt;Collections&lt;/h2&gt;
&lt;p&gt;A collection is an ordered list of values, written as &lt;code&gt;c[&lt;/code&gt; &amp;hellip; &lt;code&gt;]&lt;/code&gt; with &lt;code&gt;;&lt;/code&gt; between the elements. Elements can have mixed types and can be collections themselves:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;c[true;false;3;c[1;2];&amp;#34;hi&amp;#34;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The &lt;code&gt;IN&lt;/code&gt; and &lt;code&gt;NOTIN&lt;/code&gt; operators test membership:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;true IN c[false;true;false;true;1;2;3;&amp;#39;1&amp;#39;;&amp;#39;hi1&amp;#39;;&amp;#39;hi2&amp;#39;]
true NOTIN c[false;true;false;true;1;2;3;&amp;#39;1&amp;#39;;&amp;#39;hi1&amp;#39;;&amp;#39;hi2&amp;#39;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The lines evaluate to &lt;code&gt;true&lt;/code&gt; and &lt;code&gt;false&lt;/code&gt;. Elements are retrieved by zero-based index with &lt;code&gt;elementat&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;elementat(c[10;100;1000;10000;100000];0)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;10&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;objects&#34;&gt;Objects&lt;/h2&gt;
&lt;p&gt;An object stores key-value pairs. An object literal is written between braces, with &lt;code&gt;:&lt;/code&gt; between key and value and &lt;code&gt;;&lt;/code&gt; between the properties:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ThisIsAnObject = {FirstKey: c[3;true;&amp;#34;Hi&amp;#34;]}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Properties are read with the dot notation, see &lt;a href=&#34;#property-access&#34;&gt;Property access&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;order = {Price: 10; Quantity: 2}
order.Price * order.Quantity
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;20&lt;/code&gt;. An empty object is created with &lt;code&gt;object()&lt;/code&gt;, and properties can be added or replaced through the dynamic accessor &lt;code&gt;.[key]&lt;/code&gt;, which also works with computed keys:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ThisIsAnObject = object()
ThisIsAnObject.[&amp;#34;FirstKey&amp;#34;] = c[3;true;&amp;#34;Hi&amp;#34;]
ThisIsAnObject.[&amp;#34;FirstKey&amp;#34;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;c[3; TRUE; &#39;Hi&#39;]&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;custom-enums&#34;&gt;Custom enums&lt;/h2&gt;
&lt;p&gt;A custom enum value identifies one entry of a tenant-defined enumeration. Enum values usually arrive through the input context or decision tables; the &lt;code&gt;CustomEnum(enumComponentId; valueComponentId)&lt;/code&gt; method constructs one explicitly from the component ids. Two enum values are equal when they refer to the same enumeration entry:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;status = CustomEnum(&amp;#39;07A3EA2F-E080-4D7C-8CDD-1150702D407F&amp;#39;; &amp;#39;8CDD4A12-2A38-4F99-A004-8BBCA8FCE65F&amp;#39;)
status == CustomEnum(&amp;#39;07A3EA2F-E080-4D7C-8CDD-1150702D407F&amp;#39;; &amp;#39;8CDD4A12-2A38-4F99-A004-8BBCA8FCE65F&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;TRUE&lt;/code&gt;.&lt;/p&gt;
&lt;h1 id=&#34;variables-and-assignment&#34;&gt;Variables and assignment&lt;/h1&gt;
&lt;p&gt;The language has two assignment operators, and the difference matters:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;=&lt;/code&gt; assigns to a LOCAL variable. Locals only exist while the script runs and are discarded afterwards.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;-&lt;/code&gt; assigns to the OUTPUT of the script. Everything assigned with &lt;code&gt;&amp;lt;-&lt;/code&gt; is returned to the caller of the script.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;parameterName1 = 1
parameterName1 + 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;2&lt;/code&gt;, and the output channel stays empty because &lt;code&gt;parameterName1&lt;/code&gt; was only a local.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;outputVariable &amp;lt;- 3
outputVariable - 2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;1&lt;/code&gt;, and the script output additionally contains &lt;code&gt;outputVariable&lt;/code&gt; with value &lt;code&gt;3&lt;/code&gt;. Output variables can be read back in the script just like locals. Variables that come from the imported context (the input) can be read but never assigned.&lt;/p&gt;
&lt;p&gt;Variable names consist of letters, digits and underscores, and are case-insensitive: &lt;code&gt;myValue&lt;/code&gt; and &lt;code&gt;MYVALUE&lt;/code&gt; are the same variable.&lt;/p&gt;
&lt;h1 id=&#34;operators&#34;&gt;Operators&lt;/h1&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Operators&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Arithmetic&lt;/td&gt;
&lt;td&gt;&lt;code&gt;+&lt;/code&gt; &lt;code&gt;-&lt;/code&gt; &lt;code&gt;*&lt;/code&gt; &lt;code&gt;/&lt;/code&gt; &lt;code&gt;^&lt;/code&gt; (power), unicode alternatives &lt;code&gt;×&lt;/code&gt; &lt;code&gt;·&lt;/code&gt; for &lt;code&gt;*&lt;/code&gt; and &lt;code&gt;÷&lt;/code&gt; for &lt;code&gt;/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comparison&lt;/td&gt;
&lt;td&gt;&lt;code&gt;==&lt;/code&gt; &lt;code&gt;!=&lt;/code&gt; &lt;code&gt;&amp;gt;&lt;/code&gt; &lt;code&gt;&amp;gt;=&lt;/code&gt; &lt;code&gt;&amp;lt;&lt;/code&gt; &lt;code&gt;&amp;lt;=&lt;/code&gt; (&lt;code&gt;=&amp;gt;&lt;/code&gt; and &lt;code&gt;=&amp;lt;&lt;/code&gt; are accepted alternative spellings of &lt;code&gt;&amp;gt;=&lt;/code&gt; and &lt;code&gt;&amp;lt;=&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logical&lt;/td&gt;
&lt;td&gt;&lt;code&gt;AND&lt;/code&gt; or &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;, &lt;code&gt;OR&lt;/code&gt; or `&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Membership&lt;/td&gt;
&lt;td&gt;&lt;code&gt;IN&lt;/code&gt;, &lt;code&gt;NOTIN&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Assignment&lt;/td&gt;
&lt;td&gt;&lt;code&gt;=&lt;/code&gt; (local), &lt;code&gt;&amp;lt;-&lt;/code&gt; (output)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Multiplication and division bind stronger than addition and subtraction, and &lt;code&gt;^&lt;/code&gt; binds stronger still; use parentheses whenever the intent is not obvious at a glance. Note that a single &lt;code&gt;=&lt;/code&gt; between two values is an assignment, never a comparison - equality is always &lt;code&gt;==&lt;/code&gt;.&lt;/p&gt;
&lt;h1 id=&#34;property-access&#34;&gt;Property access&lt;/h1&gt;
&lt;p&gt;Values with named members (objects, context inputs) are accessed with a dot:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;inputPricing.totalValue &amp;lt; 100000
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The dot and the member name must be written together: &lt;code&gt;a.b&lt;/code&gt; is member access, but &lt;code&gt;a . b&lt;/code&gt; is a syntax error because a free-standing &lt;code&gt;.&lt;/code&gt; is read as a decimal separator.&lt;/p&gt;
&lt;p&gt;When the key is not a valid name or is computed at run time, use the dynamic accessor &lt;code&gt;.[expression]&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ThisIsAnObject = object()
ThisIsAnObject.[&amp;#34;FirstKey&amp;#34;] = c[3;true;&amp;#34;Hi&amp;#34;]
ThisIsAnObject.[&amp;#34;FirstKey&amp;#34;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The dynamic accessor is also the only member form that can be assigned to.&lt;/p&gt;
&lt;h1 id=&#34;lambda-arguments&#34;&gt;Lambda arguments&lt;/h1&gt;
&lt;p&gt;Several collection methods take a small inline function - a lambda - as an argument. A lambda is written as &lt;code&gt;variable $ expression&lt;/code&gt;: the variable is bound to each element in turn and the expression is evaluated for it.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;any(c[&amp;#39;hi&amp;#39;;&amp;#39;hello&amp;#39;;&amp;#39;dag&amp;#39;;&amp;#39;test&amp;#39;;&amp;#39;nn&amp;#39;]; x $ x == &amp;#39;test&amp;#39;)
any(c[&amp;#39;hi&amp;#39;;&amp;#39;hello&amp;#39;;&amp;#39;dag&amp;#39;;&amp;#39;test&amp;#39;;&amp;#39;nn&amp;#39;]; x $ x != &amp;#39;test&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Both lines evaluate to &lt;code&gt;true&lt;/code&gt; (&lt;code&gt;any&lt;/code&gt; asks whether at least one element matches).&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;all(c[&amp;#39;hi&amp;#39;;&amp;#39;hello&amp;#39;;&amp;#39;dag&amp;#39;;&amp;#39;test&amp;#39;;&amp;#39;nn&amp;#39;]; x $ IsString(x))
all(c[&amp;#39;hi&amp;#39;;&amp;#39;hello&amp;#39;;&amp;#39;dag&amp;#39;;&amp;#39;test&amp;#39;;&amp;#39;nn&amp;#39;]; x $ x == &amp;#39;thisisnotonthelist&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The lines evaluate to &lt;code&gt;true&lt;/code&gt; and &lt;code&gt;false&lt;/code&gt; (&lt;code&gt;all&lt;/code&gt; asks whether every element matches). Other lambda-taking methods such as &lt;code&gt;select&lt;/code&gt; and &lt;code&gt;groupby&lt;/code&gt; follow the same &lt;code&gt;x $ expression&lt;/code&gt; shape.&lt;/p&gt;
&lt;h1 id=&#34;comments&#34;&gt;Comments&lt;/h1&gt;
&lt;p&gt;Two comment forms exist, and both are completely invisible to the engine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;//&lt;/code&gt; comments out the rest of the line.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/*&lt;/code&gt; &amp;hellip; &lt;code&gt;*/&lt;/code&gt; comments out everything in between, may span multiple lines, and may even sit in the middle of an expression.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;// the base price
price = 10 // a trailing comment
total = /* tax */ price + 5
/* block comments
   can span lines */
total
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;15&lt;/code&gt;. Comment markers inside a string literal keep their literal meaning: &lt;code&gt;&#39;http://example.com&#39;&lt;/code&gt; is just a string. A &lt;code&gt;/*&lt;/code&gt; must always be closed with &lt;code&gt;*/&lt;/code&gt;, otherwise the script has a syntax error.&lt;/p&gt;
&lt;h1 id=&#34;control-flow&#34;&gt;Control flow&lt;/h1&gt;
&lt;h2 id=&#34;if--elseif--else&#34;&gt;IF / ELSEIF / ELSE&lt;/h2&gt;
&lt;p&gt;The conditional is an expression: &lt;code&gt;IF condition THEN result ELSEIF condition THEN result ELSE result&lt;/code&gt;. It produces the value of the chosen branch:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(IF 16 &amp;gt; 2*4 THEN &amp;#39;HALLO&amp;#39; ELSE &amp;#39;DOEG&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;&#39;HALLO&#39;&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(IF 1==2 THEN 10 ELSEIF 200!=200 THEN 100 ELSEIF 30+5&amp;gt;30 THEN 1000 ELSE 10000)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;1000&lt;/code&gt;. Conditions are checked top to bottom and the first true branch wins.&lt;/p&gt;
&lt;h3 id=&#34;the-braceless-if-pitfall&#34;&gt;The braceless IF pitfall&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;IF&lt;/code&gt; has no braces and no end marker. A branch is a full statement list, so an unparenthesized &lt;code&gt;IF&lt;/code&gt; absorbs the FOLLOWING statement lines into its branch. This script looks like it always assigns &lt;code&gt;&#39;after the if&#39;&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;IF 1 &amp;gt; 2 THEN
    x = &amp;#39;from the branch&amp;#39;
x = &amp;#39;after the if&amp;#39;
x
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;It does not. Both assignment lines belong to the &lt;code&gt;THEN&lt;/code&gt; branch, the condition is false, so neither runs and the script fails with &lt;code&gt;Could not find &#39;x&#39; in the context&lt;/code&gt;. The indentation suggests a structure the language does not have.&lt;/p&gt;
&lt;p&gt;The fix: wrap the conditional in parentheses. The closing &lt;code&gt;)&lt;/code&gt; unambiguously ends the &lt;code&gt;IF&lt;/code&gt;, and everything after it is ordinary top-level script again:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;y = (IF 1 &amp;gt; 2 THEN &amp;#39;branch&amp;#39; ELSE &amp;#39;fallback&amp;#39;)
x = &amp;#39;after the if&amp;#39;
y + &amp;#39; &amp;#39; + x
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;&#39;fallback after the if&#39;&lt;/code&gt;. Rule of thumb: when any statement follows an &lt;code&gt;IF&lt;/code&gt; on later lines, parenthesize the &lt;code&gt;IF&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;while&#34;&gt;WHILE&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;WHILE(condition) { body }&lt;/code&gt; evaluates the condition BEFORE every iteration and runs the body while it is true. The value of the loop is the value the body produced in its last iteration:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;a &amp;lt;- 0
while(a &amp;lt; 5)
{
    a &amp;lt;- a + 1
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;5&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To protect against endless loops the engine stops a &lt;code&gt;WHILE&lt;/code&gt; after 10000 iterations by default and raises the error &lt;code&gt;Maximum number of iterations (&#39;10000&#39;) reached&lt;/code&gt;. A loop that legitimately needs a different bound passes it as the second argument, separated - as always - with &lt;code&gt;;&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;i = 0
while(i &amp;lt; 3; 10)
{
    i = i + 1
}
i
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;3&lt;/code&gt; (the loop ran three times, well within its explicit bound of ten). The bound argument raises or lowers only the safety limit; it never changes how often the condition is checked.&lt;/p&gt;
&lt;h2 id=&#34;foreach&#34;&gt;FOREACH&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;FOREACH(variable IN collection) { body }&lt;/code&gt; runs the body once for every element, with the element bound to the variable:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;number = 0
foreach(x in c[1;2;3]){
number = x + number
}
number
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;6&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;sequence&#34;&gt;SEQUENCE&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;SEQUENCE { statements }&lt;/code&gt; groups a statement list into one expression whose value is the last statement&amp;rsquo;s value. Use it where a single expression is expected but several steps are needed:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;sequence {
    subtotal = 40
    subtotal * 1.21
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;48.40&lt;/code&gt;. Note that the &lt;code&gt;{&lt;/code&gt; must be on the same line as the &lt;code&gt;sequence&lt;/code&gt; keyword; a line break between them is a syntax error (unlike &lt;code&gt;WHILE&lt;/code&gt; and &lt;code&gt;FOREACH&lt;/code&gt;, which do allow the brace on the next line).&lt;/p&gt;
&lt;h1 id=&#34;case-insensitivity&#34;&gt;Case-insensitivity&lt;/h1&gt;
&lt;p&gt;The language is case-insensitive across the board:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keywords: &lt;code&gt;if&lt;/code&gt;/&lt;code&gt;IF&lt;/code&gt;, &lt;code&gt;then&lt;/code&gt;/&lt;code&gt;THEN&lt;/code&gt;, &lt;code&gt;while&lt;/code&gt;/&lt;code&gt;WHILE&lt;/code&gt;, &lt;code&gt;foreach&lt;/code&gt;/&lt;code&gt;FOREACH&lt;/code&gt;, &lt;code&gt;sequence&lt;/code&gt;/&lt;code&gt;SEQUENCE&lt;/code&gt;, &lt;code&gt;and&lt;/code&gt;/&lt;code&gt;AND&lt;/code&gt;, &lt;code&gt;or&lt;/code&gt;/&lt;code&gt;OR&lt;/code&gt;, &lt;code&gt;xor&lt;/code&gt;/&lt;code&gt;XOR&lt;/code&gt;, &lt;code&gt;not&lt;/code&gt;/&lt;code&gt;NOT&lt;/code&gt;, &lt;code&gt;in&lt;/code&gt;/&lt;code&gt;IN&lt;/code&gt;, &lt;code&gt;notin&lt;/code&gt;/&lt;code&gt;NOTIN&lt;/code&gt; - any casing works.&lt;/li&gt;
&lt;li&gt;The literals &lt;code&gt;TRUE&lt;/code&gt;, &lt;code&gt;FALSE&lt;/code&gt; and &lt;code&gt;null&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Method names.&lt;/li&gt;
&lt;li&gt;Variable names.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;(if TRUE then &amp;#39;yes&amp;#39; else &amp;#39;no&amp;#39;) == (IF true THEN &amp;#39;yes&amp;#39; ELSE &amp;#39;no&amp;#39;)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;TRUE&lt;/code&gt;.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ROUND(2.5; 0) == round(2.5; 0)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Result: &lt;code&gt;TRUE&lt;/code&gt;. Pick one casing convention and stick to it for readability - the engine does not care, but your colleagues do.&lt;/p&gt;
&lt;h1 id=&#34;built-in-methods&#34;&gt;Built-in methods&lt;/h1&gt;
&lt;p&gt;The sections below show commonly used built-in methods per data type with examples. Methods are called as &lt;code&gt;name(argument; argument; ...)&lt;/code&gt; and their names are case-insensitive.&lt;/p&gt;
&lt;h2 id=&#34;number-methods&#34;&gt;Number methods&lt;/h2&gt;
&lt;table class=&#34;wrapped confluenceTable&#34;&gt;&lt;colgroup&gt;&lt;col style=&#34;width: 67.0px;&#34;&gt;&lt;col style=&#34;width: 379.0px;&#34;&gt;&lt;col style=&#34;width: 253.0px;&#34;&gt;&lt;col style=&#34;width: 253.0px;&#34;&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan=&#34;1&#34; class=&#34;confluenceTh&#34;&gt;Syntax&lt;/th&gt;&lt;th colspan=&#34;1&#34; class=&#34;confluenceTh&#34;&gt;Explanation&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Script&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Output&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Log(N)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns the logarithm base 10 of the number N&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;log(10)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;2.30258509299405&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;exp(N)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns the number N to the power of e - Euler&#39;s constant&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;exp(1 / 365)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;1.00274348250654&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;sqrt(N)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns the square root of the specified number N&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;sqrt(2^10)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;32&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;pow(N&lt;sub&gt;1&lt;/sub&gt;;N&lt;sub&gt;2&lt;/sub&gt;)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns N&lt;sub&gt;1 &lt;/sub&gt;to the power of N&lt;sub&gt;2&lt;/sub&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;pow(10;2)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;100&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;mod(N&lt;sub&gt;1&lt;/sub&gt;;N&lt;sub&gt;2&lt;/sub&gt;)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns N&lt;sub&gt;1&lt;/sub&gt; modN&lt;sub&gt;2&lt;/sub&gt;, i.e. the remainder of N&lt;sub&gt;1&lt;/sub&gt;/N&lt;sub&gt;2&lt;/sub&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;mod(3;3)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;0&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;remainder(N&lt;sub&gt;1&lt;/sub&gt;;N&lt;sub&gt;2&lt;/sub&gt;)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns N&lt;sub&gt;1&lt;/sub&gt; modN&lt;sub&gt;2&lt;/sub&gt;, i.e. the remainder of N&lt;sub&gt;1&lt;/sub&gt;/N&lt;sub&gt;2&lt;/sub&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;remainder(5;3)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;2&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&#34;boolean-methods&#34;&gt;Boolean methods&lt;/h2&gt;
&lt;table class=&#34;wrapped confluenceTable&#34;&gt;&lt;colgroup&gt;&lt;col style=&#34;width: 107.0px;&#34;&gt;&lt;col style=&#34;width: 453.0px;&#34;&gt;&lt;col style=&#34;width: 253.0px;&#34;&gt;&lt;col style=&#34;width: 253.0px;&#34;&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan=&#34;1&#34; class=&#34;confluenceTh&#34;&gt;Syntax&lt;/th&gt;&lt;th colspan=&#34;1&#34; class=&#34;confluenceTh&#34;&gt;Explanation&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Script&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Output&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;ToBoolean(N)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns true when N is larger than 0 and false when N is 0 or smaller.&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;ToBoolean(1)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;true&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;IsNull(A)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns true if A is of type null&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;IsNull(numeric())
IsNull(36)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;true
false&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&#34;collection-methods&#34;&gt;Collection methods&lt;/h2&gt;
&lt;table class=&#34;relative-table wrapped confluenceTable&#34; style=&#34;width: 1871.11px;&#34;&gt;&lt;colgroup&gt;&lt;col style=&#34;width: 0.0px;&#34;&gt;&lt;col style=&#34;width: 0.0px;&#34;&gt;&lt;col style=&#34;width: 0.0px;&#34;&gt;&lt;col style=&#34;width: 0.0px;&#34;&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th colspan=&#34;1&#34; class=&#34;confluenceTh&#34;&gt;Syntax&lt;/th&gt;&lt;th colspan=&#34;1&#34; class=&#34;confluenceTh&#34;&gt;Explanation&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Example Script&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Example Output&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;sum(C)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Sums all the elements in the collection&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;sum(c[1;2;3;4;5])&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;15&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;max(C)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns the maximum element in the collection&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;max(c[1;2;3;4;5])&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;5&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;min(C)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns the minimal element in the collection&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;min(c[1;2;3;4;5])&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;1&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;count(C)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Counts the number of elements in the collection&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;count(c[1;2;3;4;5])&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;5&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;avg(C)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Calculates the average of all the elements in the collection&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;avg(c[1;2;3;4;5])&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;3&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;average(C)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Calculates the average of all the elements in the collection&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;average(c[1;2;3;4;5])&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;3&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;wavg(C&lt;sub&gt;1&lt;/sub&gt;;C&lt;sub&gt;2&lt;/sub&gt;)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Outputs the average of C&lt;sub&gt;1 &lt;/sub&gt;where the elements are weighted by C&lt;span&gt;2&lt;/span&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;wavg(c[10;25;15;40;10];c[10;100;1000;10000;100000])&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;14176&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;elementat(C; N)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Outputs the element at index N in collection C&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;elementat(c[10;100;1000;10000;100000];0)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;10&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;take(C; N)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns the first N elements of the collection C into a new collection&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;take(c[&#39;hi&#39;;&#39;hello&#39;;&#39;dag&#39;;&#39;test&#39;;&#39;nn&#39;]; 2)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;c[&#39;hi&#39;;&#39;hello&#39;]&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;skip(C; N)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns a collection of the elements of C after the Nth index&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;skip(c[&#39;hi&#39;;&#39;hello&#39;;&#39;dag&#39;;&#39;test&#39;;&#39;nn&#39;]; 3)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;c[&#39;test&#39;;&#39;nn&#39;]&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;additem(C; A)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Returns a collection which is the original collection C appended by the new element A to its end&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;additem(c[&#39;hi&#39;;&#39;hello&#39;;&#39;dag&#39;;&#39;test&#39;;&#39;nn&#39;]; 3)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;c[&#39;hi&#39;;&#39;hello&#39;;&#39;dag&#39;;&#39;test&#39;;&#39;nn&#39;; 3]&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;any(C; x $ A(x))&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;x Loops over all elements in C, returns true if any of the variables satisfy the condition A, which includes x&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;any(c[&#39;hi&#39;;&#39;hello&#39;;&#39;dag&#39;;&#39;test&#39;;&#39;nn&#39;]; x $ x == &#39;test&#39;)
any(c[&#39;hi&#39;;&#39;hello&#39;;&#39;dag&#39;;&#39;test&#39;;&#39;nn&#39;]; x $ x != &#39;test&#39;)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;true
true&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;all(C; x $ A(x))&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;x loops over all elements in C, returns true if all elements of C satisfy the condition A, which includes x&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;all(c[&#39;hi&#39;;&#39;hello&#39;;&#39;dag&#39;;&#39;test&#39;;&#39;nn&#39;]; x $ IsString(x))
all(c[&#39;hi&#39;;&#39;hello&#39;;&#39;dag&#39;;&#39;test&#39;;&#39;nn&#39;]; x $ x == &#39;thisisnotonthelist&#39;)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;true
false&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&#34;datetime-methods&#34;&gt;Datetime methods&lt;/h2&gt;
&lt;table class=&#34;relative-table wrapped confluenceTable&#34; style=&#34;width: 2034.44px;&#34;&gt;&lt;colgroup&gt;&lt;col style=&#34;width: 0.0px;&#34;&gt;&lt;col style=&#34;width: 0.0px;&#34;&gt;&lt;col style=&#34;width: 0.0px;&#34;&gt;&lt;col style=&#34;width: 0.0px;&#34;&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Syntax&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Explanation&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Example Script&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Example Output&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;confluenceTd&#34;&gt;DateTime(S)&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;p&gt;Generates a datetime object. The specific date and time are specified by the string S. S can have multiple formats:&lt;/p&gt;&lt;ul style=&#34;list-style-type: square;&#34;&gt;&lt;li&gt;dd-MM-yyyy&lt;/li&gt;&lt;li&gt;dd/MM/yyyy&lt;/li&gt;&lt;li&gt;yyyy-MM-ddTHH:mm:ss&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;DateTime(&#39;01-01-2017&#39;)
DateTime(&#39;2009-06-15T13:45:30&#39;)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;01-01-2017 00:00:00
15-06-2009 13:45:30&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&#34;time-series-methods&#34;&gt;Time series methods&lt;/h2&gt;
&lt;p&gt;The BRE can be used for the retrieval and manipulation of time series from Vertex.&lt;/p&gt;
&lt;table class=&#34;relative-table wrapped confluenceTable&#34; style=&#34;width: 97.7384%;&#34;&gt;&lt;colgroup&gt;&lt;col style=&#34;width: 17.5586%;&#34;&gt;&lt;col style=&#34;width: 31.0351%;&#34;&gt;&lt;col style=&#34;width: 25.9464%;&#34;&gt;&lt;col style=&#34;width: 25.3313%;&#34;&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Syntax&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Explanation&lt;/th&gt;&lt;th colspan=&#34;1&#34; class=&#34;confluenceTh&#34;&gt;Example Script&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Example Output&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;confluenceTd&#34;&gt;tsselector(A; B; C; D; E)&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;p&gt;Selector which refers to a specific time series in Vertex by its time series code (A), data slot reference (B), revision (C), ..., ... . Note that the last three arguments are optional.&lt;/p&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;tsselector(&#39;ME20191101009&#39;; &#39;SalesPortfolio_ME20191101009:P_PFC_VOL_ZERO&#39;)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;confluenceTd&#34;&gt;getts(A; B; C)&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;br&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;getts()&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;h2 id=&#34;other-methods&#34;&gt;Other methods&lt;/h2&gt;
&lt;table class=&#34;relative-table wrapped confluenceTable&#34;&gt;&lt;colgroup&gt;&lt;col style=&#34;width: 421.0px;&#34;&gt;&lt;col style=&#34;width: 531.0px;&#34;&gt;&lt;col style=&#34;width: 409.0px;&#34;&gt;&lt;col style=&#34;width: 461.0px;&#34;&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Syntax&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Explanation&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Example Script&lt;/th&gt;&lt;th class=&#34;confluenceTh&#34;&gt;Example Output&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;format(A; B)&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;Formats input A as specified by the string B. Note that for some cases, the formatting is also influenced by the context, such as a geolocation.&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;Format(DateTime(&#39;02/01/2015&#39;);&#39;dd-MM-yyyy&#39;)
&lt;p&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&#34;1&#34; class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;02-01-2015&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&#34;confluenceTd&#34;&gt;exists(A)&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;Returns true if A is some object that has been defined within the code or has been predefined as a context or global variable or object.&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;exists(ThisVariableWasNotDefined)
exists(0)
exists(null)&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#34;confluenceTd&#34;&gt;&lt;div class=&#34;content-wrapper&#34;&gt;&lt;div class=&#34;code panel pdl&#34; style=&#34;border-width: 1px;&#34;&gt;&lt;div class=&#34;codeContent panelContent pdl&#34;&gt;&lt;pre class=&#34;syntaxhighlighter-pre&#34; data-syntaxhighlighter-params=&#34;brush: java; gutter: false; theme: Confluence&#34; data-theme=&#34;Confluence&#34;&gt;false
true
true&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Technical details</title>
      <link>/docs/modules/vertex-infra-ruleengine/technical_details/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/modules/vertex-infra-ruleengine/technical_details/</guid>
      <description>
        
        
        &lt;p&gt;TODO:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;Reference date time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The business rule engine (BRE) is a component that brings decision making to the user while still having most of the process orchestrated by Vertex.&lt;/p&gt;
&lt;h1 id=&#34;technical-details&#34;&gt;Technical details&lt;/h1&gt;
&lt;p&gt;There are a few technical details that can help in understanding how the BRE works:&lt;/p&gt;
&lt;h2 id=&#34;data-context-members-dsc&#34;&gt;Data context members (DSC)&lt;/h2&gt;
&lt;p&gt;The Rule Context can house many different kind of Data Context Members (DCM). These DCMs contain a type for strongly typed values, the value itself and a reference to how the value was created using a DataSourceDescription (DSD). The types of data context members supported are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;BooleanDataContextMember&lt;/li&gt;
&lt;li&gt;CollectionDataContextMember&lt;/li&gt;
&lt;li&gt;ConsequenceDataContextMember&lt;/li&gt;
&lt;li&gt;CursorDataContextMember&lt;/li&gt;
&lt;li&gt;CustomEnumDataContextMember&lt;/li&gt;
&lt;li&gt;DateTimeDataContextMember&lt;/li&gt;
&lt;li&gt;ErrorDataContextMember&lt;/li&gt;
&lt;li&gt;NumericDataContextMember&lt;/li&gt;
&lt;li&gt;ManualDataContextMember&lt;/li&gt;
&lt;li&gt;ObjectDataContextMember&lt;/li&gt;
&lt;li&gt;StringDataContextMember&lt;/li&gt;
&lt;li&gt;VoidDataContextMember&lt;/li&gt;
&lt;li&gt;PeriodDataContextMember&lt;/li&gt;
&lt;li&gt;TimeSeriesSelectorDataContextMember&lt;/li&gt;
&lt;li&gt;TimeSeriesVectorDataContextMember&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;data-source-description-dsd&#34;&gt;Data Source Description (DSD)&lt;/h3&gt;
&lt;p&gt;The data source description are used to track where a result is created from. If a result is provided by a input context that value will have a trace back to the entity that contains that value. If the value was read from a decision table the data source description will have a reference to the decision table version id. And if the value was created by calculating multiple values together it will be marked as a calculated value and the inputs of that calculation will be added as parents to that new DSD of type calculated. This way we can trace the origin of any value back to its source.&lt;/p&gt;
&lt;h2 id=&#34;lexer-parser-and-finally-an-operation-tree&#34;&gt;Lexer, Parser and finally an operation tree&lt;/h2&gt;
&lt;p&gt;The BRE scripting language is created as a grammar that processed into a operation tree. This operation tree is a stateless set of operations that can mutate the state of an Rules Context provided to the operation tree. Because the tree is stateless it is possible to keep the entire operation tree in memory and use it do high performance calculations on the operation tree without the need to interpret the BRE scripts again.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;/docs/modules/vertex-infra-ruleengine/images/script-operation-breakdown.drawio.png&#34; alt=&#34;Operations breakdown&#34;&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Operation that creates a constant ouput of the decimal &amp;lsquo;23&amp;rsquo;&lt;/li&gt;
&lt;li&gt;Operation that creates a constant output of the decimal &amp;lsquo;2&amp;rsquo;&lt;/li&gt;
&lt;li&gt;A native operand to divide the output of operation 1. by the ouput of operation 2.&lt;/li&gt;
&lt;li&gt;Operation that creates a constant output of the decimal &amp;lsquo;2&amp;rsquo;&lt;/li&gt;
&lt;li&gt;A call to the method operation for the method &amp;lsquo;Round&amp;rsquo;, with as first parameter the output of operation 3. and as second parameter the output of operation 4.&lt;/li&gt;
&lt;li&gt;A native operand that assigns the operation after the &amp;lsquo;=&amp;rsquo; sign to the locals dictionary of the Rules Context locals, with the &amp;lsquo;sumVariable&amp;rsquo; string as the key and the output of operation 5. as the value&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The operations are stateless and they will either provide a intermediate result that is consumed as input for other operations or they can interact with the Rules Context to alter the state of one or more of the channels.&lt;/p&gt;
&lt;h2 id=&#34;operation-round-trip-fidelity-rule&#34;&gt;Operation round-trip fidelity rule&lt;/h2&gt;
&lt;p&gt;An operation tree can be rendered back to a script (&lt;code&gt;Operation.ToString&lt;/code&gt; with &lt;code&gt;FormattingTypes.Script&lt;/code&gt;, exposed as &lt;code&gt;RulesEvaluator.ReformatScript&lt;/code&gt;). This round-trip MUST preserve the meaning of the script exactly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The regenerated script must parse cleanly and evaluate to the same result as the original.&lt;/li&gt;
&lt;li&gt;Every construct, argument and operator must survive the round-trip. A dropped argument (for example a &lt;code&gt;WHILE&lt;/code&gt; iteration bound) is a defect, not a formatting difference.&lt;/li&gt;
&lt;li&gt;Only whitespace and redundant parentheses may differ between the original and the regenerated script.&lt;/li&gt;
&lt;li&gt;Comments are lexer trivia and are not part of the operation tree, so the operation round-trip does not carry them. Any user-facing feature that regenerates a script a user wrote must therefore work from the token stream (which contains the comments) instead of the operation tree.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The rule is enforced per script case in &lt;code&gt;EE.Library.UnitTests\Rules\ScriptCases&lt;/code&gt;: every case records what the round-trip currently produces, the regenerated form must stay parseable, and for cases with a recorded result the regenerated form must evaluate to that same result. Known violations are tracked as an explicit, shrinking list next to those tests and are defects to fix, not accepted behavior.&lt;/p&gt;
&lt;h2 id=&#34;rules-context&#34;&gt;Rules Context&lt;/h2&gt;
&lt;p&gt;The Rules Context will act as the state store for a specific run of the BRE. The Operations Tree that performs the calculation is stateless itself, all it does is change the state of the Rules Context object. The object is devided into 5 channels, each channel consists of a dictionary that can be interacted with the help of the operations.&lt;/p&gt;
&lt;h3 id=&#34;the-local-channel&#34;&gt;The local channel&lt;/h3&gt;
&lt;p&gt;This channel is used for intermediate results that help with scripting over multiple lines. With a simple assign in script &lt;code&gt;parameterName1 = 1&lt;/code&gt; the decimal data context member with a value of &amp;lsquo;1&amp;rsquo; can be entered into the local channel under the key &amp;lsquo;parameterName1&amp;rsquo;. When the script later want to use the &amp;lsquo;parameterName1&amp;rsquo; variable it can simple do so by referencing its variable name. &lt;code&gt;parameterName1 + 1&lt;/code&gt; will retrieve the value of &amp;lsquo;parameterName1&amp;rsquo; from the local channel and make the value availble to the addition operand so it can add 1 to the stored value.
The data that is stored in the locals is only relevant during the run of the BRE script and will not be communicated to the caller of the script, its data will be deleted after the Rules Context is no longer needed.&lt;/p&gt;
&lt;h3 id=&#34;the-output-channel&#34;&gt;The output channel&lt;/h3&gt;
&lt;p&gt;The output channel is comparable to the local channel, except that this channel is used as the explicit output of the script and returned to the caller that started the BRE calculation. To assign data to the output channel the &lt;code&gt;&amp;lt;-&lt;/code&gt; assign command is used instead of the &lt;code&gt;=&lt;/code&gt; that we use for the locals. This means that &lt;code&gt;outputVariable &amp;lt;- 3&lt;/code&gt; will assign the decimal data context member to the output channel under the provided &amp;lsquo;outputVariable&amp;rsquo; name. This means that the output of the script will also contain the &amp;lsquo;outputVariable&amp;rsquo;, with its value 3. Values of the output channel can also be used in script to read back from the output channel, so we can do &lt;code&gt;outputVariable - 2&lt;/code&gt; to calculate a value of 1.&lt;/p&gt;
&lt;h3 id=&#34;the-input-channel&#34;&gt;The input channel&lt;/h3&gt;
&lt;p&gt;The intput channel is provided at the beginning of the script and is provided as a initial value inside de Rules Context. These values can be read from, but they cannot be altered as there is no way to write into the input channel. The input in the input channel is normally provided by the caller of the BRE script run and is tuned to the context in which the BRE script is running. Examples of a input context could be a Pricing Request, a Pricing, a deal or an order.&lt;/p&gt;
&lt;h3 id=&#34;the-sideload-channel&#34;&gt;The sideload channel&lt;/h3&gt;
&lt;p&gt;The sideload channel is a special channel that can override specific assignments to the output channel. The values that are availible in the sideload channel will replace the output of a output assign value to the value of provided by the sideload channel at the moment it is assigning it to the output channel. This is used to feed manually provided values back into the script and to alter intermediate variable as well.
This means that is we prepare the sideload channel with a value of &amp;rsquo;thisValueMightBeOverwritten&amp;rsquo; with a value of 5, the followin script &lt;code&gt;thisValueMightBeOverwritten &amp;lt;- 3&lt;/code&gt; will be intercepted by the sideload channel. This means that the result stored in the output channel will be the sideloaded value of 5, and this also means that if we use the &amp;rsquo;thisValueMightBeOverwritten&amp;rsquo; in a later part of the script it will also be returned as a 5. Ultimately rendering the following script &lt;code&gt;thisValueMightBeOverwritten + 1&lt;/code&gt; to return 6, instead of the 4 that we would have expected would there be no sideload value for &amp;rsquo;thisValueMightBeOverwritten&amp;rsquo;.&lt;/p&gt;
&lt;h2 id=&#34;the-back-channel&#34;&gt;The back channel&lt;/h2&gt;
&lt;p&gt;This channel is used by methods to exchange metadata with each other. Rather then having the user do all the heaving lifting by having to add a lot of metadata to the outputs the back channel can be used to add implicit metadata from one method to the other.
The back channel is divided in a number of sections. The currently active section can be changed by calling a &amp;lsquo;ChangeSection&amp;rsquo; operation, but this method is normally not called by a user in a normal script. This operation is injected by the system when we create a large operation tree from a mix of scripts and system configuration. By changing selections in our generated code we can easily provide metadata to that section. This makes it easy to collect data like decision tables that are used and the current pricing product element that is being calcualated. This enables us to have all the delecate moving pieces out of sight of the user and have the user just focus on the business decisions that need to be implemented.
Besides the flow of metadata the back channel also enables the logging method that can collect all logs without the user having to explicitly collect the logs for the BRE run.&lt;/p&gt;
&lt;h2 id=&#34;diagnostics-tips&#34;&gt;Diagnostics tips&lt;/h2&gt;
&lt;p&gt;There are a few tips that can help when debugging a script issue:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the script provider for decision trees to view the generated script to resolve a decision table&lt;/li&gt;
&lt;li&gt;Use the ToOperationTree method to get a annotated string that shows the operations that are defined by a single linke of script provided to the method&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;method-provider-plugins&#34;&gt;Method Provider plugins&lt;/h2&gt;
&lt;p&gt;TODO&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: </title>
      <link>/docs/modules/vertex-infra-ruleengine/processes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/modules/vertex-infra-ruleengine/processes/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Docs: RuleEngine Domain</title>
      <link>/docs/modules/vertex-infra-ruleengine/dataobjects_ruleengine/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/modules/vertex-infra-ruleengine/dataobjects_ruleengine/</guid>
      <description>
        
        
        &lt;p&gt;This page presents the ERD for each AggregateRoot, grouping related entities into domain boundaries.
Each AggregateRoot enforces business rules, processes commands synchronously, and defines consistency borders within a single transactional scope.
An indicative json schema is created to how the export of a aggregate root will approximitly look like&lt;/p&gt;
&lt;h2 id=&#34;script&#34;&gt;Script&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Aggregate Root:&lt;/strong&gt; Script&lt;/p&gt;
&lt;p&gt;Represents business rule scripts with their versions for automated decision making and processing.&lt;/p&gt;

  


&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;tabs-0&#34; role=&#34;tablist&#34;&gt;
  &lt;li class=&#34;nav-item&#34;&gt;
      &lt;button class=&#34;nav-link active persistLang-mermaid&#34;
          id=&#34;tabs-00-00-tab&#34; data-bs-toggle=&#34;tab&#34; data-bs-target=&#34;#tabs-00-00&#34; role=&#34;tab&#34;
          onclick=&#34;persistLang(&amp;#34;mermaid&amp;#34;);&#34;aria-controls=&#34;tabs-00-00&#34; aria-selected=&#34;true&#34;&gt;
        Diagram
      &lt;/button&gt;
    &lt;/li&gt;&lt;li class=&#34;nav-item&#34;&gt;
      &lt;button class=&#34;nav-link&#34;
          id=&#34;tabs-00-01-tab&#34; data-bs-toggle=&#34;tab&#34; data-bs-target=&#34;#tabs-00-01&#34; role=&#34;tab&#34;
          aria-controls=&#34;tabs-00-01&#34; aria-selected=&#34;false&#34;&gt;
        Mermaid
      &lt;/button&gt;
    &lt;/li&gt;&lt;li class=&#34;nav-item&#34;&gt;
      &lt;button class=&#34;nav-link&#34;
          id=&#34;tabs-00-02-tab&#34; data-bs-toggle=&#34;tab&#34; data-bs-target=&#34;#tabs-00-02&#34; role=&#34;tab&#34;
          aria-controls=&#34;tabs-00-02&#34; aria-selected=&#34;false&#34;&gt;
        Json Schema
      &lt;/button&gt;
    &lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;tab-content&#34; id=&#34;tabs-0-content&#34;&gt;
    
    &lt;div class=&#34;tab-body tab-pane fade show active&#34;
        id=&#34;tabs-00-00&#34; role=&#34;tabpanel&#34; aria-labelled-by=&#34;tabs-00-00-tab&#34; tabindex=&#34;0&#34;&gt;
        &lt;pre class=&#34;mermaid&#34;&gt;erDiagram
    &amp;#34;RuleEngine.ScriptVersions&amp;#34; {
        uniqueidentifier Id PK
        uniqueidentifier ScriptId FK
        bit Draft 
        nvarchar VersionString 
        nvarchar Comment 
        nvarchar ScriptValue 
        uniqueidentifier Tenant 
        datetimeoffset EntityCreatedDateTime 
        datetimeoffset EntityUpdatedDateTime 
        uniqueidentifier EntityCreatedAuthToken 
        uniqueidentifier EntityUpdatedAuthToken 
        bit Concealed 
    }

    &amp;#34;RuleEngine.Scripts&amp;#34; {
        uniqueidentifier Id PK
        nvarchar Name 
        nvarchar Description 
        uniqueidentifier Tenant 
        datetimeoffset EntityCreatedDateTime 
        datetimeoffset EntityUpdatedDateTime 
        uniqueidentifier EntityCreatedAuthToken 
        uniqueidentifier EntityUpdatedAuthToken 
        int ScriptType 
        bit Concealed 
    }

    &amp;#34;RuleEngine.ScriptVersions&amp;#34; }o--|| &amp;#34;RuleEngine.Scripts&amp;#34; : &amp;#34;ScriptId&amp;#34;&lt;/pre&gt;

    &lt;/div&gt;
    &lt;div class=&#34;tab-pane fade&#34;
        id=&#34;tabs-00-01&#34; role=&#34;tabpanel&#34; aria-labelled-by=&#34;tabs-00-01-tab&#34; tabindex=&#34;0&#34;&gt;
        &lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-mermaid&#34; data-lang=&#34;mermaid&#34;&gt;erDiagram
    &amp;#34;RuleEngine.ScriptVersions&amp;#34; {
        uniqueidentifier Id PK
        uniqueidentifier ScriptId FK
        bit Draft 
        nvarchar VersionString 
        nvarchar Comment 
        nvarchar ScriptValue 
        uniqueidentifier Tenant 
        datetimeoffset EntityCreatedDateTime 
        datetimeoffset EntityUpdatedDateTime 
        uniqueidentifier EntityCreatedAuthToken 
        uniqueidentifier EntityUpdatedAuthToken 
        bit Concealed 
    }

    &amp;#34;RuleEngine.Scripts&amp;#34; {
        uniqueidentifier Id PK
        nvarchar Name 
        nvarchar Description 
        uniqueidentifier Tenant 
        datetimeoffset EntityCreatedDateTime 
        datetimeoffset EntityUpdatedDateTime 
        uniqueidentifier EntityCreatedAuthToken 
        uniqueidentifier EntityUpdatedAuthToken 
        int ScriptType 
        bit Concealed 
    }

    &amp;#34;RuleEngine.ScriptVersions&amp;#34; }o--|| &amp;#34;RuleEngine.Scripts&amp;#34; : &amp;#34;ScriptId&amp;#34;&lt;/code&gt;&lt;/pre&gt;
    &lt;/div&gt;
    &lt;div class=&#34;tab-pane fade&#34;
        id=&#34;tabs-00-02&#34; role=&#34;tabpanel&#34; aria-labelled-by=&#34;tabs-00-02-tab&#34; tabindex=&#34;0&#34;&gt;
        &lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;definitions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;RuleEngine.Scripts&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                   &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Concealed&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;boolean&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;bit&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;EntityUpdatedAuthToken&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uniqueidentifier&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                 &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                 &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                 &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uniqueidentifier&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                 &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;ScriptType&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                         &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;integer&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                         &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;int&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                     &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                          &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                          &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;nvarchar&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;EntityCreatedDateTime&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;date-time&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;datetimeoffset&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                   &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                   &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;nvarchar&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                               &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;EntityUpdatedDateTime&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;date-time&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;datetimeoffset&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;EntityCreatedAuthToken&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uniqueidentifier&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                 &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Tenant&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uniqueidentifier&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                 &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                   &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                               &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;RuleEngine.ScriptVersions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                          &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;properties&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;ScriptId&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                              &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                              &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;FK to RuleEngine.Scripts&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                          &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;VersionString&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                   &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                   &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;nvarchar&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                               &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;EntityUpdatedAuthToken&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uniqueidentifier&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Concealed&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                               &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;boolean&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                               &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;bit&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                           &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;EntityCreatedAuthToken&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uniqueidentifier&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;EntityUpdatedDateTime&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                           &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;date-time&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                           &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;datetimeoffset&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                           &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                       &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;ScriptValue&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                 &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                 &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;nvarchar&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                             &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Comment&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;nvarchar&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                         &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Tenant&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uniqueidentifier&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Id&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uuid&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;uniqueidentifier&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;EntityCreatedDateTime&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                           &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;format&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;date-time&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                           &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;datetimeoffset&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                           &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;string&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                                       &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                             &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;Draft&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                           &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;boolean&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                           &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;description&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;bit&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                                       &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                                         &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                          &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                                                      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;title&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;RuleEngine.Script&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;$comment&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Generated from Mermaid ERD with property-level descriptions&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;$schema&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;http://json-schema.org/draft-07/schema#&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;  &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;object&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


      </description>
    </item>
    
  </channel>
</rss>
