| <?xml version="1.0" encoding="UTF-8"?> |
| <org.eclipse.epf.uma:ContentDescription xmi:version="2.0" |
| xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.5/uma.ecore" |
| xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.0" xmlns:epf="http://www.eclipse.org/epf" |
| epf:version="1.5.0" xmi:id="-ahQOe8UmyVyogbRDnkzo7Q" |
| name="ntroduction,_QXY14CDkEduCWc6M2bh46w" guid="-ahQOe8UmyVyogbRDnkzo7Q" authors="Jerome Boyer " |
| changeDate="2009-12-10T11:35:29.687-0800" version="1.0.0"> |
| <mainDescription><p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| The Agile Business Rule Development plug-in for the Eclipse Process Framework presents a pragmatic approach <a
 |
| id="XE_ABRD__introduction" name="XE_ABRD__introduction"><span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Arial" size="2">(</font></span></a><a class="elementLink"
 |
| href="./../../../practice.tech.abrd.base/guidances/concepts/cycle_approach_7FA44D8F.html"
 |
| guid="_ftAoIAjrEdyj5bYZ0eCR5g">Cycle Approach to Rules Development</a>) to the development of a Business Rule
 |
| Application using Rule Engine and Business Rules Management System (BRMS) technology such as ILOG JRules, ILOG Rules
 |
| for .Net,&nbsp;Fair Isaac Blaze Advisor, Drools&nbsp;or any other Rule Engine and BRMS on the market. This methodology
 |
| supports the rule governance process description, and the architecture disciplines to deploy a Business Rule Engine
 |
| into a Service Oriented Architecture and Business Process Management System.
 |
| </p><br />
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| Business rules are an expression of business policy in a form that is both comprehensible to business users and
 |
| executable by a rule engine. From a business perspective, a business rule is a precise statement that describes,
 |
| constrains, or controls some aspect of the business.
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| Let's illustrate this concept with a simple example coming from the lending industry. The following business policy can
 |
| be established to limit the loan amount a bank can purchase:<br />
 |
| </p>
 |
| <div
 |
| style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 3pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0in; MARGIN-LEFT: 0.5in; BORDER-LEFT: gray 1.5pt solid; MARGIN-RIGHT: 0in; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-element: para-border-div">
 |
| <br />
 |
| <p class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto">
 |
| <span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Courier">Only prime loans are eligible for purchase</font></span>
 |
| </p><br />
 |
| </div>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| This policy may be split into two implemented rules, one defining what a prime loan is and the second taking the
 |
| decision on purchasing it or not.&nbsp;
 |
| </p>
 |
| <div
 |
| style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 3pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0in; MARGIN-LEFT: 0.5in; BORDER-LEFT: gray 1.5pt solid; MARGIN-RIGHT: 0in; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-element: para-border-div">
 |
| <br />
 |
| <p class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto">
 |
| <span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Courier">If the loan amount is less than the prime loan limit, then the loan type is Prime</font></span><br
 |
| class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto" />
 |
| <br />
 |
| </p>
 |
| <p class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto">
 |
| <span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Courier">If the loan type is not Prime then reject the loan</font></span>
 |
| </p><br />
 |
| </div><br class="MsoNormal" style="MARGIN: 3pt 0in" />
 |
| <br />
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| Implementing these rules using an Object Oriented Language may look like two if statements testing conditions on
 |
| objects, and applying actions on the same or other objects
 |
| </p><br class="MsoNormal" style="MARGIN: 3pt 0in" />
 |
| <br />
 |
| <div
 |
| style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0in; BORDER-TOP: medium none; PADDING-LEFT: 3pt; BACKGROUND: #f3f3f3; PADDING-BOTTOM: 0in; MARGIN-LEFT: 0.5in; BORDER-LEFT: gray 1.5pt solid; MARGIN-RIGHT: 0in; PADDING-TOP: 0in; BORDER-BOTTOM: medium none; mso-element: para-border-div">
 |
| <br class="ISISCodeParagraphCxSpFirst" style="BACKGROUND: #f3f3f3; MARGIN: 6pt 0in 0pt; mso-add-space: auto" />
 |
| <br />
 |
| <p class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto">
 |
| <span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Courier">if (loan.amount &lt; PrimeLoanLimit) {</font></span>
 |
| </p>
 |
| <p class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto">
 |
