<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.6/uma.ecore" xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.1" xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.1" xmi:id="-J09_IJ2SO7r5n_TcsOe6yg" name="new_term_definition,_QQcSoEXXEdy14e5PT9v3HQ" guid="-J09_IJ2SO7r5n_TcsOe6yg" authors="Jerome Boyer" changeDate="2008-09-03T04:01:56.000-0700" version="7.5.0">
  <mainDescription>&lt;a id=&quot;XE_rule_engine&quot; name=&quot;XE_rule_engine&quot;>&lt;/a> 
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
    Software component used to execute business rule. The rule engine uses two major entities:
&lt;/p>
&lt;ul>
    &lt;li>
        &lt;div class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt&quot;>
            a &lt;a class=&quot;elementLink&quot;
            href=&quot;./../../../practice.tech.abrd.base/guidances/termdefinitions/rule_set_4D4C8DB1.html&quot;
            guid=&quot;_DdvcwBCQEdyJtJ3PbfdVDw&quot;>Rule Set&lt;/a>: The set of rules that are processed by the rule engine, and rule
            execution flow information.
        &lt;/div>
    &lt;/li>
    &lt;li>
        &lt;div class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt&quot;>
            an object set: The set of objects to be treated by rules.
        &lt;/div>
    &lt;/li>
&lt;/ul>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
    A rule engine is executing a cycle consisting of three action states: &lt;span style=&quot;mso-bidi-font-style: italic&quot;>match
    rules&lt;/span>, &lt;span style=&quot;mso-bidi-font-style: italic&quot;>select rules&lt;/span>, and &lt;span
    style=&quot;mso-bidi-font-style: italic&quot;>execute rules until there is no more rule to execute.&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
    The rule engine evaluates the conditions of rules in the ruleset against the objects to determine (match) which rules
    are eligible to be executed. During execution, the engine collects all eligible rules in an “agenda”.
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
    The object set is referenced in the engine's working memory, which also contains the current state of the objects which
    lead to the current rules in the agenda.
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
    All objects are examined by all rules. The effects of the execution are to create new data, or to modify existing
    ones.&lt;br />
    &lt;span style=&quot;mso-bidi-language: HE&quot;>The agenda&lt;/span> &lt;a id=&quot;6838&quot; name=&quot;6838&quot;>&lt;span lang=&quot;EN&quot;
    style=&quot;mso-ansi-language: EN&quot;>&lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>is a logical workspace where rule instances
    that have conditions matching objects in the working memory are put. There can be several rule instances for the same
    rule&lt;/span>&lt;/a>&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN&quot;>.&lt;/span> &lt;span style=&quot;mso-bidi-language: HE&quot;>When all the
    candidate rule are matched the engine turns to the agenda for rule execution.&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
    &lt;span style=&quot;mso-bidi-language: HE&quot;>One execution mode is the RetePlus algorithm used to match many patterns with many
    objects, it helps to minimize the number of rules and conditions that need to be evaluated,&lt;/span> &lt;a id=&quot;5021&quot;
    name=&quot;5021&quot;>&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN&quot;>computes which rules should be executed, and identifies in
    which order these rules should be fired&lt;/span>&lt;/a>&lt;span lang=&quot;EN&quot; style=&quot;mso-ansi-language: EN&quot;>.&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
    &lt;span style=&quot;mso-bidi-language: HE&quot;>Rules engine is designed to be complete, and ensures that the effects of one rule
    execution (or firing) is propagated so that everything that can be inferred is done in one run.&lt;/span>
&lt;/p>&lt;span
style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-bidi-language: HE; mso-ansi-language: EN-US; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EN-US&quot;>The
power of rule engines comes from the fact that complex behaviors result from simple rules, this is known as rule chaining.
This is a major change in the programming model developer used to have.There is no more static control structure of the
program where function is calling one another, rules are &quot;communicating&quot; with other rule only by way of the data. This is a
data change that trigger potential rule execution. Rules are not executed&lt;/span> &lt;span
style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-bidi-language: AR-SA; mso-ansi-language: EN-US; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: EN-US&quot;>sequentially
and it is not always possible to determine through inspection of a set of rules which rule will be executed first or cause
the inference engine to terminate.&lt;/span></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
