blob: fa28fdc0f095520a10d58df27194a5f156fe2934 [file] [log] [blame]
<?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" xmi:id="-RIbruSRPcrAZIMhywydlAw"
name="determine_rule_implementation,_NL7WwB6EEdu_zM9rU7U4dw" guid="-RIbruSRPcrAZIMhywydlAw"
authors="Jerome Boyer" changeDate="2008-02-01T11:20:57.625-0800" version="1.0.0">
<mainDescription>&lt;a id=&quot;XE_rule__determine_implementation&quot; name=&quot;XE_rule__determine_implementation&quot;>&lt;/a> &#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
Project teams involved in BRMS deployment are often asking the following type of questions:&#xD;
&lt;/p>&#xD;
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l4 level1 lfo5; tab-stops: list 36.0pt&quot;>&#xD;
When should I use BRMS versus a&amp;nbsp;BPM?&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l4 level1 lfo5; tab-stops: list 36.0pt&quot;>&#xD;
How do I decide what decisions should I put into a BRE?&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l4 level1 lfo5; tab-stops: list 36.0pt&quot;>&#xD;
When should I use BRMS versus code?&amp;nbsp;&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
There are definitively multiple variables which could influence the decision on where to implement rules. We can start&#xD;
by looking at the BRMS value propositions, it should help to get a first set of variables:&#xD;
&lt;/p>&#xD;
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt&quot;>&#xD;
Adaptability – Measure the ability to change the business logic easily. The motivation can be due to short deadline&#xD;
constraint, or frequent small changes or important change that may occur every month or quarter.&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt&quot;>&#xD;
Transparency – Represents the need to clearly implement the business logic as what was agreed upon the business&#xD;
unit and the IT team, in a way that every parties understand the logic. This is leading to express the logic in&#xD;
natural or close to natural language.&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt&quot;>&#xD;
Auditability – Represents the ability to trace from the business motivation to the execution of the policy to&#xD;
better understand what was the logic behind a decision.&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt&quot;>&#xD;
Reusability – Need to share business logic across processes or applications and stay . consistent across&#xD;
applications/transactions&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt&quot;>&#xD;
Manageability- This variable addresses the life cycle management of the business logic. Who writes what, and when,&#xD;
and all the questions related to maintenance and evolutions of the rule-based service.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
The purpose here is not to say it is not possible to support those variables in standard software development&#xD;
practices, but more to find some good patterns on how to decide on where to implement the business logic.&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
When looking at a business rules statement software engineer can see different possible choices of implementation like:&#xD;
&lt;/p>&#xD;
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo7; tab-stops: list 36.0pt&quot;>&#xD;
Data model: designing an object oriented object model involves supporting a lot of business rules. A statement like&#xD;
a mortgage application can have a primary and a secondary borrower, will be supported by two classes and a 1 to 2&#xD;
relationship. At the instantiation of those classes the control of the cardinality can be done in the application&#xD;
logic, or the database, or the GUI structure.&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo7; tab-stops: list 36.0pt&quot;>&#xD;
Application code: implementing the logic in function, procedural code or methods in service layer or business&#xD;
objects.&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo7; tab-stops: list 36.0pt&quot;>&#xD;
BPM process flow, tasks or links: BPM tools are addressing business process efficiency issue specifically on &quot;who&#xD;
is involved&quot;, &quot;when they should be involved&quot;. &quot;what they need to do&quot;. BPM supports manual human and automated&#xD;
actors. At a glance the business logic to implement in BPM is linked to people, task, and data to process within a&#xD;
task. When supporting purely automated tasks BPM is orchestrating the application logic and services (BPEL engine).&#xD;
BRMS complements BPM by adding the why to a BPM task, why it behaves a certain way, why this decision is done.&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo7; tab-stops: list 36.0pt&quot;>&#xD;
Rule engine: &lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>using predefined structure like if then else statement or&#xD;
decision table, rule flow, decision tree, function, rule template or other high level language...&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo7; tab-stops: list 36.0pt&quot;>&#xD;
Graphical user interface: &lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>using scripting language or server side code&#xD;
in controller class it is possible to implement data validation type of business rules.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
In the following paragraphs address each of different choices with their impact on the variables&#xD;
&lt;/p>&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;a>&lt;font color=&quot;#0066B2&quot;>&lt;em>&lt;font size=&quot;3&quot;>Rule in Data Model&lt;/font>&lt;/em>&lt;/font>&lt;/a>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>Rule which is controlling the structure of the model and the reference integrity&#xD;
should be in the physical data model, the O/R mapping layer or on the domain object model.&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0cm 0cm 0pt; mso-list: l6 level1 lfo2; tab-stops: list 36.0pt&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Rule setting constraint on relationship -&#xD;
&lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>like a loan application could only have two borrowers&lt;/span>&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0cm 0cm 0pt; mso-list: l6 level1 lfo2; tab-stops: list 36.0pt&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Rule on the structure of the business&#xD;
entities - like this attribute is part of this object&lt;/span>&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0cm 0cm 0pt; mso-list: l6 level1 lfo2; tab-stops: list 36.0pt&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>The following facts are based on a simple&#xD;
user authentication problem, are well implemented in an object model and the supporting application code which&#xD;
create the instance from the data (O/R mapping layer or DAO or service layer):&lt;/span>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p class=&quot;MsoNormal&quot;&#xD;
style=&quot;MARGIN: 3pt 0cm 3pt 54pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo3; tab-stops: list 54.0pt&quot;>&#xD;
&lt;span&#xD;
style=&quot;FONT-FAMILY: Symbol; mso-bidi-language: HE; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol&quot;>&lt;span&#xD;
style=&quot;mso-list: Ignore&quot;>·&lt;span&#xD;
style=&quot;FONT: 7pt 'Times New Roman'&quot;>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/span> &lt;span&#xD;
style=&quot;mso-bidi-language: HE&quot;>A Company has a list of users who can login to the application&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot;&#xD;
style=&quot;MARGIN: 3pt 0cm 3pt 54pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo3; tab-stops: list 54.0pt&quot;>&#xD;
&lt;span&#xD;
style=&quot;FONT-FAMILY: Symbol; mso-bidi-language: HE; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol&quot;>&lt;span&#xD;
style=&quot;mso-list: Ignore&quot;>·&lt;span&#xD;
style=&quot;FONT: 7pt 'Times New Roman'&quot;>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/span> &lt;span&#xD;
style=&quot;mso-bidi-language: HE&quot;>A Company has a list of groups of user&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot;&#xD;
style=&quot;MARGIN: 3pt 0cm 3pt 54pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo3; tab-stops: list 54.0pt&quot;>&#xD;
&lt;span&#xD;
style=&quot;FONT-FAMILY: Symbol; mso-bidi-language: HE; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol&quot;>&lt;span&#xD;
style=&quot;mso-list: Ignore&quot;>·&lt;span&#xD;
style=&quot;FONT: 7pt 'Times New Roman'&quot;>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/span> &lt;span&#xD;
style=&quot;mso-bidi-language: HE&quot;>A User is part of a group&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot;&#xD;
style=&quot;MARGIN: 3pt 0cm 3pt 54pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo3; tab-stops: list 54.0pt&quot;>&#xD;
&lt;span&#xD;
style=&quot;FONT-FAMILY: Symbol; mso-bidi-language: HE; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol&quot;>&lt;span&#xD;
style=&quot;mso-list: Ignore&quot;>·&lt;span&#xD;
style=&quot;FONT: 7pt 'Times New Roman'&quot;>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/span> &lt;span&#xD;
style=&quot;mso-bidi-language: HE&quot;>A group includes a list of Users&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot;&#xD;
style=&quot;MARGIN: 3pt 0cm 3pt 54pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo3; tab-stops: list 54.0pt&quot;>&#xD;
&lt;span&#xD;
style=&quot;FONT-FAMILY: Symbol; mso-bidi-language: HE; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol&quot;>&lt;span&#xD;
style=&quot;mso-list: Ignore&quot;>·&lt;span&#xD;
style=&quot;FONT: 7pt 'Times New Roman'&quot;>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span>&lt;/span>&lt;/span> &lt;span&#xD;
style=&quot;mso-bidi-language: HE&quot;>A group has one user reference who is the creator of the group&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Terms and facts and derived attributes&amp;nbsp;are the primary constituents of data models and are represented in a UML&#xD;
class diagram, and logical data model (entities/relationship model), or a physical data model.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>The following table lists the impact of this implementation on the previously&#xD;
defined variables&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;div align=&quot;center&quot;>&#xD;
&lt;table class=&quot;ISISTable&quot;&#xD;
style=&quot;BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-alt: solid silver 1.0pt; mso-yfti-tbllook: 480; mso-border-insideh: 1.0pt solid silver; mso-border-insidev: 1.0pt solid silver&quot;&#xD;
cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;1&quot;>&#xD;
&lt;thead>&#xD;
&lt;tr style=&quot;mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: gray 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0cm; BORDER-LEFT: gray 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>&#xD;
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span&#xD;
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Variables&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: gray 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 221.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; mso-border-left-alt: solid gray 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;295&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>&#xD;
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span&#xD;
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Evaluation&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;/thead>&#xD;
&lt;tbody>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 0&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Adaptability&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 221.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;295&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Very static implementation. A change in the constraints of the object model&#xD;
impact, data persistence, logical data model, service and presentation layers. Change is managed on&#xD;
a monthly or yearly basis&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 1&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Transparency&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 221.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;295&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Data model represented as UML classes diagram is doing a poor job to&#xD;
communicate to business. Entities diagram represents a more high level representation of the domain&#xD;
model, but forces the team to maintain the link between the implementation and the business&#xD;
representation.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 2&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Auditability&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 221.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;295&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Configuration management tool, with a strict development process and&#xD;
disciplines can help to trace back to the business motivation.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 3&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Reusability&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 221.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;295&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Domain Object model can be designed as reusable. But in the reality each&#xD;
application needs a view of the core business object model, and so part of the implemented&#xD;
application will be to build those view.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 4; mso-yfti-lastrow: yes&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Manageability&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 221.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;295&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Configuration management tools and strict discipline can help maintain the&#xD;
business logic.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;/tbody>&#xD;
&lt;/table>&#xD;
&lt;/div>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;a>&lt;font color=&quot;#0066B2&quot;>&lt;em>&lt;font size=&quot;3&quot;>Rule in application code&lt;/font>&lt;/em>&lt;/font>&lt;/a>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Implementing business rule in application code is&#xD;
currently the most common way the IT developer is doing it. The major justifications are performance and flexibility of&#xD;
the coding language. Using hardcode if/then/else statements isn't too flexible, but in the hands of a top notch&#xD;
programmer it can be very fast and arguably as fast as or faster than a rule engine. Assuming the programmer has&#xD;
unlimited time to optimize the execution for a fixed set of rules. If the ruleset changes frequently and the system&#xD;
can't tolerate a big drop in performance, than a rule engine is the solution.&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>The following example of business rules may be&#xD;
easily implemented in code:&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span class=&quot;ISISCodeParagraphChar&quot;>&lt;font face=&quot;Courier&quot;>verify in each items the customer bought since he is customer&#xD;
with us there is at least one article of type T so that we can propose the new product Y with X % of discount, except&#xD;
if the customer is from the state of New York or New Jersey&lt;/font>&lt;/span>&lt;span&#xD;
style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>.&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>We can implement this in a method which loops on&#xD;
the articles bought by a given customer and do the search. At a first analysis, navigating in a collection of objects&#xD;
and testing multiples conditions on them is easy to implement using the power of programming language.&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>One thing interesting will be the hard coding of&#xD;
the value of New York, New Jersey… If this logic change we need to add if statements in the code.&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Other type of rules are related to the control of&#xD;
the execution of a set of “services” to support specific use case. Dispatching, orchestration, data manipulation, … are&#xD;
better candidate to be implemented in application code. Those rules are more static, often more complex, and&#xD;
definitively linked to context of execution. The context may be too complex to expose to a rule engine.&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Orchestration are now very well supported by&#xD;
BPM-BPEL engine because the developer needs to add flexibility on the service selection and invocation.&lt;span&#xD;
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>The evaluation of the important variables&#xD;
is:&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;div align=&quot;center&quot;>&#xD;
&lt;table class=&quot;ISISTable&quot;&#xD;
style=&quot;BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-alt: solid silver 1.0pt; mso-yfti-tbllook: 480; mso-border-insideh: 1.0pt solid silver; mso-border-insidev: 1.0pt solid silver&quot;&#xD;
cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;1&quot;>&#xD;
&lt;thead>&#xD;
&lt;tr style=&quot;mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: gray 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0cm; BORDER-LEFT: gray 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>&#xD;
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span&#xD;
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Variables&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: gray 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 334.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; mso-border-left-alt: solid gray 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;446&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>&#xD;
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span&#xD;
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Evaluation&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;/thead>&#xD;
&lt;tbody>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 0&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Adaptability&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 334.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;446&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>the necessity to change code when a business rule changes is still&#xD;
unpleasant: software build are more efficient and costless than before but deployment may be&#xD;
expensive depending of the complexity of the production environment. &lt;span&#xD;
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Changing code under time pressure usually leads to poor&#xD;
quality&lt;/font>&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />&#xD;
&lt;br />&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 1&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Transparency&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 334.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;446&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Poor. The logic as defined by the business is split in multiple parts of the&#xD;
code, methods and procedures.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 2&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Auditability&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 334.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;446&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Poor. Only strict use of configuration management tools with a strict&#xD;
development process may help.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 3&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Reusability&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 334.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;446&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>If the logic is implemented in a service layer with defined interface it may&#xD;
be possible to reuse part of the methods.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 4; mso-yfti-lastrow: yes&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Manageability&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 334.25pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;446&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Developer is&#xD;
responsible to implement the change, and use configuration management tools and strict development&#xD;
disciplines.&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;/tbody>&#xD;
&lt;/table>&#xD;
&lt;/div>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;a>&lt;font color=&quot;#0066B2&quot;>&lt;em>&lt;font size=&quot;3&quot;>Rule in process map&lt;/font>&lt;/em>&lt;/font>&lt;/a>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
B&lt;span style=&quot;mso-bidi-language: HE&quot;>usiness process automation is the technology components substituting and/or&#xD;
supplementing manual processes to manage information flow within an organization to lower costs, reduce risk, and&#xD;
increase consistency. In this context Business rules describe the structure, operation, and strategy of an&#xD;
organization's business process. The business process definition can be seen as a business rule. Typically a rule&#xD;
involving routing of transactional data to a queue, a task, or a sub process will be most likely implemented in a&#xD;
process map. Defined at the link level business rules are linked to the structure of the process flow. Once designed&#xD;
and implemented there is few chance those rule will change. Changing a business process is most of the time risky: we&#xD;
do not want to change thing working and involving a lot of parties and stakeholders. In fact&lt;/span> new policies,&#xD;
regulations or business strategies may affect the rules without changing the core business processes.&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>A rule like: “&lt;i style=&quot;mso-bidi-font-style: normal&quot;>if there is an exception in&#xD;
the claim processing we want a supervisor to study the claim and the accumulated reasons extracted by the process so&#xD;
far”&lt;/i> will most likely finish as guard on a process map link:&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;img height=&quot;348&quot; alt=&quot;&quot; src=&quot;./resources/BRinBPM.bmp&quot; width=&quot;313&quot; />&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
Task 1 will most of the time call a rule engine to take decision on the claim. One of the pattern is to accumulate all&#xD;
the possible reasons in a list. If the list include an exception or high priority reason, the process map will route to&#xD;
the “Process Exception” task. This task can queue the work item to a supervisor queues.&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>There are a lot tasks in a business process that are decision rich, so with a lot&#xD;
of business rule to execute before completing the task. Those rules can be executed by a rule engine. The integration&#xD;
Rule Engine – BPM will bring the value to support those cases. But as good practice it is always possible to try to&#xD;
re-arrange an activity diagram of a use case or a process map so that some activities are purely automatically executed&#xD;
in a rule engine mapped as a rule flow.&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>The variables evaluation:&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;div align=&quot;center&quot;>&#xD;
&lt;table class=&quot;ISISTable&quot;&#xD;
style=&quot;BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-alt: solid silver 1.0pt; mso-yfti-tbllook: 480; mso-border-insideh: 1.0pt solid silver; mso-border-insidev: 1.0pt solid silver&quot;&#xD;
cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;1&quot;>&#xD;
&lt;thead>&#xD;
&lt;tr style=&quot;mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: gray 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0cm; BORDER-LEFT: gray 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>&#xD;
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span&#xD;
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Variables&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: gray 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; mso-border-left-alt: solid gray 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>&#xD;
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span&#xD;
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Evaluation&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;/thead>&#xD;
&lt;tbody>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 0&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Adaptability&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Business rules hardly coded in using BPM notation is not efficient and lead&#xD;
to complex map. The real design implementation is to mix BPM map and business rules-decision&#xD;
delegated in a process task. In this type of implementation we can leverage the best of both&#xD;
worlds, and the adaptability is excellent.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 1&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Transparency&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Excellent: when the integration of BPMS and BRMS is done perfectly, the&#xD;
business and IT team have a clear understanding of the process execution and the decision done by a&#xD;
task by studying the rules attached to the task.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 2&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Auditability&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Excellent: both tools has version control, and it is possible to link&#xD;
process map version to rule set version.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 3&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Reusability&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Rules defined in a task should be expose to the other application as a&#xD;
service. So reusability can be achieved. Rules in a BPM map are not really reusable.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 4; mso-yfti-lastrow: yes&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Manageability&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Process logic will&#xD;
have a more stable life cycle, and it is managed in the BPMS. &lt;span&#xD;
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;/tbody>&#xD;
&lt;/table>&#xD;
&lt;/div>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;a>&lt;font color=&quot;#0066B2&quot;>&lt;em>&lt;font size=&quot;3&quot;>Rule in a rule engine&lt;/font>&lt;/em>&lt;/font>&lt;/a>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>Any type of rule using a forward chaining approach will best fit in any RETE rule&#xD;
engine. To avoid long explanation a rule engine will perform very efficiently the following rules which are more&#xD;
complex to implement in code:&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l2 level1 lfo4; tab-stops: list 36.0pt&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>Set parameter = A / (B ^ 2)&lt;/span>&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l2 level1 lfo4; tab-stops: list 36.0pt&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>If parameter is above 30 then the risk is&lt;span&#xD;
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span> medium&lt;/span>&#xD;
&lt;/li>&#xD;
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l2 level1 lfo4; tab-stops: list 36.0pt&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>If the risk is medium then alert the manager&lt;/span>&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>&lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>If we enter a new value for A all the&#xD;
depend rules will be fired. Rules can be entered in any order we want, it is less declarative than procedural&#xD;
code.&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>Backward chaining rule pattern can also been supported by a rule engine. The rule&#xD;
system works down the tree to find the data that it requires. It will ask question to be able to infer decisions. It is&#xD;
possible to implement backward chaining with product using pure inference by&amp;nbsp;using a goal object.&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>As we already stated one of the key factor is flexibility. We already encounter the&#xD;
following decision: “This rule will not change”… but in fact it will do in the future or some of related one” .&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>We can for example take a simple example of a static rule defined as&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 1.9pt 0cm 0pt 18pt; TEXT-ALIGN: justify&quot;>&#xD;
&lt;span class=&quot;ISISCodeParagraphChar&quot;>&lt;font face=&quot;Courier&quot;>If the status of the customer is gold and the product is&#xD;
&amp;lt;&amp;gt; then apply &amp;lt;&amp;gt; % discount&lt;/font>&lt;/span>&lt;span style=&quot;mso-bidi-language: HE&quot;>.&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>This rule can be implemented within application code using some tables in a&#xD;
database that link the product, the category of possible status and the discount to apply. But when discussing with the&#xD;
business user to understand what is a gold customer? We can get other conditions that definitively will change over&#xD;
time: “A customer who spend more than &amp;lt;&amp;gt; the amount of money… during the last 6 months …No !&lt;span&#xD;
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span> during the last four month only for the product X because it was only available&#xD;
for 4 months!, … Ok but customer in the states {,,,,} could not be part of the gold status… Ah I forgot, … A customer&#xD;
must have 18 years old, and by the way customer working for our company or subsidiaries could not be part of the&#xD;
gold…&lt;/span>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;span style=&quot;mso-bidi-language: HE&quot;>The variables evaluation:&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;div align=&quot;center&quot;>&#xD;
&lt;table class=&quot;ISISTable&quot;&#xD;
style=&quot;BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-alt: solid silver 1.0pt; mso-yfti-tbllook: 480; mso-border-insideh: 1.0pt solid silver; mso-border-insidev: 1.0pt solid silver&quot;&#xD;
cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;1&quot;>&#xD;
&lt;thead>&#xD;
&lt;tr style=&quot;mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: gray 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0cm; BORDER-LEFT: gray 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>&#xD;
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span&#xD;
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Variables&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: gray 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: gray 1pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; mso-border-left-alt: solid gray 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>&#xD;
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span&#xD;
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Evaluation&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;/thead>&#xD;
&lt;tbody>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 0&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Adaptability&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Excellent, rule can change quickly and be deployed quickly too&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 1&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Transparency&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Excellent: by adding meta data to implemented rule we can clearly link rule&#xD;
to business strategies and policies&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 2&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Auditability&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Excellent and most of the rule engine has log mechanism to trace what were&#xD;
the rules executed on a given transaction.&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Rule reports are important to the business as part of&#xD;
documentation&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 3&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Reusability&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Very good if the BRMS use rule repository and the rule analyst designed a&#xD;
rule sharing approach&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr style=&quot;mso-yfti-irow: 4; mso-yfti-lastrow: yes&quot;>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: silver 1pt solid; WIDTH: 4cm; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;151&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font&#xD;
face=&quot;Times New Roman&quot;>Manageability&lt;/font>&lt;/span>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;td&#xD;
style=&quot;BORDER-RIGHT: silver 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ece9d8; WIDTH: 344.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-left-alt: solid silver 1.0pt; mso-border-top-alt: solid silver 1.0pt&quot;&#xD;
valign=&quot;top&quot; width=&quot;460&quot;>&#xD;
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>&#xD;
&lt;font face=&quot;Times New Roman&quot;>&lt;span&#xD;
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Excellent as rules&#xD;
are externalized and managed as a standalone artifact. Rule configuration management is complex,&#xD;
and integrity between rule life cycle and rule set versioning is not a simple&#xD;
practice.&lt;/span>&lt;/font>&#xD;
&lt;/p>&#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;/tbody>&#xD;
&lt;/table>&#xD;
&lt;/div>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
&lt;a>&lt;font color=&quot;#0066B2&quot;>&lt;em>&lt;font size=&quot;3&quot;>Rule in a graphical user interface&lt;/font>&lt;/em>&lt;/font>&lt;/a>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
We will base the integration on the Model-View-Controller (MVC) design pattern. The presentation tier handles the&#xD;
client interaction by abstracting the low-level protocol details into an event-based mechanism. The view's main&#xD;
requirement is synchronization with the model so that data displayed to the user is up to date. The controller is&#xD;
responsible to prepare the data and manage the view flow and content. Delegating the creation of content to a rule&#xD;
engine is possible but need to be done synchronously.&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
The business rule will be related develop to control the list of widget the GUI will present. A typical pattern is&#xD;
around product catalogue application or dynamic questionnaire.&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
The rule pattern to control the content looks like:&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm 3pt 36pt&quot;>&#xD;
&lt;i style=&quot;mso-bidi-font-style: normal&quot;>If the selection on this page was &amp;lt;&amp;gt; then add this &amp;lt;&amp;gt; to the model&#xD;
used in view &amp;lt;&amp;gt;&lt;/i>&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
A rule to control the flow of page looks like&#xD;
&lt;/p>&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm 3pt 36pt&quot;>&#xD;
&lt;i style=&quot;mso-bidi-font-style: normal&quot;>If the user visited page &amp;lt;&amp;gt; (and | or page &amp;lt;&amp;gt;) then next page is&#xD;
&amp;lt;&amp;gt;&lt;/i>&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
Both rules may be enriched with business type decision based on data of the model.&#xD;
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />&#xD;
&lt;br />&#xD;
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>&#xD;
In these pattern it is clear we need to keep the previous context of decision, and events the user created.&lt;span&#xD;
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span> So most of the current applications are putting the business rule in the&#xD;
controller class or in the java script of the view, but it is possible to design the controller to use a rule engine,&#xD;
as soon as the decision needs to change. This is particularly true for e-commerce web site, where marketing campaign&#xD;
can quickly be put in place by proposing product or product feature more dynamically.&lt;span&#xD;
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>&#xD;
&lt;/p>&lt;br /></mainDescription>
</org.eclipse.epf.uma:TaskDescription>