| <?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.5/uma.ecore" |
| xmlns:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="-J09_IJ2SO7r5n_TcsOe6yg" |
| name="new_term_definition,_QQcSoEXXEdy14e5PT9v3HQ" guid="-J09_IJ2SO7r5n_TcsOe6yg" |
| authors="Jerome Boyer" changeDate="2007-08-27T11:37:19.002-0700"> |
| <copyrightStatement href="uma://_NFyDwAjqEdyj5bYZ0eCR5g#_hRkAkAjqEdyj5bYZ0eCR5g"/> |
| <mainDescription><a id="XE_rule_engine" name="XE_rule_engine"></a> 
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0cm">
 |
| Software component used to execute business rule. The rule engine uses two major entities:
 |
| </p>
 |
| <ul>
 |
| <li>
 |
| <div class="MsoNormal" style="MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
 |
| a <a class="elementLink" href="./../../../abrd/guidances/termdefinitions/rule_set_4D4C8DB1.html"
 |
| guid="_DdvcwBCQEdyJtJ3PbfdVDw">Rule Set</a>: The set of rules that are processed by the rule engine, and rule
 |
| execution flow information.
 |
| </div>
 |
| </li>
 |
| <li>
 |
| <div class="MsoNormal" style="MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt">
 |
| an object set: The set of objects to be treated by rules.
 |
| </div>
 |
| </li>
 |
| </ul>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0cm">
 |
| A rule engine is executing a cycle consisting of three action states: <span style="mso-bidi-font-style: italic">match
 |
| rules</span>, <span style="mso-bidi-font-style: italic">select rules</span>, and <span
 |
| style="mso-bidi-font-style: italic">execute rules until there is no more rule to execute.</span>
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0cm">
 |
| 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”.
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0cm">
 |
| 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.
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0cm">
 |
| All objects are examined by all rules. The effects of the execution are to create new data, or to modify existing
 |
| ones.<br />
 |
| <span style="mso-bidi-language: HE">The agenda</span> <a id="6838" name="6838"><span lang="EN"
 |
| style="mso-ansi-language: EN"><span style="mso-spacerun: yes">&nbsp;</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</span></a><span lang="EN" style="mso-ansi-language: EN">.</span> <span style="mso-bidi-language: HE">When all the
 |
| candidate rule are match the engine turns to the agenda for rule execution</span>
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0cm">
 |
| <span style="mso-bidi-language: HE">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,</span> <a id="5021"
 |
| name="5021"><span lang="EN" style="mso-ansi-language: EN">compute which rules should be executed, and identify in which
 |
| order these rules should be fired</span></a><span lang="EN" style="mso-ansi-language: EN">.</span>
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0cm">
 |
| <span style="mso-bidi-language: HE">Rules engine is <span style="mso-spacerun: yes">&nbsp;</span>designed to be
 |
| complete, and ensure that the effects of one rule execution (or firing) is propagated so that everything that can be
 |
| inferred<span style="mso-spacerun: yes">&nbsp;</span> is done in one run.</span>
 |
| </p><span
 |
| style="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">The
 |
| power of rule engines comes from the fact that complex behaviors result from simple rules, this is known as rule chaining.
 |
| There is a change in the programming mode for the developer point of view. There is no more static control structure of the
 |
| program where function is calling one another, rules are “communicating” with other rule only by way of the data. This is a
 |
| data change that trigger potential rule execution. Rule are not executed s</span> <span
 |
| style="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">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.</span></mainDescription> |
| </org.eclipse.epf.uma:ContentDescription> |