blob: b9ab3b1bd21273d21c56e8c0f2bb9c93dfb7e932 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI 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">
<org.eclipse.epf.uma:ProcessDescription xmi:id="-18b5hLyhHSSG8Wk1_T7fVQ" name="design,_4NT9AX9XEd26h9j0X6pKmw" guid="-18b5hLyhHSSG8Wk1_T7fVQ" version="7.5.1"/>
<org.eclipse.epf.uma:DescriptorDescription xmi:id="-6wO1WkYhqlhcM-5FwEvgmA" name="determine_rule_implementation,_59VJIH9XEd26h9j0X6pKmw" guid="-6wO1WkYhqlhcM-5FwEvgmA">
<refinedDescription>&lt;a id=&quot;XE_rule__determine_implementation&quot; name=&quot;XE_rule__determine_implementation&quot;>&lt;/a>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
Project teams involved in BRMS deployment are often asking the following type of questions:
&lt;/p>
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l4 level1 lfo5; tab-stops: list 36.0pt&quot;>
When should I use BRMS versus a&amp;nbsp;BPM?
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l4 level1 lfo5; tab-stops: list 36.0pt&quot;>
How do I decide what decisions should I put into a BRE?
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l4 level1 lfo5; tab-stops: list 36.0pt&quot;>
When should I use BRMS versus code?&amp;nbsp;
&lt;/li>
&lt;/ul>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
There are definitively multiple variables which could influence the decision on where to implement rules. We can start
by looking at the BRMS value propositions, it should help to get a first set of variables:
&lt;/p>
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt&quot;>
Adaptability – Measure the ability to change the business logic easily. The motivation can be due to short deadline
constraint, or frequent small changes or important change that may occur every month or quarter.
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt&quot;>
Transparency – Represents the need to clearly implement the business logic as what was agreed upon the business
unit and the IT team, in a way that every parties understand the logic. This is leading to express the logic in
natural or close to natural language.
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt&quot;>
Auditability – Represents the ability to trace from the business motivation to the execution of the policy to
better understand what was the logic behind a decision.
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt&quot;>
Reusability – Need to share business logic across processes or applications and stay . consistent across
applications/transactions
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo6; tab-stops: list 36.0pt&quot;>
Manageability- This variable addresses the life cycle management of the business logic. Who writes what, and when,
and all the questions related to maintenance and evolutions of the rule-based service.
&lt;/li>
&lt;/ul>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
The purpose here is not to say it is not possible to support those variables in standard software development
practices, but more to find some good patterns on how to decide on where to implement the business logic.
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
When looking at a business rules statement software engineer can see different possible choices of implementation like:
&lt;/p>
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo7; tab-stops: list 36.0pt&quot;>
Data model: designing an object oriented object model involves supporting a lot of business rules. A statement like
a mortgage application can have a primary and a secondary borrower, will be supported by two classes and a 1 to 2
relationship. At the instantiation of those classes the control of the cardinality can be done in the application
logic, or the database, or the GUI structure.
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo7; tab-stops: list 36.0pt&quot;>
Application code: implementing the logic in function, procedural code or methods in service layer or business
objects.
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo7; tab-stops: list 36.0pt&quot;>
BPM process flow, tasks or links: BPM tools are addressing business process efficiency issue specifically on &quot;who
is involved&quot;, &quot;when they should be involved&quot;. &quot;what they need to do&quot;. BPM supports manual human and automated
actors. At a glance the business logic to implement in BPM is linked to people, task, and data to process within a
task. When supporting purely automated tasks BPM is orchestrating the application logic and services (BPEL engine).
BRMS complements BPM by adding the why to a BPM task, why it behaves a certain way, why this decision is done.
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo7; tab-stops: list 36.0pt&quot;>
Rule engine: &lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>using predefined structure like if then else statement or
decision table, rule flow, decision tree, function, rule template or other high level language...
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo7; tab-stops: list 36.0pt&quot;>
Graphical user interface: &lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>using scripting language or server side code
in controller class it is possible to implement data validation type of business rules.
&lt;/li>
&lt;/ul>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
In the following paragraphs address each of different choices with their impact on the variables
&lt;/p>&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Rule which is controlling the structure of the model and the reference integrity
should be in the physical data model, the O/R mapping layer or on the domain object model.&lt;/span>
&lt;/p>
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0cm 0cm 0pt; mso-list: l6 level1 lfo2; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Rule setting constraint on relationship -
&lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>like a loan application could only have two borrowers&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0cm 0cm 0pt; mso-list: l6 level1 lfo2; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Rule on the structure of the business
entities - like this attribute is part of this object&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 0cm 0cm 0pt; mso-list: l6 level1 lfo2; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>The following facts are based on a simple
user authentication problem, are well implemented in an object model and the supporting application code which
create the instance from the data (O/R mapping layer or DAO or service layer):&lt;/span>
&lt;/li>
&lt;/ul>
&lt;p class=&quot;MsoNormal&quot;
style=&quot;MARGIN: 3pt 0cm 3pt 54pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo3; tab-stops: list 54.0pt&quot;>
&lt;span
style=&quot;FONT-FAMILY: Symbol; mso-bidi-language: HE; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol&quot;>&lt;span
style=&quot;mso-list: Ignore&quot;>·&lt;span
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
style=&quot;mso-bidi-language: HE&quot;>A Company has a list of users who can login to the application&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot;
style=&quot;MARGIN: 3pt 0cm 3pt 54pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo3; tab-stops: list 54.0pt&quot;>
&lt;span
style=&quot;FONT-FAMILY: Symbol; mso-bidi-language: HE; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol&quot;>&lt;span
style=&quot;mso-list: Ignore&quot;>·&lt;span
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
style=&quot;mso-bidi-language: HE&quot;>A Company has a list of groups of user&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot;
style=&quot;MARGIN: 3pt 0cm 3pt 54pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo3; tab-stops: list 54.0pt&quot;>
&lt;span
style=&quot;FONT-FAMILY: Symbol; mso-bidi-language: HE; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol&quot;>&lt;span
style=&quot;mso-list: Ignore&quot;>·&lt;span
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
style=&quot;mso-bidi-language: HE&quot;>A User is part of a group&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot;
style=&quot;MARGIN: 3pt 0cm 3pt 54pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo3; tab-stops: list 54.0pt&quot;>
&lt;span
style=&quot;FONT-FAMILY: Symbol; mso-bidi-language: HE; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol&quot;>&lt;span
style=&quot;mso-list: Ignore&quot;>·&lt;span
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
style=&quot;mso-bidi-language: HE&quot;>A group includes a list of Users&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot;
style=&quot;MARGIN: 3pt 0cm 3pt 54pt; TEXT-INDENT: -18pt; mso-list: l5 level1 lfo3; tab-stops: list 54.0pt&quot;>
&lt;span
style=&quot;FONT-FAMILY: Symbol; mso-bidi-language: HE; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol&quot;>&lt;span
style=&quot;mso-list: Ignore&quot;>·&lt;span
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
style=&quot;mso-bidi-language: HE&quot;>A group has one user reference who is the creator of the group&lt;/span>
&lt;/p>
&lt;p>
Terms and facts and derived attributes&amp;nbsp;are the primary constituents of data models and are represented in a UML
class diagram, and logical data model (entities/relationship model), or a physical data model.
&lt;/p>
&lt;p>
&lt;span style=&quot;mso-bidi-language: HE&quot;>The following table lists the impact of this implementation on the previously
defined variables&lt;/span>
&lt;/p>
&lt;div align=&quot;center&quot;>
&lt;table class=&quot;ISISTable&quot;
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;
cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;1&quot;>
&lt;thead>
&lt;tr style=&quot;mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font
face=&quot;Times New Roman&quot;>Variables&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;295&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font
face=&quot;Times New Roman&quot;>Evaluation&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr style=&quot;mso-yfti-irow: 0&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Adaptability&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;295&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Very static implementation. A change in the constraints of the object model
impact, data persistence, logical data model, service and presentation layers. Change is managed on
a monthly or yearly basis&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 1&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Transparency&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;295&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Data model represented as UML classes diagram is doing a poor job to
communicate to business. Entities diagram represents a more high level representation of the domain
model, but forces the team to maintain the link between the implementation and the business
representation.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 2&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Auditability&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;295&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Configuration management tool, with a strict development process and
disciplines can help to trace back to the business motivation.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 3&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Reusability&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;295&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Domain Object model can be designed as reusable. But in the reality each
application needs a view of the core business object model, and so part of the implemented
application will be to build those view.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 4; mso-yfti-lastrow: yes&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Manageability&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;295&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Configuration management tools and strict discipline can help maintain the
business logic.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Implementing business rule in application code is
currently the most common way the IT developer is doing it. The major justifications are performance and flexibility of
the coding language. Using hard coded if/then/else statements isn't too flexible, but in the hands of a top notch
programmer it can be very fast and arguably as fast as or faster than a rule engine. Assuming the programmer has
unlimited time to optimize the execution for a fixed set of rules. If the ruleset changes frequently and the system
can't tolerate a big drop in performance, than a rule engine is the solution.&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>The following example of business rules may be
easily implemented in code:&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span class=&quot;ISISCodeParagraphChar&quot;>&lt;font face=&quot;Courier&quot;>verify in each items the customer bought since he is customer
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
if the customer is from the state of New York or New Jersey&lt;/font>&lt;/span>&lt;span
style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>.&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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
the articles bought by a given customer and do the search. At a first analysis, navigating in a collection of objects
and testing multiples conditions on them is easy to implement using the power of programming language.&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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
the value of New York, New Jersey... If this logic change we need to add if statements in the code.&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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
the execution of a set of &quot;services&quot; to support specific use case. Dispatching, orchestration, data manipulation, … are
better candidate to be implemented in application code. Those rules are more static, often more complex, and
definitively linked to context of execution. The context may be too complex to expose to a rule engine.&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Orchestration are now very well supported by
BPM-BPEL engine because the developer needs to add flexibility on the service selection and invocation.&lt;span
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>The evaluation of the important variables
is:&lt;/span>
&lt;/p>
&lt;div align=&quot;center&quot;>
&lt;table class=&quot;ISISTable&quot;
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;
cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;1&quot;>
&lt;thead>
&lt;tr style=&quot;mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font
face=&quot;Times New Roman&quot;>Variables&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;446&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font
face=&quot;Times New Roman&quot;>Evaluation&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr style=&quot;mso-yfti-irow: 0&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Adaptability&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;446&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>the necessity to change code when a business rule changes is still
unpleasant: software build are more efficient and cost less than before but deployment may be
expensive depending of the complexity of the production environment. &lt;span
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>&lt;/font>&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Changing code under time pressure usually leads to poor
quality&lt;/font>&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 1&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Transparency&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;446&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Poor. The logic as defined by the business is split in multiple parts of the
code, methods and procedures.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 2&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Auditability&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;446&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Poor. Only strict use of configuration management tools with a strict
development process may help.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 3&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Reusability&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;446&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>If the logic is implemented in a service layer with defined interface it may
be possible to reuse part of the methods.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 4; mso-yfti-lastrow: yes&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Manageability&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;446&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Developer is
responsible to implement the change, and use configuration management tools and strict development
disciplines.&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Business process automation is the technology components substituting and/or
supplementing manual processes to manage information flow within an organization to lower costs, reduce risk, and
increase consistency. In this context Business rules describe the structure, operation, and strategy of an
organization's business process. The business process definition can be seen as a business rule. Typically a rule
involving routing of transactional data to a queue, a task, or a sub process will be most likely implemented in a
process map. Defined at the link level business rules are linked to the structure of the process flow. Once designed
and implemented there is few chance those rule will change. Changing a business process is most of the time risky: we
do not want to change thing working and involving a lot of parties and stakeholders. In fact&lt;/span> new policies,
regulations or business strategies may affect the rules without changing the core business processes.
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>A rule like: &quot;&lt;i style=&quot;mso-bidi-font-style: normal&quot;>if there is an exception in
the claim processing we want a supervisor to study the claim and the accumulated reasons extracted by the process so
far&quot;&lt;/i> will most likely finish as guard on a process map link:&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;img height=&quot;348&quot; alt=&quot;&quot; src=&quot;resources/brinbpm.bmp&quot; width=&quot;313&quot; />
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
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
the possible reasons in a list. If the list include an exception or high priority reason, the process map will route to
the &quot;Process Exception&quot; task. This task can queue the work item to a supervisor queues.
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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
of business rule to execute before completing the task. Those rules can be executed by a rule engine. The integration
Rule Engine – BPM will bring the value to support those cases. But as good practice it is always possible to try to
re-arrange an activity diagram of a use case or a process map so that some activities are purely automatically executed
in a rule engine mapped as a rule flow.&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>The variables evaluation:&lt;/span>
&lt;/p>
&lt;div align=&quot;center&quot;>
&lt;table class=&quot;ISISTable&quot;
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;
cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;1&quot;>
&lt;thead>
&lt;tr style=&quot;mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font
face=&quot;Times New Roman&quot;>Variables&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font
face=&quot;Times New Roman&quot;>Evaluation&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr style=&quot;mso-yfti-irow: 0&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Adaptability&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Business rules hardly coded in using BPM notation is not efficient and lead
to complex map. The real design implementation is to mix BPM map and business rules-decision
delegated in a process task. In this type of implementation we can leverage the best of both
worlds, and the adaptability is excellent.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 1&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Transparency&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Excellent: when the integration of BPMS and BRMS is done perfectly, the
business and IT team have a clear understanding of the process execution and the decision done by a
task by studying the rules attached to the task.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 2&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Auditability&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Excellent: both tools has version control, and it is possible to link
process map version to rule set version.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 3&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Reusability&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Rules defined in a task should be expose to the other application as a
service. So reusability can be achieved. Rules in a BPM map are not really reusable.&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 4; mso-yfti-lastrow: yes&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Manageability&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Process logic will
have a more stable life cycle, and it is managed in the BPMS. &lt;span
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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
engine. To avoid long explanation a rule engine will perform very efficiently the following rules which are more
complex to implement in code:&lt;/span>
&lt;/p>
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l2 level1 lfo4; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Set parameter = A / (B ^ 2)&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l2 level1 lfo4; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>If parameter is above 30 then the risk is&lt;span
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span> medium&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l2 level1 lfo4; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>If the risk is medium then alert the manager&lt;/span>
&lt;/li>
&lt;/ul>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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
depend rules will be fired. Rules can be entered in any order we want, it is less declarative than procedural
code.&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Backward chaining rule pattern can also been supported by a rule engine. The rule
system works down the tree to find the data that it requires. It will ask question to be able to infer decisions. It is
possible to implement backward chaining with product using pure inference by&amp;nbsp;using a goal object.&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>As we already stated one of the key factor is flexibility. We already encounter the
following decision: &quot;This rule will not change&quot;... but in fact it will do in the future or some of related one&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;>We can for example take a simple example of a static rule defined as&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 1.9pt 0cm 0pt 18pt; TEXT-ALIGN: justify&quot;>
&lt;span class=&quot;ISISCodeParagraphChar&quot;>&lt;font face=&quot;Courier&quot;>If the status of the customer is gold and the product is
&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>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>This rule can be implemented within application code using some tables in a
database that link the product, the category of possible status and the discount to apply. But when discussing with the
business user to understand what is a gold customer? We can get other conditions that definitively will change over
time: &quot;A customer who spend more than &amp;lt;&amp;gt; the amount of money... during the last 6 months ...No !&lt;span
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
for 4 months!, … Okay but customer in the states {,,,,} could not be part of the gold status... Ah I forgot, ... A
customer must have 18 years old, and by the way customer working for our company or subsidiaries could not be part of
the gold...&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>The variables evaluation:&lt;/span>
&lt;/p>
&lt;div align=&quot;center&quot;>
&lt;table class=&quot;ISISTable&quot;
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;
cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; border=&quot;1&quot;>
&lt;thead>
&lt;tr style=&quot;mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font
face=&quot;Times New Roman&quot;>Variables&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b style=&quot;mso-bidi-font-weight: normal&quot;>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font size=&quot;3&quot;>&lt;font
face=&quot;Times New Roman&quot;>Evaluation&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr style=&quot;mso-yfti-irow: 0&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Adaptability&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Excellent, rule can change quickly and be deployed quickly too&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 1&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Transparency&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Excellent: by adding meta data to implemented rule we can clearly link rule
to business strategies and policies&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 2&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>Auditability&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Excellent and most of the rule engine has log mechanism to trace what were
the rules executed on a given transaction.&lt;/font>&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Rule reports are important to the business as part of
documentation&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 3&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Reusability&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-language: HE; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Very good if the BRMS use rule repository and the rule analyst designed a
rule sharing approach&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 4; mso-yfti-lastrow: yes&quot;>
&lt;td
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;
valign=&quot;top&quot; width=&quot;151&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;span style=&quot;FONT-SIZE: 8pt; mso-bidi-font-size: 12.0pt&quot;>&lt;font
face=&quot;Times New Roman&quot;>Manageability&lt;/font>&lt;/span>
&lt;/p>
&lt;/td>
&lt;td
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;
valign=&quot;top&quot; width=&quot;460&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot;>
&lt;font face=&quot;Times New Roman&quot;>&lt;span
style=&quot;FONT-SIZE: 8pt; mso-bidi-font-family: Arial; mso-bidi-font-size: 10.0pt&quot;>Excellent as rules
are externalized and managed as a standalone artifact. Rule configuration management is complex,
and integrity between rule life cycle and rule set versioning is not a simple
practice.&lt;/span>&lt;/font>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&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>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
We will base the integration on the Model-View-Controller (MVC) design pattern. The presentation tier handles the
client interaction by abstracting the low-level protocol details into an event-based mechanism. The view's main
requirement is synchronization with the model so that data displayed to the user is up to date. The controller is
responsible to prepare the data and manage the view flow and content. Delegating the creation of content to a rule
engine is possible but need to be done synchronously.
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
The business rule will be related to control the list of widget the GUI will present. A typical pattern is around
product catalog application or dynamic questionnaire. The rule pattern to control the content looks like:
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm 3pt 36pt&quot;>
&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
used in view &amp;lt;&amp;gt;&lt;/i>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
A rule to control the flow of page looks like
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm 3pt 36pt&quot;>
&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
&amp;lt;&amp;gt;&lt;/i>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
Both rules may be enriched with business type decision based on data of the model.
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
In these pattern it is clear we need to keep the previous context of decision, and events the user created.&lt;span
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span> So most of the current applications are putting the business rule in the
controller class or in the java script of the view, but it is possible to design the controller to use a rule engine,
as soon as the decision needs to change. This is particularly true for e-commerce web site, where marketing campaign
can quickly be put in place by proposing product or product feature more dynamically.&lt;span
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>
&lt;/p>&lt;br /></refinedDescription>
</org.eclipse.epf.uma:DescriptorDescription>
<org.eclipse.epf.uma:DescriptorDescription xmi:id="-CuJ8KsGj2Ge8INilrucD1w" name="define_ruleset,_BZaDsH9ZEd26h9j0X6pKmw" guid="-CuJ8KsGj2Ge8INilrucD1w">
<refinedDescription>&lt;a id=&quot;XE_rule_set__define&quot; name=&quot;XE_rule_set__define&quot;>&lt;/a>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>When designing an application using one BRE and a simple rule set this activity
will be done quickly. The rule developer still needs to think about the parameters the exception management, &lt;span
style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>what are the rule part of the rule set, and how they are executed.&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>So for a simple unique rule set the following information needs to be designed and
documented:&lt;/span>
&lt;/p>
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Input, output parameters&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Type of data model&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Rule execution flow using a rule flow. But it is still possible with modern BRE
to use re-entrant rule set, so executing a rule flow from a rule task or rule package.&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Exception management&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Inference objects like a result object which may be used to control the future
execution of the caller application or the BRE.&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>What are the rule part of the rule set&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>What is their execution order. It is recommended to avoid using a ordering
mechanism like the rule priority, but some time at a rule task level it is needed to use sorting mechanism&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>When does a rule is not candidate to enter in a rule set. This is linked to the
rule life cycle.&lt;/span>
&lt;/li>
&lt;/ul></refinedDescription>
</org.eclipse.epf.uma:DescriptorDescription>
<org.eclipse.epf.uma:DescriptorDescription xmi:id="-SUg_Lde8qOSnwbqR7aE35Q" name="build_object_models,_6OKacH9XEd26h9j0X6pKmw" guid="-SUg_Lde8qOSnwbqR7aE35Q">
<refinedDescription>&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Depending of the technology used there is different approach to this task. The
domain object model at the enterprise level will represent a complex data model a rule architect does not want to
expose as-is to the rule engine and the rule authoring environment. Navigating a complex graph of objects will bring
unnecessary complexity for the rule writer. So we recommend to always try to use a view of the enterprise domain object
model. For example in Financial Industry the business domain&amp;nbsp;data model defined in MISMO (&lt;a
href=&quot;http://www.mismo.org/&quot;>&lt;font color=&quot;#005DA0&quot;>www.mismo.org&lt;/font>&lt;/a>), brings a lot of value for an enterprise
willing to define a common ontology for their data models. But exposing the MISMO model as it is within a BRMS rule
authoring IDE will put too much complexity. As the Architect is responsible to design decision service reusable cross
application, it may make sense to consider view of this object model in the context of the service.&lt;/span>
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>For the application the view can be defined in two entities:&lt;/span>
&lt;/p>
&lt;ul style=&quot;MARGIN-TOP: 0in&quot; type=&quot;disc&quot;>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>the Domain Object Model using java or xml schema as the underling
technology&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in; mso-list: l0 level1 lfo1; tab-stops: list .5in&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>or out of the box object view, like ILOG-Business Object Model element. The BOM
is mandatory to write rule on, but it&amp;nbsp;can be created from an existing java model or XSD or created
top-down.&lt;/span>
&lt;/li>
&lt;/ul>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>If the model does not exist in the application, or at the enterprise level we still
recommend to develop the domain model, using an UML designer and code generation tools.&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>
&lt;span style=&quot;mso-bidi-font-weight: bold; mso-bidi-font-style: italic&quot;>It is also important to consider designing a java
model or XSD schema which is closed to the business concepts used by the rule but built as a view of the domain object
model (We called that the Rule Business Object Pattern or RBO): in the example of standard object model like MISMO or
ACORD, it makes sense to do not expose all the class definition, attributes and enumerated to avoid exposing a complex
rule language to the business user. This view will be instantiated by the application business logic in the context of
preparing the data for the rule services&lt;/span>
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>
When designing a Domain Object model one of the challenges is to determine what should be an entity and what should be
an attribute of the entity.&lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span> This is why knowledge engineers like the
Enterprise Ontology as a start point for developing these concepts.&lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span> The
Enterprise Ontology describes the major entities and concepts that apply to all enterprises and it provides a very good
starting point for the establishment of static object models and data models.
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>
The difference between a class and an entity type is that classes have both data and behaviors whereas entity types
just have data. A normal entity depicts one concept.
&lt;/p>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>
Use multiple different UML class diagram to represent entities and their relations. Then enhance them to have a
complete class diagram from which you should be able to generate java code or XSD.
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>
Capture Meta data about each entity: business name, business definition, super type or subtype, number of occurrences,
primary key, and alternate keys.
&lt;/p>&lt;br class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot; />
&lt;br />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>It is possible to consider designing a Domain Model using Interface, and then apply
different type of implementation according to different execution pattern or platforms. For example we can design
a;&lt;/span>
&lt;/p>
&lt;ul style=&quot;MARGIN-TOP: 0in&quot; type=&quot;disc&quot;>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in; mso-list: l1 level1 lfo2; tab-stops: list .5in&quot;>
&lt;a id=&quot;1030902&quot; name=&quot;1030902&quot;>&lt;span style=&quot;mso-bidi-language: HE&quot;>Staged deployment with different execution
classes&lt;/span>&lt;/a>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in; mso-list: l1 level1 lfo2; tab-stops: list .5in&quot;>
&lt;a id=&quot;1030906&quot; name=&quot;1030906&quot;>&lt;span style=&quot;mso-bidi-language: HE&quot;>Dynamic model (XML based or dynamic classes)
versus static model&lt;/span>&lt;/a>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0in; mso-list: l1 level1 lfo2; tab-stops: list .5in&quot;>
&lt;a id=&quot;1030907&quot; name=&quot;1030907&quot;>&lt;span style=&quot;mso-bidi-language: HE&quot;>Production/test models (active objects versus
mock objects)&lt;/span>&lt;/a>
&lt;/li>
&lt;/ul>&lt;a id=&quot;XE_object_model__build&quot; name=&quot;XE_object_model__build&quot;>&lt;/a></refinedDescription>
</org.eclipse.epf.uma:DescriptorDescription>
<org.eclipse.epf.uma:DescriptorDescription xmi:id="-9LXp5OR5EN9FZBKkwS1J8w" name="build_rule_project_structure,_6cKaMH9XEd26h9j0X6pKmw" guid="-9LXp5OR5EN9FZBKkwS1J8w">
<refinedDescription>&lt;a id=&quot;XE_rule_project__build_structure&quot; name=&quot;XE_rule_project__build_structure&quot;>&lt;/a>&lt;br class=&quot;MsoNormal&quot;
style=&quot;MARGIN: 0in 0in 0pt 0.25in; TEXT-INDENT: -0.25in; TEXT-ALIGN: justify; mso-list: l0 level1 lfo1; tab-stops: list .25in&quot; />
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>&lt;span style=&quot;mso-bidi-language: HE&quot;>This activity is linked to the tool used. There
is still some considerations when designing the project structure for the rules and application:&lt;/span>&lt;/span>
&lt;/p>
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Apply good design practice of implementing the application using a n-tier
approach. The service layer includes the interfaces of the rule decision service entries.&lt;/span>&lt;br
class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm 3pt 18pt&quot; />
&lt;br />
&lt;/li>
&lt;/ul>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>&lt;img height=&quot;491&quot; alt=&quot;&quot; src=&quot;resources/projstruct.bmp&quot; width=&quot;515&quot; />&lt;/span>
&lt;/p>
&lt;div style=&quot;MARGIN-TOP: 0cm; MARGIN-LEFT: 2em&quot; type=&quot;disc&quot;>
&lt;ul style=&quot;MARGIN-TOP: 0cm&quot; type=&quot;disc&quot;>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>&lt;span style=&quot;mso-bidi-language: HE&quot;>Organize rule project so that a few
person can concurrently work on&amp;nbsp;rule artifact at the same time.&lt;/span>&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo1; tab-stops: list 36.0pt&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>Organize rule project so that they are manageable in term of performance at
the execution and at the rule authoring level.&lt;/span>
&lt;/li>
&lt;li class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm; mso-list: l1 level1 lfo1; tab-stops: list 36.0pt&quot;>
Separate representation of the domain object model in java project.
&lt;/li>
&lt;/ul>
&lt;/div></refinedDescription>
</org.eclipse.epf.uma:DescriptorDescription>
<org.eclipse.epf.uma:DescriptorDescription xmi:id="-nwZcYuKm35TyaeUzE1tIug" name="prototype_rules,_6qw24H9XEd26h9j0X6pKmw" guid="-nwZcYuKm35TyaeUzE1tIug">
<refinedDescription>&lt;a id=&quot;XE_rule__prototyping&quot; name=&quot;XE_rule__prototyping&quot;>&lt;/a>
&lt;p class=&quot;MsoNormal&quot; style=&quot;MARGIN: 3pt 0cm&quot;>
&lt;span style=&quot;mso-bidi-language: HE&quot;>The goal of the Rule Analysis activity is to prepare the rules for the
implementation. The rule analyst and the rule writer will analyze the rules discovered in a disjointed way into a
complete and coherent set. From the rule description, the glossary of business terms and may be from a first version of
the logical data model (LDM), the discovery team needs to transform the rules using the terms of the business to
elements that will be implemented by the rule writers. The rule analyst executes a set of iterative tasks to reach rule
implementation.&lt;/span>
&lt;/p></refinedDescription>
</org.eclipse.epf.uma:DescriptorDescription>
<org.eclipse.epf.uma:DescriptorDescription xmi:id="-09Itbxe1JXVwpusKQdRW6A" name="decision_point_table,_BZaDsX9ZEd26h9j0X6pKmw" guid="-09Itbxe1JXVwpusKQdRW6A">
<refinedDescription>&lt;a id=&quot;XE_decision_point_table&quot; name=&quot;XE_decision_point_table&quot;>&lt;/a>
&lt;p>
&lt;span
style=&quot;FONT-SIZE: 10pt; FONT-FAMILY: Arial; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US&quot;>Groups
together all potential rules that determine one decision.&lt;/span> &lt;a id=&quot;XE_decision_point&quot; name=&quot;XE_decision_point&quot;>It
can be found in a use case description or in a Business Process Map task description.&lt;/a>&amp;nbsp;Presented in table
format the project team can use the following template:
&lt;/p>&lt;br />
&lt;div align=&quot;center&quot;>
&lt;table class=&quot;ISISTable&quot;
style=&quot;BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; WIDTH: 496.15pt; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid silver 1.0pt; mso-yfti-tbllook: 480; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: 1.0pt solid silver; mso-border-insidev: 1.0pt solid silver&quot;
cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; width=&quot;662&quot; border=&quot;1&quot;>
&lt;tbody>
&lt;tr style=&quot;HEIGHT: 15.75pt; mso-yfti-irow: -1; mso-yfti-firstrow: yes&quot;>
&lt;td
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: 70.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; HEIGHT: 15.75pt&quot;
valign=&quot;top&quot; width=&quot;95&quot;>
&lt;p class=&quot;MsoNormalCxSpFirst&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font
size=&quot;3&quot;>&lt;font face=&quot;Times New Roman&quot;>Decision Point&lt;span style=&quot;mso-spacerun: yes&quot;>&amp;nbsp;&lt;/span>
Name&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;td
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: 148.85pt; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; HEIGHT: 15.75pt; mso-border-left-alt: solid gray 1.0pt&quot;
valign=&quot;top&quot; width=&quot;198&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font
size=&quot;3&quot;>&lt;font face=&quot;Times New Roman&quot;>Description&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;td
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: 106.65pt; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; HEIGHT: 15.75pt; mso-border-left-alt: solid gray 1.0pt&quot;
valign=&quot;top&quot; width=&quot;142&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font
size=&quot;3&quot;>&lt;font face=&quot;Times New Roman&quot;>Source for Rule Discovery&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;td
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: 94.75pt; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; HEIGHT: 15.75pt; mso-border-left-alt: solid gray 1.0pt&quot;
valign=&quot;top&quot; width=&quot;126&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;font size=&quot;3&quot;>&lt;font face=&quot;Times New Roman&quot;>&lt;b>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>Current&lt;/span>&lt;/i>&lt;/b> &lt;b>&lt;i
style=&quot;mso-bidi-font-style: normal&quot;>&lt;span
style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>State&lt;/span>&lt;/i>&lt;/b> &lt;b>&lt;i
style=&quot;mso-bidi-font-style: normal&quot;>&lt;span style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>of
Automation&lt;/span>&lt;/i>&lt;/b>&lt;/font>&lt;/font>
&lt;/p>
&lt;/td>
&lt;td
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: 75pt; PADDING-TOP: 0cm; BORDER-BOTTOM: gray 1pt solid; HEIGHT: 15.75pt; mso-border-left-alt: solid gray 1.0pt&quot;
valign=&quot;top&quot; width=&quot;100&quot;>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font
size=&quot;3&quot;>&lt;font face=&quot;Times New Roman&quot;>Rule Owner -&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;p class=&quot;MsoNormalCxSpMiddle&quot; style=&quot;TEXT-ALIGN: center; mso-yfti-cnfc: 1&quot; align=&quot;center&quot;>
&lt;b>&lt;i style=&quot;mso-bidi-font-style: normal&quot;>&lt;span style=&quot;COLOR: #005da0; mso-bidi-language: HE&quot;>&lt;font
size=&quot;3&quot;>&lt;font face=&quot;Times New Roman&quot;>SME&lt;/font>&lt;/font>&lt;/span>&lt;/i>&lt;/b>
&lt;/p>
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 0&quot;>
&lt;td
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: 70.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;
valign=&quot;top&quot; width=&quot;95&quot;>
&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;td
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: 148.85pt; 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;
valign=&quot;top&quot; width=&quot;198&quot;>
&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;td
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: 106.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;
valign=&quot;top&quot; width=&quot;142&quot;>
&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;td
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: 94.75pt; 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;
valign=&quot;top&quot; width=&quot;126&quot;>
&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;td
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: 75pt; 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;
valign=&quot;top&quot; width=&quot;100&quot;>
&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;/tr>
&lt;tr style=&quot;mso-yfti-irow: 1; mso-yfti-lastrow: yes&quot;>
&lt;td
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: 70.9pt; PADDING-TOP: 0cm; BORDER-BOTTOM: silver 1pt solid; BACKGROUND-COLOR: transparent; mso-border-top-alt: solid silver 1.0pt&quot;
valign=&quot;top&quot; width=&quot;95&quot;>
&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;td
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: 148.85pt; 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;
valign=&quot;top&quot; width=&quot;198&quot;>
&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;td
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: 106.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;
valign=&quot;top&quot; width=&quot;142&quot;>
&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;td
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: 94.75pt; 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;
valign=&quot;top&quot; width=&quot;126&quot;>
&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;td
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: 75pt; 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;
valign=&quot;top&quot; width=&quot;100&quot;>
&lt;br class=&quot;MsoNormalCxSpMiddle&quot; />
&lt;br />
&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;/div>&lt;br />
&lt;p>
The name should be explicit and without any ambiguity. It helps to link back to the business process or use case step.
An example may be &quot;claim data review&quot;, or &quot;loan eligibility&quot;...
&lt;/p>
&lt;p>
The source for rule discovery describes the main sources of rule harvesting like human, code, database, book, policies,
legal&amp;nbsp;manual...
&lt;/p>
&lt;p>
The current state of automation is optional and just list&amp;nbsp;if for this given decision point we can have tools which
can migrate the business rules&amp;nbsp;from one format to another.&amp;nbsp;
&lt;/p>
&lt;p>
The last column can be useful to define who will be the owner of the rule set(s) supporting the decision point. He/She
will be an important actor of the rule discovery.
&lt;/p></refinedDescription>
</org.eclipse.epf.uma:DescriptorDescription>
<org.eclipse.epf.uma:DescriptorDescription xmi:id="-Vv_9K8Dz3DHl2GFZ69FiAQ" name="rule_description_doc,_BZaDsn9ZEd26h9j0X6pKmw" guid="-Vv_9K8Dz3DHl2GFZ69FiAQ">
<refinedDescription>&lt;a id=&quot;XE_rule_description__document&quot; name=&quot;XE_rule_description__document&quot;>&lt;/a>
&lt;p>
The rule description document is used during the discovery phase, and during the first iterations for building a rule
set. It is not mandatory to complete it up front with all the rules in it. The complement is done during the Rule
Authoring phase.
&lt;/p>
&lt;p>
It is also interesting to leverage SBVR to document the rule.
&lt;/p></refinedDescription>
</org.eclipse.epf.uma:DescriptorDescription>
<org.eclipse.epf.uma:DescriptorDescription xmi:id="-pAIEUuJxXz-6pgjLh_pMzw" name="ruleset,_BZaDs39ZEd26h9j0X6pKmw" guid="-pAIEUuJxXz-6pgjLh_pMzw">
<refinedDescription>&lt;a id=&quot;XE_rule_set__work_product&quot; name=&quot;XE_rule_set__work_product&quot;>&lt;/a>
&lt;p>
For more detail see &lt;a class=&quot;elementLink&quot; href=&quot;./../../abrd/guidances/termdefinitions/rule_set_4D4C8DB1.html&quot;
guid=&quot;_DdvcwBCQEdyJtJ3PbfdVDw&quot;>Rule Set&lt;/a>&amp;nbsp;and &lt;a class=&quot;elementLink&quot;
href=&quot;./../../abrd/guidances/termdefinitions/rule_engine_A66B71B3.html&quot; guid=&quot;_QQcSoEXXEdy14e5PT9v3HQ&quot;>rule engine&lt;/a>
&lt;/p></refinedDescription>
</org.eclipse.epf.uma:DescriptorDescription>
</xmi:XMI>