| <?xml version="1.0" encoding="UTF-8"?> |
| <org.eclipse.epf.uma:TaskDescription 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" xmlns:rmc="http://www.ibm.com/rmc" |
| rmc:version="7.5.0" xmi:id="-J2_dBqOPRwbukM0MbrxpRg" |
| name="develop_rules,_Y2CxEDzEEdyA6a_I80swHw" guid="-J2_dBqOPRwbukM0MbrxpRg" authors="Jerome Boyer" |
| changeDate="2010-04-01T16:18:05.984-0700" version="7.5.0"> |
| <mainDescription><a id="XE_rule__develop" name="XE_rule__develop"></a> 
 |
| <p>
 |
| Programming using rule approach enforces to know how a rule engine is working. This is not a complex skill, rue author
 |
| needs to understand&nbsp; the concepts of asserting, retracting object into working memory and modifying them. It is
 |
| recommended to read what a <a class="elementLink"
 |
| href="./../../practice.tech.abrd.base/guidances/termdefinitions/rule_engine_A66B71B3.html"
 |
| guid="_QQcSoEXXEdy14e5PT9v3HQ">Rule engine</a>&nbsp;is to get those concepts.
 |
| </p>
 |
| <p>
 |
| Rule development can follow a test driven development approach: the developer can develop the test cases to trigger the
 |
| rule execution and then write the rules. Once done the new rules are extracted with the other rules in the rule set,
 |
| deployed to the unit test environment and the test executes. When designing with interface the unit test uses the
 |
| facade to access the rule engine for&nbsp;the execution.
 |
| </p>
 |
| <p>
 |
| When rules are complex and include a lot of conditions it may make sense to add condition by steps. It may be easy to
 |
| make error by using a wrong boolean operator. When the rue language support navigating into collection the testing may
 |
| include test around the presence and not presence of element in the collection.
 |
| </p>
 |
| <p>
 |
| It is always interesting once the rule is developed to perform rule analysis if the BRMS product has this capability.
 |
| The analysis helps to see if the current rule is in conflict with existing rules.<br />
 |
| </p></mainDescription> |
| <sections xmi:id="_bsPp8ErtEdyEE-k1R6LmOA" name="Develop Business Rules" guid="_bsPp8ErtEdyEE-k1R6LmOA"> |
| <sectionDescription>Using template or not, the rule writer write the rule as described during the rule discovery and analysis.</sectionDescription> |
| </sections> |
| <sections xmi:id="_qfzk4ErtEdyEE-k1R6LmOA" name="Develop Decision Tables" guid="_qfzk4ErtEdyEE-k1R6LmOA"> |
| <sectionDescription>See also <a class="elementLink"
 |
| href="./../../practice.tech.abrd.base/guidances/termdefinitions/decision_table_57A218C1.html"
 |
| guid="_iDLJcBCaEdyJtJ3PbfdVDw">Decision table</a></sectionDescription> |
| </sections> |
| <sections xmi:id="_tdNKIErtEdyEE-k1R6LmOA" name="Develop Decision Tree" guid="_tdNKIErtEdyEE-k1R6LmOA"> |
| <sectionDescription>See <a class="elementLink" href="./../../practice.tech.abrd.base/guidances/termdefinitions/decision_tree_D98E94D4.html"
 |
| guid="_dVXOsEbNEdySHMdInS9eGA">Decision tree</a></sectionDescription> |
| </sections> |
| <sections xmi:id="_zAvrMErtEdyEE-k1R6LmOA" name="Develop Technical Rules" guid="_zAvrMErtEdyEE-k1R6LmOA"> |
| <sectionDescription>Technical rules are not exposed to the business user, but are needed for rule execution efficiency. Part of this categories
 |
| are rules that loop on a collection and assert all the object in the working memory. Technical rules leverage the full
 |
| power of the rule language and the programming language</sectionDescription> |
| </sections> |
| <sections xmi:id="_GvK9oEruEdyEE-k1R6LmOA" name="Develop external helper functions" |
| guid="_GvK9oEruEdyEE-k1R6LmOA"> |
| <sectionDescription>To improve performance, or accessibility or to simplify rule writing, it may make sense to implement some reusable logic
 |
| in&nbsp;helper classes and methods instead of rules. Example of such methods are logger of trace, or sorting policies, or
 |
| delegate the call&nbsp;to more complex reusable services.</sectionDescription> |
| </sections> |
| </org.eclipse.epf.uma:TaskDescription> |