| <span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Courier">loan.type = PrimeType;</font></span>
 |
| </p>
 |
| <p class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto">
 |
| <span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Courier">}</font></span>
 |
| </p><br class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto" />
 |
| <br />
 |
| <p class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto">
 |
| <span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Courier">if (loan.type != PrimeType) {</font></span>
 |
| </p>
 |
| <p class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto">
 |
| <span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Courier">case = new Case("Loan is not Prime");</font></span>
 |
| </p>
 |
| <p class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto">
 |
| <span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Courier">loan.status = REJECT;</font></span>
 |
| </p>
 |
| <p class="ISISCodeParagraphCxSpMiddle" style="BACKGROUND: #f3f3f3; MARGIN: 0in 0in 0pt; mso-add-space: auto">
 |
| <span
 |
| style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US"><font
 |
| face="Courier">}</font></span><br />
 |
| </p>
 |
| </div><br />
 |
| <p>
 |
| The concept of business rules is not new, and for decades analysts and developers were implementing them within
 |
| business applications. What is more recent is the introduction of a Business Rule Management System application which
 |
| provides tools to manage the rule as a standalone element, outside of the core business application, and in a form
 |
| which is executable by a rule engine.
 |
| </p>
 |
| <p>
 |
| Business rules are packaged as a Rule Set which can be considered as a piece of software executed by a rule engine.
 |
| Integrated in a business application, the rule set implements a sub-set of the business logic. This logic is
 |
| externalized from the traditional code and can be easily changed, and maintained by business analysts instead of
 |
| developers.
 |
| </p>
 |
| <p>
 |
| As opposed to business logic embedded and hidden in functions, procedures, macros or databases, business rules are
 |
| clearly separated from the rule engine, a software component which executes and activates rules based on matching
 |
| conditions on a set of data.
 |
| </p>
 |
| <p>
 |
| Figure 1 below illustrates this fundamental approach in implementing business logic, with the old embedded model on the
 |
| left and the new architecture on the right. In many ways the approach is similar to the separation of code and data
 |
| which Data Base Management Systems (DBMS) brought in the 1970s.<br />
 |
| &nbsp;
 |
| </p>
 |
| <p>
 |
| &nbsp;<img height="386" alt="" src="./resources/legacy2bre.JPG" width="599" />
 |
| </p>
 |
| <p>
 |
| <span lang="EN-GB" style="mso-ansi-language: EN-GB">A piece of business logic or rule embedded in code will be more
 |
| difficult to identify, locate, and change, therefore increases costs of maintenance.</span>
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| <span lang="EN-GB" style="mso-ansi-language: EN-GB">A rule which is externalized in a BRMS platform, and whose versions
 |
| are controlled in a rule repository and deployed and executed in a rule engine, will be much easier to modify, thus
 |
| reducing dramatically the time and cost to implement changes required by the business.</span>
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| <span lang="EN-GB" style="mso-ansi-language: EN-GB">Traditional software life cycles such as the V cycle or waterfall
 |
| model are notorious for leading to systems which costs more than expected, come to market later than planned and with
 |
| outcomes not matching the clients' initial expectations. With such approaches, the business users have little ownership
 |
| of the solution, and the time required to implement changes can easily range from 3 to 6 months if not more. As a
 |
| result, policy owners don't feel comfortable with change which translates into a loss of agility to respond to new
 |
| business and competitive situations: too much time passes between policy owners submitting requirements to IT and the
 |
| actual deployment of new rules.</span>
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| <span lang="EN-GB" style="mso-ansi-language: EN-GB">Also, with all the fine tuning and iterations, policy owners cannot
 |
| really be sure that the policy is being implemented according to their needs. The only way to actually know is to keep
 |
| performing tests and hope that all the cases are covered in such tests.</span>
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| As important element of the business decision, the business rules need strong management processes and tools to support
 |
| their life cycle.
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| A BRMS provides solutions to make this management more efficient, both for developers and for the business users of the
 |
| applications. Obviously tooling is not the single answer to the software and business challenges behind the development
 |
| of decision-support systems. Deploying BRMS, BRE, and BPM components into business applications requires to modify
 |
| current development methodologies and practices in order to take into account new concepts as well as providing a
 |
| better collaboration framework between IT and business.
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| The Agile Business Rule Development (ABRD) methodology corresponds to such a need. It is an incremental and iterative
 |
| software development process leveraging the Agile Alliance manifesto (<a href="http://agilemanifesto.org/"
 |
| target="_blank">Agile Manifesto</a>). Here are some of the Agile development values particularly relevant to the
 |
| implementation of a rule set using the ABRD approach:
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l0 level1 lfo1">
 |
| <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> <i>Individuals and interactions over processes and tools</i>. The rule
 |
| discovery, analysis and validation activities require an active and efficient communication between the rule developer
 |
| and the Subject Matter Experts (SME). Such processes are defined as light as possible.
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l0 level1 lfo1">
 |
| <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> <i>Working software over comprehensive documentation</i>. The proposed rule
 |
| set development done per iteration, with its validation step, is based on the evidence that a working and executable
 |
| rule set has much more business value than a rule description manual. All the project stakeholders benefit from such a
 |
| principle but in particular the business users who are then sure that what they see (the rules) is what gets executed
 |
| in the deployed system.
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l0 level1 lfo1">
 |
| <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> <i>Customer collaboration over contract negotiation</i>. Subject Matter
 |
| Experts who define the business policies and the business rules are strongly involved in the development process. They
 |
| are the customers of the final system, owners of the policies and are conveniently collocated with the development team
 |
| during the project.
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l0 level1 lfo1">
 |
| <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> <i>Responding to change over following a plan</i>. Business rules evolve, more
 |
| often and faster than other standard pieces of software. This is actually one of the key values of the business rule
 |
| approach. For this fundamental reason the methodology to support the rule set development has to be tailored to such
 |
| rapid life cycle and include the appropriate activities, processes, best practices and work products to support such
 |
| changes efficiently.
 |
| </p><br />
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| The Agile Business Rule Development methodology addresses in more detail the following goals:
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l1 level1 lfo2">
 |
| <span
 |
| style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; mso-bidi-font-size: 10.0pt"><span
 |
| style="mso-list: Ignore">·</span></span> Separate rules as a manageable artifact using discovery, analysis and
 |
| authoring activities and work products
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l1 level1 lfo2">
 |
| <span style="FONT-SIZE: 11pt; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> Trace rules during their full life cycle from requirement to deployment and
 |
| maintenance
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l1 level1 lfo2">
 |
| <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> Link rules to business context and motivation
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l1 level1 lfo2">
 |
| <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> Develop the rule description using business terms and high level rule language
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l1 level1 lfo2">
 |
| <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> Prepare the logical data model for the rule engine&nbsp;
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l1 level1 lfo2">
 |
| <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> Prepare the Rule set implementation and deployment as decision services in a
 |
| SOA or BPM application
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l1 level1 lfo2">
 |
| <span style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> Articulate the rule governance processes
 |
| </p><br />
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| Two fundamental drivers govern successful rule set developments:
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l2 level1 lfo3">
 |
| <span
 |
| style="FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; mso-bidi-font-size: 10.0pt"><span
 |
| style="mso-list: Ignore">·</span></span> The unforgiving honesty of executable rules
 |
| </p>
 |
| <p class="MsoNormal"
 |
| style="MARGIN: 3pt 0in 3pt 36.3pt; TEXT-INDENT: -0.25in; tab-stops: list 36.3pt; mso-list: l2 level1 lfo3">
 |
| <span style="COLOR: navy; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol"><span
 |
| style="mso-list: Ignore">·</span></span> The effectiveness of people working together with goodwill, shared vision and
 |
| common interests (the business user and the development team).
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| Executable or working rules tell the developers and the Subject Matter Expert what they really do as opposed to promise
 |
| through a paper-based design or specification.
 |
| </p>
 |
| <p class="MsoNormal" style="MARGIN: 3pt 0in">
 |
| ABRD was developed by ILOG to support implementation and deployment of BRMS by its customers. It is now offered as a
 |
| free open source methodology as part of the Eclipse Process Framework plug-in library.
 |
| </p><span
 |
| style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-bidi-language: AR-SA; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt">ABRD
 |
| is a practice and extends other element of EPF practice library to avoid redefining some standard roles, tasks, work
 |
| products, guidelines and processes which are also relevant to rule development. As an EPF plug-in, development teams can
 |
| leverage it for their own purpose and tailor it to the specific context of their own project, leveraging the EPF Process
 |
| Composer tool.</span><br /></mainDescription> |
| </org.eclipse.epf.uma:ContentDescription> |