tag:blogger.com,1999:blog-67942349101875251802009-05-20T16:46:37.774-07:00Agile IT ArchitectureDevelop Agile Enterprise leveraging sustainable IT architecture using SOA-BRMS-BPEL-BPM.
Disclaimer: All views expressed on this blog are mine only, and do not represent the views of my current and past employers and customers.JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.comBlogger28125tag:blogger.com,1999:blog-6794234910187525180.post-72958641448284115982009-05-20T16:25:00.001-07:002009-05-20T16:46:37.788-07:00Service Component ArchitectureDiscussing about agile IT architecture on this blog without going to SCA will be a major error. I'm playing with SCA since last September, and I love it.<br />Service Component Architecture is defined as the implementation of the SOA architecture. You can read an excellent paper from David Chappell on this <a href="http://www.davidchappell.com/articles/Introducing_SCA.pdf">subject</a>. SCA separates application business logic and the implementation details. It provides a model that defines interfaces, implementations, and references in a technology neutral way, letting us to bind these elements to any technology specific implementation.<br /><br />For the business case and business user point of views the value propositions are around:<br />- Save time and money<br /> - A simpler API, Efficient GUI tools to assemble components to build new application<br /> - Enable and encourage reuse - Developers can create composites that perform useful functions. SCA makes it easy to use and reuse business logic.<br />- Bring agility to interchange business logic<br />- Bring visibility on how the application is built. I can imagine easily using the assembly diagrams to explain how 'business' components work together in the context of the current application.<br /><br />On the architecture level the ability to separate business logic from infrastructure logic reduces the IT resources needed to build an enterprise application, and gives developers more time to work on solving a particular business problem rather than focusing on the details of which implementation technology to use.<br /><span style="font-weight: bold;">Some key concepts</span>:<br />A <strong>component</strong> implements some business logic exposed as one or more services that operate on business data. Component includes an implementation, and can have partner references and interfaces.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Bs56QIwqBnc/ShSUWIZEYII/AAAAAAAAAGc/X3r62RlEgOs/s1600-h/SCA_component.bmp"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 326px; height: 235px;" src="http://3.bp.blogspot.com/_Bs56QIwqBnc/ShSUWIZEYII/AAAAAAAAAGc/X3r62RlEgOs/s400/SCA_component.bmp" alt="" id="BLOGGER_PHOTO_ID_5338054566271541378" border="0" /></a>A component can indicate the services it relies on using <strong>references.</strong> Explicitly defining references allows dependency injection, the SCA runtime can locate the needed service and injects the reference into the component which needs it. <br />Components are bring together within an assembly or <span style="font-weight: bold;">composite</span>. The composite is persisted as an XML document using the Service Component Description Language (SCDL).<br /><br />A component can also define one or more <strong>properties</strong>. Each property contains a value that can be read by that component from the SCDL configuration file when it’s instantiated. Finally a <strong>domain</strong> can contain one or more composites, each of which has components implemented in one or more processes running on one or more machines. <br /><br />On the tools and implementation side, IBM for sure has an impressive offering on that space with <a href="http://www-01.ibm.com/software/integration/wid/">WebSphere Integration Developer</a>. <a href="http://tuscany.apache.org/">Apache Tuscany</a> is also an excellent open source to help us jumping into the technology and understand how it works. Eclipse Ganymede is offering an assembly editor, SCA project plugin...<br /><span style="font-weight: bold;"></span><br />We will build our AML application using SCA<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-7295864144828411598?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-49324025346276018652009-05-13T10:08:00.000-07:002009-05-13T10:36:58.197-07:00AML with Event processing and Rule EngineI have to build a demo and a presentation (co -presented) for IBM WebSphere<a href="http://www-01.ibm.com/software/websphere/events/impact2009/"> Impact 09</a> on how business rules and business event work together in the context of Anti Money Laundering. James Taylor did a good <a href="http://jtonedm.com/2009/05/05/how-business-events-and-business-rules-work-together/">summary </a>on his blog.<br />I promised some time ago on this blog to go through a complete example of executing ABRD on a project. So lets take this demo as a main example. Lets start with this first blog on a short description of AML and its high level process.<br /><br /><span style="font-weight: bold;">AML business context</span>:<br /><br />Money Laundering is the act of hiding illegally earned money from police and tax authority by making illicit funds appear as initiated from legal business. The Money laundering is a three step process. The first step, called ‘placement’, is done by depositing illicit funds in a business bank account. If one makes a cash deposit above 10000$ the bank is required to report the transaction to the government. The next step is called ‘layering’, wherein funds are moved from bank to bank and consolidated. The last step is the ‘integration’, where the funds are reintroduced to the financial system as ‘clean money’.<br /><br />The first defense against money laundering is the requirement on financial intermediaries to know their customers— often termed KYC (Know Your Customer). Knowing his customers, financial intermediary will often be able to identify unusual or suspicious behaviors, including false identities, unusual transactions, changing behavior, or other indicators of laundering.<br />Placement rules should be able to detect deposit structuring by one or more individuals at various bank locations within a day or over time; notably this can also include ATMs. Large wire remittance customers, such as Money Service Business, will deposit cash more often and in greater volumes than typical customers.<br /><br />Rules to detect large cash placements, using various methods and locations, in a single day, week, or month, would therefore be well-suited for monitoring.<br /><br />Layering rules should identify bogus loans to offshore entities which never repaid the funds or the loan paid off in cash.<br /><br />Current auditing happens manually where the auditor examines data output from legacy application and search for cash transactions over a period of time. The goal is to migrate to a continuous monitoring with software component which will alert auditors for suspicious activities. Banks need to be aware of all of the financial transactions that make up a ML. The critical knowledge to manage is the associations between such transactions.<br /><br /><br />The first step of a business process modeling approach is to work on the business process.<br /><br />The high level process can be seen with 4 steps:<br /><br /><ul><li> Detect fraud pattern</li><li>Analyze pattern</li><li>Investigate customer</li><li>Report on fraud<br /></li></ul><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Bs56QIwqBnc/Sgr-3IfBh9I/AAAAAAAAAGU/dw2aZ_Ujh1Q/s1600-h/aml_hlp.bmp"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 55px;" src="http://2.bp.blogspot.com/_Bs56QIwqBnc/Sgr-3IfBh9I/AAAAAAAAAGU/dw2aZ_Ujh1Q/s400/aml_hlp.bmp" alt="" id="BLOGGER_PHOTO_ID_5335356931697641426" border="0" /></a><br /><br />The detection of ML pattern is looking to different sources of information like the transactions, the customer accounts, the loan servicing applications, and looking at pattern of behaviors leading to potential Money Laundering. The detection of pattern is done with a time window constraint. A person making cash deposit on a yearly or monthly basis may not be a ML. A person doing cash deposit regularly without business motivation may be a fraudulent. The analysis is a sub process which aims to look at the potential fraudulent customer and search for historical information or customer data points already gathered by the system. Investigation is, as of today, a human activity performed once the system is reporting a risky customer. The investigation is to complete gathering information on the customer. Reporting Money Laundering to authority after the investigation is completed and positive.<br /><br />From this process we will evaluate how to deploy event processing engine and rule engine for the pattern detection, analysis and investigation, in some next posts.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-4932402534627601865?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-84127987905680305872009-05-01T10:08:00.000-07:002009-05-01T10:12:39.713-07:00EDA and Rule EngineI presented sometime ago an architecture overview and use case for deploying a Rule Engine inside an Event Driven Architecture. There are papers from analysts and other bloggers on that subject which are predicting that EDA is becoming a hot subject in the next few months. I want to share what I found interesting.<br />Event Driven Architecture is an asynchronous publish-and-subscribe communication pattern: Publisher applications send events to a mediation layer which is notifying the subscribers interested by the events. The publisher is completely unaware of the subscriber. Components are loosely coupled in the sense that they only share the semantic of the message. The simplest Java implementation is based on using JMS Topics as it is a natural API for pub-subscribe messaging.<br />The data carried on the message payload are events with business means. The goal to embrace EDA is to deliver real-time access to business data. This is not really an extension of SOA but a complement of it as publishers may call services on event detection. But it can be seen orthogonal to SOA, as SOA is using a traditional procedural pattern around synchronous controlled orchestration of services.<br />Some are saying SOA is dead, replaced by EDA. Well SOA is still a valid approach to design IT architecture. SOA is not dead, and EDA is a complement of it. One thing that I think make EDA very attractive is the flexibility to add new function/application without impacting existing ones.<br />By the way EDA is not new: One of the mainframe programming models was to have batch application waiting for the result of other batches to process their own work. It is very close to subscribers waiting for events coming from publishers. At least we can say EDA is the distributed version of the old mainframe programming approach.<br /><br />As soon as current application in the IT are able to post events, you have the flexibility to add/ remove listeners to address a new business needs.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Bs56QIwqBnc/SfstTNFXILI/AAAAAAAAAGE/hoYIsMipUDw/s1600-h/EDA_BREasAgent.bmp"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 249px;" src="http://1.bp.blogspot.com/_Bs56QIwqBnc/SfstTNFXILI/AAAAAAAAAGE/hoYIsMipUDw/s400/EDA_BREasAgent.bmp" alt="" id="BLOGGER_PHOTO_ID_5330904391876026546" border="0" /></a>So why rule engine is a critical component within EDA? One deployment is to use a BRE to support the implementation of such listener. Instead of developing rigid application you use BRE to bring the agility inside the flexibility. The component can be seen as a decision agent. The second interest is in the implementation of the event processing that has to detect event, process it and take action.<br /><br />We can see multiple levels to support this event processing depending of the characteristics of the architecture and the type of event processing we look at. I'm seeing at least three:<br />- Simple event processing: the subscriber focuses on processing a few types of event with specific static conditions, and initiating action such as creating a new event, or calling a service. This processing can be real time or not. We may not want to consider any time dimension in the event.<br />- Event stream processing: Events are ordered and arrived as a stream to the subscribers. The processing may involve time windows, count based window, leveraging time based pattern,... It is used to synthesize data in real time.<br />- Complex Event Processing: Detect complex patterns of events, consisting of events that are widely distributed in time and location of occurrence. It supports low latency, high throughput, complex event management with aggregation, join, stateful operators, event A followed by B and by C, and all the combinations of it.<br />The technologies to support each processing are different, and it is important to do not use one for the other, or we will generate frustration.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-8412798790568030587?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-76187235479206950722009-03-05T08:24:00.000-08:002009-03-05T08:40:38.297-08:00Sustainable IT architecture<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Bs56QIwqBnc/SbAAfv-fozI/AAAAAAAAAF8/EdburHLayA8/s1600-h/doc_fipiidwovhdl_medium.jpg"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 85px; height: 128px;" src="http://4.bp.blogspot.com/_Bs56QIwqBnc/SbAAfv-fozI/AAAAAAAAAF8/EdburHLayA8/s400/doc_fipiidwovhdl_medium.jpg" alt="" id="BLOGGER_PHOTO_ID_5309744506124346162" border="0" /></a><br />In current difficult economic period where companies are merging, need to comply to new regulations, reduce cost, and be able to react more quickly to economic changes, building Agile and sustainable IT architecture is a must.<br /> So the <a href="http://www.sustainableitarchitecture.com/book">book </a>"Sustainable IT architecture" examines the use of Service Oriented Architectures (SOA) from the perspective of its contribution to the development of sustainable and agile IT systems that are able to adapt to new technology developments and to manage business processes.<br />The book is the translation and adaptation of a first french book which has a huge success in the IT community in France, and other countries using french language. I contributed for one chapter of the book around BRMS and how this component is a major piece of the Agility Chain Management System. This book also arrived on a good timing, where some architects and journalists are questioning SOA, or claiming SOA is dying. There is no doubt about SOA, its values, and approch. <a href="http://www.smabtp.fr/">SMABTP</a>, an insurance company in France, deployed SOA starting 2002 and without it they will not have their current sane business. (Jean Michel Detavernier, co-autor of the book, did an excellent presentation at <a href="http://www.ilog.com/dialog09/">DIALOG09 </a>on how he did deploy SOA within SMABTP). You should be able to order it soon, and do not forget to comment on this blog.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-7618723547920695072?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-28339554176215571232009-02-27T15:53:00.001-08:002009-02-27T16:01:26.312-08:00ABRD v1.2 available on EPF downloadHi<br />To share with you the ABRD v1.2 is available for <a href="http://www.eclipse.org/epf/downloads/praclib/praclib_downloads.php">download </a>as part of the EPF practices library, instead of dowloading it from CVS<br /><br /><style type="text/css"><!-- div.lotusnotesemailheader{display: none;} --></style><style type="text/css" media="print"><!-- div.lotusnotesemailheader{display: inline;} --></style><a href="http://www.eclipse.org/epf/downloads/praclib/praclib_downloads.php"><span style="font-family:sans-serif;font-size:85%;">http://www.eclipse.org/epf/downloads/praclib/praclib_downloads.php</span></a> <br /><br />Please continue to contribute and help on its enhancement. I thanks all the persons who gave me good feedback and propose changes that I did incorporate in current release or will do in the future release.<br />ABRD is becoming more and more adopted and used, it is a simple set of practices to develop business application using rule engine technology and so very relevant when we want to use BRMS platform.<br />I'm quite busy since these last months between the acquisition of ILOG and the book I'm writing on JRules and ABRD. I could not blog as I will expect.<br />But stay tuned, there are a lot to come in close months around BRMS ...<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-2833955417621557123?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-77302376367301205592009-02-09T20:02:00.000-08:002009-02-09T20:11:59.133-08:00BPMN Modeling and reference guideAs <a href="http://www.bpmfocus.org/">Derek Miers</a> commented on one of my old blog, some of my BPM maps were not compliant to BPMN. He was for sure right, and I bought the book '<a href="http://store.futstrat.com/servlet/Detail?no=49">BPMN Modeling and reference guide</a>' that I really encourage people to buy and read to be fluent around BPMN. I was short cutting the approach by looking at presentations you can find on the web. You can get your own interpretation of the notation and got completly wrong. So a reference is always preferable, and with this knowledge you may arrive to design good process, at least process compliant to the intent of this standard.<br />The book is a must to be sure every one understand what a BPMN diagram is representing. Each BPMN modeler tool on the market has his own interpretation or 'add-on' so it is always interesting to get back to the intent of the notation and the reference. The book is illustrated with a lot of samples. Very useful.<br />Thanks again Derek.<br /><div id="comments-bar-info"> </div> <a name="comments"></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-7730237636730120559?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-22051589993635811272009-02-09T16:55:00.000-08:002009-02-09T20:00:47.192-08:00DIALOG 09- A SuccessLast week I was at Dialog 09, the ILOG customer conference. It was a real success, and real pleasure to see all the BRMS customers presenting how they are able to empower the business users to maintain rules. <a href="http://jtonedm.com/2009/02/04/dialog-keynotes-ilog-and-ibm/">James is blogging on Dialog</a>, and you can see good summaries there.<br /><br />I was co-presenting effective rule writing, which is still a hot topic for business rule application, and there is some web seminar on this topic as soon as <a href="https://iloginc.webex.com/mw0305l/mywebex/default.do?nomenu=true&siteurl=iloginc&service=6&main_url=https%3A%2F%2Filoginc.webex.com%2Fec0600l%2Feventcenter%2Fevent%2FeventAction.do%3FtheAction%3Ddetail%26confViewID%3D476636192%26siteurl%3Diloginc%26%26%26">this week</a>.<br />Another important subject is about rule deployment and the different strategies for deploying rules with the IT. I will blog on that soon.<br />The last presentation was on <a href="http://www.smabtp.fr/">SMABTP</a>, a very successful story on SOA adoption, and BRMS deployment: in 2002, <a href="http://dialog09.ilog.com/speakers.php">Jean Michel Detavernier</a> (CIO Deputy) has the Vision to embrace SOA at the enterprise level, deploy rules every where and put in place a real agile IT architecture. It is now possible to define new insurance product in days where it was needed months before. There are still customers, architects, and CIO who are questioning SOA value proposition, they may need to read such presentation. In such difficult economy, agile IT architecture is a Must. no question.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-2205158999363581127?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-75429003341132141992008-12-17T16:23:00.000-08:002008-12-17T16:37:34.765-08:00Manufacturing Equipment System and CEPI just finished a proof of concept for a manufacturing customer on how to use a inference engine to process events coming from a Manufacturing Equipment System. Without breaking any confidential information, I just want to highlight the use cases, the proposed architecture, and give some example of rules.<br />At the high level, the business use cases are real time fault detection and equipment monitoring. Equipments are tools running on the manufacturing floor. The manufacturing tools process parts. After a certain amount of work processed, a tool needs some maintenance and any parts assigned need to be inhibited so the MES can route these Work In Progress parts to equivalent tools.<br /><br />Tool can generate alarms, and the system can take preventive action and/or alert people to avoid bigger problem. So for fault detection a rule looks like:<br /><br /><span style="font-family:courier new;">if Alarm_id == 36 then inhibit parts running on tool initiating the alarm, and send email and SMS message to floor manager</span><br /><br />I have to complete this rule set with correlation, filter out and removing consequential alarms rules to avoid generating too much actions.<br /><br /><span style="font-size:85%;"><span style="font-family:courier new;">When {</span><br /><span style="font-family:courier new;"> alarm1: Alarm(category == TrackBlocked);</span><br /><span style="font-family:courier new;"> alarm2:Alarm(category == ScannerEmpty; equipmentId == alarm1.equipmentID; this != alarm1)</span><br /><span style="font-family:courier new;">} then {</span><br /><span style="font-family:courier new;"> Retract alarm2;</span><br /><span style="font-family:courier new;">}<br /><br /></span></span>For equipment monitoring, the manager wants to monitor limits of product to tool. Once thresholds are reached we can trigger a maintenance request on tool, and reroute parts scheduled to the tool. Events are sent at each job completion. Job means the processing of a manufactured part on a tool. At each event the rule engine updates counters, and verifies thresholds. If thresholds are met<br /><br />The architecture has to integrate corba, and Java RMI.<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Bs56QIwqBnc/SUmbE7dVMFI/AAAAAAAAAFA/2sTMC23nXBg/s1600-h/mes-cep.bmp"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 173px;" src="http://4.bp.blogspot.com/_Bs56QIwqBnc/SUmbE7dVMFI/AAAAAAAAAFA/2sTMC23nXBg/s400/mes-cep.bmp" alt="" id="BLOGGER_PHOTO_ID_5280922547051114578" border="0" /></a><br /></div><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> The CEP server code is simple and uses JRules POJO rule session to insert events in working memory. The performance is to process 1 event per second, and manage a sliding window of one hour. (configurable). So the code is managing a sorted list of events and removes older events no more part of the time window. This is very simple and good enough for this simple event and time window management, as high volume and performance goals are far from what low latency CEP engines are used to process.<br /><br />What is interesting on this project was the classification of the application as event based processing, and so entering into the CEP space, even if we are not really working on stream of events, or using any SQL like language or computing aggregation. This is a classical alarm filtering and correlation application where an inference engine can do a good job.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-7542900334113214199?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-64111674814852843212008-11-21T14:32:00.000-08:002008-12-11T12:23:38.135-08:00SOA slowing downGartner says the "<a href="http://www.gartner.com/it/page.jsp?id=790717">Number of Organizations Planning to Adopt SOA for the First Time Is Falling Dramatically</a>". I will summarize the facts as below:<br /><br /><ul><li>53% of person contacted are using SOA in some part of their organizations</li><li>25 % were not using it but had plans to do so in the next 12 months</li><li>16 % no plan to use it</li><li>20 % are building Event Driven Architecture</li><li>20 % are planning to do EDA in the next 12 months</li><li>Since the beginning of 2008, there has been a dramatic fall in the number of organizations that are planning to adopt SOA for the first time. down to 25 percent from 53 percent in 2007</li><li>Many organizations have evaluated SOA and have chosen not to spend time and effort on it</li><li>The highest concentrations of organizations not pursuing SOA and having no plans to do so are in process manufacturing and agriculture and mining</li><li>SOA adoption in Europe is nearly universal, moderate in North America and lagging in Asia<br /></li></ul>Main reasons listed are:<br /><ul><li>No clear business case – but there is a great deal of confusion about how to construct a business case for SOA</li><li>Lack of skill and no plan to acquire necessary skill</li><li>Use of modern programming environments is closely associated with SOA</li><li>Legacy skill + SOA are scared<br /></li></ul><br />In my recent work on the book "<a href="http://sustainableit.ifrance.com/announceBook.jpg">Resilient Information System</a>" as co-author, I have to study what are the pains and use cases our BRMS customers have in term of SOA. I'm still doing interviews on that matter but basically there are four main subjects to address when migrating to SOA :<br /><ul><li><span style="font-style: italic;">Data</span>: work on the definition of domain data model, or put in place some transformation layer to present the different view of the data to the applications</li><li><span style="font-style: italic;">Business rule</span>: be able to understand, to externalize and to easily change the business rule outside of the applications.</li><li>Expose<span style="font-style: italic;"> functions as business services</span>: once reusable points have be identified, the services can be designed and documented (WSDL) for reuse.</li><li>Re-engineer the<span style="font-style: italic;"> business processes</span> to support automation using reusable services.<br /></li></ul><br />The successful deployments among our customers are done in that order. If CIO buys upfront the full SOA suite, he will most likely not get the bang for the money, as the migration to an Extended SOA is long. So the business case has to be built by increment with the first goal of deploying tools that empower the business user to change his business policies. When you are successful on this matter, the other business cases are easier to articulate, because business users are seeing the value. As explained in the <a href="http://www.sustainableitarchitecture.com/is_agility">Agility Chain Management System</a> the core technologies to support the implementation are MDM, BRMS and BPM. Deploying SOA without BRMS and MDM does bring to the red path of the <a href="http://4.bp.blogspot.com/_Bs56QIwqBnc/SBIreDcHvYI/AAAAAAAAACQ/7IbdRJSU6fg/s1600-h/PathToExtendedSoa.bmp">SOA maturity matrix</a>. BPM, as BPEL orchestration engine, is not the solution to buy upfront, it will arrive later in the SOA maturity when we have reusable services that we can orchestrate.<br /><br />SOA is a viable architecture design and approach as was OOD in programming, so please do not kill it. Now it has to be decided as a corporate initiative and implemented by increment, project after project.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-6411167481485284321?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-2653013904167295682008-10-30T11:05:00.000-07:002008-10-30T11:29:11.869-07:00BRE part of the service layerI just had a look to the presentation from Sandy Kemsley done at the business rule forum: "<a href="http://www.column2.com/2008/10/business-rules-forum-mixing-rules-and-process/">Mixing Rules and Proces</a>s" and her blog <a href="http://www.column2.com/2008/10/business-rules-forum-vendor-panel/">entry </a>on BPMS and BRMS integration. I can quickly summarize the points she made that I love and share some feedback:<br /><ul><li>Does BPM has Rules? yes but typically not full-features BR. Rule changes may require redeploying processes with IT involvement.</li><li>Separate rules from process: externalize decision from process. Call BRE from BPE.</li><li>Benefits from separation: compext rules automate manual process, reuse rule across processes, change rule without processes.<br /></li></ul>In her blog entry "As a BPM bigot, I see rules as just another part of the services layer... but I didn’t hear that from any of the vendors." It may be because ILOG team was not speaking... ;-)<br /><br />We are pushing, saying and we are delivering projects since 4 to 5 years where we have a clear separation between decisions done by business rules from process flow, and designing solution where the business process is calling the decision service. In <a href="http://www.eclipse.org/downloads/download.php?file=/technology/epf/OpenUP/published/abrd_published-1.5-20081022.zip">ABRD I </a>even clearly propose this approach as a best practice for the reasons mentionned above:<br /><ul><li>different velocity of change and agility<br /></li><li>reuse of decision point</li><li>better version control and change management support in BRMS</li></ul>What we do observe in the field is that customers are at ease to design a web services or a services (SOA larger definition) that use a rule engine to implement the decision logic supported by these services, but are at pain to deploy executable processes, because not all the other parts (services) of the business process are ready. So BRMS is the first technology deployed in SOA rewampping before BPM. Green field deployment is difficult to find, and legacy application are moving slowly to be rewampped as reusable services. Not to mention the nightmare of data model management.<br />We are still at the lower left part of the <a href="http://www.agileitarchitecture.com/2008/04/soa-maturity-matrix-agile-chain.html">SOA maturity adoption</a> matrix and the Agility Chain Management.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-265301390416729568?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-89316398977112519552008-10-01T22:34:00.000-07:002008-10-01T22:45:24.487-07:00JSR94 - an over visioned java standard?Recently I had to re-do some JSR94 code and I'm still interested by this work done some years ago and I'm still supportive of it. But as Roy Johnson was saying recently during one of his presentation "Where will tomorrow's enterprise innovation come from?". Does JSR94 is one of this "unhealthy Java standard" like JDO was? Done in a period where the Java community wanted to standardize everything ?<br />For the recall JSR-94 is an industry standard that defines how Java programs deployed in J2SE or J2EE can acquire and interact with a rule engine. Being able to change engine implementation is a nice design approach, but as of today this specification is limited by the fact that there is still no standard to exchange rule definition between engines. So rule written for one engine can not be used by another one. This dramatic limitation is undermining the use of JSR94. And i'm still surprise to see architect asking compliance to it.<br /><br />Although the horizon is still blue: W3C is working on the final specification for Rule Interchange Format which should help to exchange executable rule definitions between engines supporting this specification. With RIF, JSR94 will make sense in the design of decision service.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-8931639897711251955?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-45975148951372339272008-09-12T16:29:00.000-07:002008-09-12T16:31:12.696-07:00SBVR thoughtsI spent two days last week to study the Semantics of Business Vocabulary and business Rule or SBVR specification. <a href="http://www.omg.org/spec/SBVR/1.0/">SBVR </a>is part of the OMG’s Model Driven Architecture (MDA) with the goal to capture specifications in natural language and represent them in formal logic so they can be machine-processed. It includes two specialized vocabularies:<br /><br /> * Vocabulary for Describing Business Vocabularies which deals with all kinds of terms and meanings.<br /> * Vocabulary for Describing Business Rules which deals with the specification of the meaning of business rules, and builds on top of the previous vocabulary.<br /><br />The meanings are declined into concepts, questions and propositions. The meaning is what someone intends to express or understands. A phrase such as "We deny the invoice if the medical treatment was done after one year of the accident" has a clear meaning for a claim processor within a car insurance company. Analysts need to transform logically this meaning into concepts which has a unique interpretation so that they can represent the business knowledge within a comprehensive vocabulary and rules.<br /><br />Business rules are declined into two possible classes:<br /><br /> * Structural (definitional) business rule which are about how the business chooses to organize the things it deals with, they are considered as necessity. In this context the statements describing the rule can describe the necessity, the impossibility or the restricted possibility.<br /> * Operative (behavior) business rule govern the conduct of business activity. They are considered as obligation and directly enforceable. When considering operative business rule it is important to look at the level of enforcement to specify the severity of action imposed by the rule in order to put or keep it in force. Statements to describe the rule include obligation, prohibition, and restricted permission.<br /><br />In SBVR, rules are always constructed by applying necessity or obligation to fact types. Fact type is an association between two or more concepts.<br /><br /><br />SBVR is defining a complete grammar to specify business logic. I was thinking it may be too complex to get easily accepted by the field, even if it may been seen as mandatory when moving to an extended SOA: There is a need to define enterprise ontology, to avoid reinventing the definition of terms used by all the services deployed in the SOA.<br /><br />From a project management perspective SBVR brings interesting risks as the project team members may engage in a huge effort of documentation, without delivering working software. Not so agile, this stuff. The just good enough should be kept in mind and a build by increment for this conceptual model may be a good approach.<br /><br />The second important risk will be linked to the size of the universe we have to cover. Defining all the vocabulary and business policies for a given business application will generate a lot of facts and rules that may be implemented in different environments or not implemented at all. Then the decision to select which rule goes where, will add time to the project.<br /><br />I had in mind to use a sub part of SBVR to help control the way we harvest rule during the discovery and analysis activities, but use it only in the context of what need to be implemented. The next ABRD drop for the end of the month will propose things around that.<br /><br />Any comments are welcome.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-4597514895137233927?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-61348102520183012332008-09-04T17:13:00.000-07:002008-09-04T17:22:15.777-07:00HP printer and business ruleAAAAAH. Today I discovered a very nice implementation of business rules done by HP. At home I have a HP photosmart 8250 printer who today displayed the message:"the ink cartridges are past its expiration date!"<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Bs56QIwqBnc/SMB6MO0IcEI/AAAAAAAAADg/Efz2y-6SyaI/s1600-h/HPrule.bmp"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Bs56QIwqBnc/SMB6MO0IcEI/AAAAAAAAADg/Efz2y-6SyaI/s400/HPrule.bmp" alt="" id="BLOGGER_PHOTO_ID_5242324316813029442" border="0" /></a>So each ink cartridge has a date and the code in the printer is testing this business rule to force me to buy new cartridges.... It is not enough to get printer drinking cartridge ink like we drink water under 100F, but in case we are not printing enough, this rule enforces business.<br /><br />Sad commercial behavior, bad rule, I'm just now hoping they are using a rule engine so I can change the rule on a fly... A dream.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-6134810252018301233?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-68613744876285813562008-08-29T09:12:00.000-07:002008-08-29T15:00:20.991-07:00IT and Business Analyst working together<span style="font-family:arial;">During one of my last web seminar I presented, I got the following question, I want to share the answer on the blog: "</span><!--[endif]--><span style="font-family:arial;">How much IT involvement would be necessary for making rule changes, assuming that the business person can change the rule and test it on their own?<o:p></o:p></span><span style="font-family:arial;">"</span><br /><p class="MsoListParagraphCxSpFirst" style="font-family:arial;"><span style=""><br /></span></p><p class="MsoListParagraphCxSpFirst" style="font-family:arial;"><span style="">IT is always responsible of the production platform. As such it is controlling the quality of the rules deployed to the servers. As the simplest process you can have the business users maintaining the rules within the web based BRMS component and even deploy to a test server to do some simulation testing and what-if analysis. Once the rule execution set is ready for deployment to production, IT can create baseline, extract the rule set from the rule repository and then apply some non-regression testing suite to verify that the rules are still working as expected. This is a good timing also to verify that any changes done at the data model level (logical or physical models) <span style=""> </span>are not impacting existing rules.</span></p><p class="MsoListParagraphCxSpFirst" style="font-family:arial;"><br /><span style=""> <o:p></o:p></span></p> <p class="MsoListParagraphCxSpMiddle" style="font-family:arial;"><span style="">The following diagram illustrates the different activities per role, I can easily imagines as a standard maintenance process:<o:p></o:p></span></p> <p class="MsoListParagraphCxSpMiddle" style="font-family:arial;"><span style=""><o:p> </o:p></span></p> <p style="font-family: arial;" class="MsoListParagraphCxSpMiddle"><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"> <v:f eqn="sum @0 1 0"> <v:f eqn="sum 0 0 @1"> <v:f eqn="prod @2 1 2"> <v:f eqn="prod @3 21600 pixelWidth"> <v:f eqn="prod @3 21600 pixelHeight"> <v:f eqn="sum @0 0 1"> <v:f eqn="prod @6 1 2"> <v:f eqn="prod @7 21600 pixelWidth"> <v:f eqn="sum @8 21600 0"> <v:f eqn="prod @7 21600 pixelHeight"> <v:f eqn="sum @10 21600 0"> </v:formulas> <v:path extrusionok="f" gradientshapeok="t" connecttype="rect"> <o:lock ext="edit" aspectratio="t"> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style="'width:467.25pt;" ole=""> <v:imagedata src="file:///C:\DOCUME~1\jboyer\LOCALS~1\Temp\msohtmlclip1\01\clip_image001.emz" title=""> </v:shape><![endif]--><!--[if !vml]--><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Bs56QIwqBnc/SLghcWHWmRI/AAAAAAAAADY/Xt3Pj7ilRrQ/s1600-h/IT-BA-BRMS-light-process.bmp"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Bs56QIwqBnc/SLghcWHWmRI/AAAAAAAAADY/Xt3Pj7ilRrQ/s400/IT-BA-BRMS-light-process.bmp" alt="" id="BLOGGER_PHOTO_ID_5239974937302046994" border="0" /></a><br /><!--[endif]--><!--[if gte mso 9]><xml> <o:oleobject type="Embed" progid="Visio.Drawing.11" shapeid="_x0000_i1025" drawaspect="Content" objectid="_1281506621"> </o:OLEObject> </xml><![endif]--><span style=""><o:p></o:p></span></p> <p class="MsoListParagraphCxSpLast" style="font-family:arial;"><span style="">So IT is still responsible of production quality control, version control, software components integrity, production server monitoring and management and nothing will change in close future. <o:p></o:p></span></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-6861374487628581356?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-16632033045393206762008-08-22T10:36:00.000-07:002008-08-22T15:03:58.120-07:00CEP and BRE<p class="MsoNormal">I spent the last four months to dig into <a href="http://complexevents.com/?p=399">Complex Event Processing</a> offerings and especially how BRMS and CEP can work together to support new type of business applications, and to move to agile IT architecture. As stated by Professor David Luckham in his book the ‘Power of events’: future applications need to address the following problems</p> <ul style="margin-top: 0in;" type="disc"><li class="MsoNormal" style="margin-top: 3pt; margin-bottom: 3pt; line-height: normal;">Monitor events at every level of the IT systems</li><li class="MsoNormal" style="margin-top: 3pt; margin-bottom: 3pt; line-height: normal;">Detect complex patterns of events, consisting of events that are widely distributed in time and location of occurrence</li><li class="MsoNormal" style="margin-top: 3pt; margin-bottom: 3pt; line-height: normal;">Trace causal relationship between events in real time.</li><li class="MsoNormal" style="margin-top: 3pt; margin-bottom: 3pt; line-height: normal;">Take appropriate action when patterns of events are detected.</li></ul> <p class="MsoNormal"><br /></p><p class="MsoNormal">Adding CEP engine within our IT architecture will help bring agility as we can define complex patterns of events, hot deploy them, execute them, and improve their scope by time. CEP solution today uses a language close to SQL to define statement which filters, aggregates, joins events, and applies pattern matching on stream of events. Those statements are deployed to a CEP engine which will continuously evaluate them on a flow of events, when the conditions match subscriber applications (or code) will receive the complex or synthetic event and do something about it. If we consider those statements as rules, BRMS is a good candidate to manage them as it offers all the efficient tooling to consider those rules as asset with their own life cycle.<br /></p><p class="MsoNormal"><br /></p><p class="MsoNormal">As of today BRMS uses Rete based engine to evaluate and fire if-then-else type of rule. An event processing statement looks more as a query. For example if we want to extract bid events on given car brand, event occurring in a time window of 15 seconds and we want to compute the average price (one of the attribute of the BidEvent). The statement may look like:</p> <p class="MsoNormal"><span style="font-family:courier new;"><span style="font-weight: bold;"> select </span>*, avg(price) as avgprice<br /></span></p><p class="MsoNormal"><span style="font-family:courier new;"><span style="font-weight: bold;"> from </span>BidEvent(itemName='BMW')<span style="font-weight: bold;">.win:time</span>(15 seconds)</span> </p> <p class="MsoNormal"><br /></p><p class="MsoNormal">I’m using the <a href="http://www.espertech.com/download/">Esper </a>open source product EPL syntax to illustrate this example. This is a very simple ‘rule’ with the expressiveness of SQL. Easy to understand for a programmer but with big limitations when we need to communicate with the business user on what rule is doing. This is more true in real application. Most of the time those statements will become more complex to understand (even for programmer) when such statements combines joins, aggregation, multiple streams and database lookup. Putting a high level language on top of this SQL based approach will help on that matter. JRules for example offers a framework called BRLDF to define business language on top of lower programming language.</p> <p class="MsoNormal"><br /></p><p class="MsoNormal">Those statements have a business motivation and CEP applications are really pushed by business users as those technologies are helping to identify pattern of events relevant to the business. We are moving to real time BI. So with this business dimension we can consider CEP statements as business rules. This means BRMS can support the management of those statements, and offers an integrated environment for business analysts and developers.</p> <p class="MsoNormal"><br /></p><p class="MsoNormal">Now, one of the main questions is the deployment model. Does Rete based engine support well the high throughput and low latency of current CEP application requirements? The response is very close to no, if we speak about millions of events per second, rules to apply on sliding or jumping time window… If the constraint on the number of events decreases BRE may be a good solution. We are using <a href="http://www.ilog.com/products/jrules/index.cfm">JRules </a>or Rule C++ in the telecoms industry since mid 90s for alarm filtering and correlation applications and it was the main driver of the BRE demand at that time. So we can use Rete for event processing. In fact in long term we can imagine having different engines under the same product or one engine which will pick up the more efficient algorithm to use according to its deployment model. I will post some example of rule using event in a next post.</p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-1663203304539320676?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-13833217793802948442008-07-20T09:20:00.000-07:002008-12-11T12:23:38.863-08:00Example of a rule analysis<span style="font-size:100%;">I will try to do some specific rule analysis to illustrate some of the ABRD concepts. </span><span style="font-size:100%;"> </span><span style="font-size:100%;">ABRD proposes to do the analysis activities as soon as possible and in parallel of the rule discovery, this helps to identify the issues, gaps, and clarify the rules under scope. So let imagine a claim processing application for a car accident. There are some injured persons who reported the accident claim and with some medical providers who send medical bills to the insurance company. One important step of the rule discovery is to clearly understand the business process. For this example we can outline the basic process for claim processing looks like the following diagram:</span><p face="arial" class="MsoNormal"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Bs56QIwqBnc/SIOh4gSjp-I/AAAAAAAAAC4/K3x1jW1shvs/s1600-h/simpleClaimProcess.bmp"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 450px; height: 47px;" src="http://3.bp.blogspot.com/_Bs56QIwqBnc/SIOh4gSjp-I/AAAAAAAAAC4/K3x1jW1shvs/s400/simpleClaimProcess.bmp" alt="" id="BLOGGER_PHOTO_ID_5225197984792422370" border="0" /></a></p> <p face="arial" class="MsoNormal">In brown the decision points that are rule rich, so will be mapped to a rule set. Taking one rule from the adjudication decision point we will build a domain model:</p> <p style="font-family: arial;" class="MsoNormal">“<i style="">Ask for an expert audit if one of the treatments includes an emergency room treatment or an ambulance transfer done on a day after the accident.</i> “</p> <p style="font-family: arial;" class="MsoNormal">Claims adjudication in insurance refers to the determination of a member's payment, or financial responsibility versus the company ones. So obviously the company wants to pay for what it commits too no more. <span style=""> </span>Here the policy states that we do not want to pay for emergency visit or ambulance transportation which was not on the same day of the accident. For the emergency room we can have some exception, if the injured person came back two days later for headache, or pains that could be consequences of the accident, we need to get some complement of information.<span style=""> </span>For ambulance there is mostly no reason to pay. So from this little analysis we need to develop two rules: one for the emergency room case and one for the ambulance as the actions are different. One action will trigger some audit request and the other action will set the reimbursement amount to zero.</p> <span style="line-height: 115%;font-family:arial;font-size:100%;" >The analysis process starts by looking to the business terms used by the rule. Here we can highlight: <span style="font-weight: bold;">audit</span>, <span style="font-weight: bold;">treatment</span>, day of accident (also referenced as <span style="font-weight: bold;">day of loss</span>) and type of <span style="font-weight: bold;">treatment </span>like emergency room, ambulance transfer.</span><span style="line-height: 115%;font-family:arial;font-size:100%;color:black;" > </span><span style="line-height: 115%;font-family:arial;font-size:100%;" >Let starts by the fact that the claim is related to a car accident, this means our object model should support a claim type with a day of loss concept attached to it. There is at least one injured person who needs medical treatment, and so the claim relates to the involved persons in the accident. Injured person has injury and related treatments. A medical bill includes the description of the medical treatment done on the patient. By discussing with the claim processor or google ‘medical procedure code’ we can understand that each treatment has a code that we can use to get the type of treatment. The medical bill in fact has some legal form like the UB92 or HCFA-1450. From those forms we can also build our data model.<br /><br />The audit may include a list of reasons so that we can manage in one audit multiple questions or items to review. The claim and the medical bill will follow a life cycle which will be supported by a state machine. Part of the state machine management will be done by the rule, part by the application. For example when rules are finding issue on the claim they will change its status. So from these descriptions we can build the following UML class diagram<br /><br /></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Bs56QIwqBnc/SIOjW9-WqqI/AAAAAAAAADA/74OyxkBnFso/s1600-h/claim-model.bmp"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Bs56QIwqBnc/SIOjW9-WqqI/AAAAAAAAADA/74OyxkBnFso/s400/claim-model.bmp" alt="" id="BLOGGER_PHOTO_ID_5225199607668452002" border="0" /></a><span style="font-size:100%;"><span style="line-height: 115%;font-family:";" >Once we have this UML diagram, <span style=""> </span>let generate Java classes, load them in a java project within Eclipse and tune this model so it will be more efficient from writing rules, using a test driven development approach and refactoring. I encourage using <a href="http://maven.apache.org/">Maven </a>to package the project and to be able to efficiently manage jar dependencies in your project. Once we did so we can start JRules Rule Studio and create the Business Object Model entry. I will detail that in a next blog<span style="text-decoration: underline;">.</span></span></span><a href="javascript:void(0)" tabindex="11" onclick="return false;"><span></span></a><br /><span style="line-height: 115%;font-family:";font-size:11;" ><br /></span><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-1383321779380294844?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-73836614404684473782008-07-18T14:00:00.000-07:002008-07-18T14:03:37.751-07:00Very good success with recent webseminarsHi<br />Thank to all of you to attempt my last web seminars on ABRD, SOA, and Effective rules writing. You were around 850 to register and close to 400 to attempt. This is showing an interest in best practices around business rules and their implementation. Feel free to ask me more questions by email, and I will start to respond on this blog and on the isis blog to the more common questions.<br /><a href="javascript:void(0)" tabindex="10" onclick="return false;"><span></span></a><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-7383661440468447378?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-90850579732277665842008-06-12T12:06:00.000-07:002008-12-11T12:23:39.051-08:00SOA and BRMSWell I did not post since a while. I was working on an interesting subject related to Complex Event Processing. I will detail that in close future.<br /><br />In the mean time coming back to our purchase Order sample, I will take the architect's hat, and outline the deployment of BRMS within a SOA approach.<br /><p class="MsoNormal">SOA has proven to be a great technology to make enterprises more agile. With their ability to separate business logic from its implementation, BRMS adds more capabilities to the SOA. SOA is a progressive architectural style for creating and using business tasks that are packaged as services. The main goal of these services is to expose loose coupled business functions to facilitate deployment, combination, and reuse within different applications. SOA supports the integration of heterogeneous systems, as soon as they are exposed over the internet using standard protocols like HTTP, XML, unified interface definition (WSDL).</p> <p class="MsoNormal">Every business has rules, and business users want complete control and visibility over these rules. A BRMS decouples an application's business logic from its data access and from its flow control. Decision logic is exposed behind decision services which support some business task. Such services are ValidateCustomer, ValidatePurchaseOrder, CheckCreditHistory… Using BRMS those service delegates the processing to a rule set deployed within a Rule Engine. Those rule engine can be managed using a rule execution server which provides the pooling mechanism, rule set management and execution monitoring functions. </p> <p class="MsoNormal">A business application leveraging MDM, BPEL and BRMS may look like</p> <p class="MsoNormal"><br /></p><p class="MsoNormal"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Bs56QIwqBnc/SFF0qOnSeOI/AAAAAAAAACw/vuF3e_CO5jQ/s1600-h/soa-brms.bmp"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_Bs56QIwqBnc/SFF0qOnSeOI/AAAAAAAAACw/vuF3e_CO5jQ/s400/soa-brms.bmp" alt="" id="BLOGGER_PHOTO_ID_5211074512670587106" border="0" /></a> </p> This generic diagram can be used to explain how BRMS can be deployed in SOA. In dark blue the components coming with ILOG BRMS.<br /> <p class="MsoNormal">The SOA is organized in a set of business services used by the business application logic. This business application layer is modeled using use cases diagram or business process map, and may be implemented using BPEL orchestration, and/or a standard Model View Control web application. The business services leverage lower level services, which I packaged in a technical service layer. They support lower granularity service like accessing business objects (DAO for Creating Reading Updating Deleting data), master data like product definition, enumerated domain value, sub process flows, web services and rule execution server. In this logical view of the architecture I do not need to expose the Enterprise Service Bus which may need to be used as a communication layer between the application logic and the business services.</p> <p class="MsoNormal">In fact this diagram even if it outlines one application, can be applied for multiple applications. The business and technical services can be reused to support other business cases.<br /></p><p class="MsoNormal">Rule developer creates the rule projects structure, the data model used by the rules, the rule execution flow, prototypes some rules, and then gives the hand to the business analysts to complete the rule authoring activity. Business Analysts use the web based interface to manage the full life cycle of the rule. Rules are persisted in a rule repository. The deployment of a rule set can be done without stopping the core application, and can be controlled within the Monitoring and Control environment of the production platform. Using a BRMS the IT staff and business analyst can work closer together as they are using the same high level language to write business rule, they understand the rule flow, so the long term maintenance of the application is greatly enhance. </p> <p class="MsoNormal">Within a SOA the BRMS is bringing an effective and efficient mechanism to manage the decision logic of any business application. The architect needs to design the decision service so they can be reusable, then the rule architect needs to design the rule execution flow to take into account some specificities of context of execution. Rule set reuse may infer some tests on the context of the caller. This context is exposed to the rule engine as a fact in the working memory, and the rule flow can have some initial tasks to test and apply different branching according to the state of this context.</p> I will dig into code detail later.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-9085057973227766584?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-8066207199753885602008-05-11T16:01:00.000-07:002008-12-11T12:23:39.429-08:00A sample to illustrate the ABRD approachThere are a lot of requests from colleagues, customers, readers of ABRD to get a sample covering the main activities of ABRD from A to Z. I'm working on a book with a friend of me, which will cover all the ABRD activities in detail, and provide detailed samples. But for the moment I will take a simple purchase order process. There are a lot of samples on the web around this process, but here I'm focusing on a simple version of it.<br />This Order Process may betypical B2B scenario, in which multiple stateful services interact with each other. Two sources for the order request: one online with an Internet customer submitting an order on a Web page, and one using an automatic purchase order issued by a well known authenticated customer-partner.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_Bs56QIwqBnc/SCd8c3t8ZLI/AAAAAAAAACg/UOkg7QM-_5s/s1600-h/PurchaseOrderProcessMap.bmp"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_Bs56QIwqBnc/SCd8c3t8ZLI/AAAAAAAAACg/UOkg7QM-_5s/s400/PurchaseOrderProcessMap.bmp" alt="" id="BLOGGER_PHOTO_ID_5199261130257360050" border="0" /></a> <p class="MsoNormal">In ABRD using a business process centric approach for discovery – analysis – implementation we start by doing the analysis of the process, then we go to the data modeling, rule harvesting, and service design in parallel like the following diagram outlines it: </p> <p class="MsoNormal"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Bs56QIwqBnc/SCd85Xt8ZMI/AAAAAAAAACo/13bGt3mtsKY/s1600-h/ParallelActivitiesAbrd.bmp"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_Bs56QIwqBnc/SCd85Xt8ZMI/AAAAAAAAACo/13bGt3mtsKY/s400/ParallelActivitiesAbrd.bmp" alt="" id="BLOGGER_PHOTO_ID_5199261619883631810" border="0" /></a></p> <p class="MsoNormal"><o:p> </o:p></p> <p class="MsoNormal">During the process modeling the rule and process analysts search for <span style="">verbs which involve mental processing or thinking</span> like <span style="">check, qualify, compute, calculate, estimate, evaluate, determine, assess, compare, verify, validate, confirm, decide, diagnose.. to identify activity which has business decision and logic, applies some business knowledge... Those activities should be what we call "decision rich" and have the focus of the rule analyst to discover rule.<br /></span></p> <p class="MsoNormal"><o:p> </o:p></p> <h2 style="">Purchase Order Process description</h2> <p class="MsoNormal">The process is initiated when a customer online submits a product order, or when an automatic purchase order issued by a well known authenticated customer is received on one EDI link. <span style=""> </span>A customer validation step is executed using customer data and product request data. Based on the product data provided in the order, it is checked whether the product is on stock. If the product is available, the price for the shipment of the ordered product is determined and presented back to the customer. If the product is not available, a message is sent back to the customer by email or web page (if still online). This last case also triggers email to product manager to provision the stock for this product. </p> <p class="MsoNormal">The total price of the order is calculated from the product price, the customer business condition, loyalty program… and the shipment price. When the charging and the shipment have been performed successfully, the order is filed and the process ends.</p> <h2 style="margin-left: 0in; text-indent: 0in;">Process Analysis</h2> <p class="MsoNormal">Looking on this process and the description above we can extract the following decision point where business rule will apply:</p> <table class="MsoNormalTable" style="border: medium none ; width: 438px; border-collapse: collapse; height: 438px;" border="1" cellpadding="0" cellspacing="0"> <thead> <tr style="height: 18.85pt;"> <td style="border-style: solid none none solid; border-color: rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color rgb(79, 129, 189); border-width: 1pt medium medium 1pt; padding: 0in 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 50%; width: 77.55pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 18.85pt;" valign="top" width="103"> <p class="table"><b style=""><span style="">Decision Point<span style=""> </span>Name<o:p></o:p></span></b></p> </td> <td style="border-style: solid solid none none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color -moz-use-text-color; border-width: 1pt 1pt medium medium; padding: 0in 5.4pt; background: rgb(217, 217, 217) none repeat scroll 0% 50%; width: 201.85pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 18.85pt;" valign="top" width="269"> <p class="table"><b style=""><span style="">Description<o:p></o:p></span></b></p> </td> </tr> </thead> <tbody><tr style="height: 37.5pt;"> <td style="border-style: solid none solid solid; border-color: rgb(79, 129, 189) -moz-use-text-color rgb(79, 129, 189) rgb(79, 129, 189); border-width: 1pt medium 1pt 1pt; padding: 0in 5.4pt; width: 77.55pt; height: 37.5pt;" valign="top" width="103"> <p class="table"><span style="">Validate Customer data<o:p></o:p></span></p> </td> <td style="border-style: solid solid solid none; border-color: rgb(79, 129, 189) rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0in 5.4pt; width: 201.85pt; height: 37.5pt;" valign="top" width="269"> <p class="table">Verify the customer information – data present or not, and black listed customers<o:p></o:p></p> <p class="table"><span style=""> </span><span style=""><o:p></o:p></span></p> </td> </tr> <tr style="height: 37.5pt;"> <td style="border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color rgb(79, 129, 189) rgb(79, 129, 189); border-width: medium medium 1pt 1pt; padding: 0in 5.4pt; width: 77.55pt; height: 37.5pt;" valign="top" width="103"> <p class="table"><span style="">Validate Purchase Order<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 201.85pt; height: 37.5pt;" valign="top" width="269"> <p class="table">Verify there is no fraud in the purchase orders or on a set of purchase order coming over a time period, , verify the data are correct<span style=""><o:p></o:p></span></p> </td> </tr> <tr style="height: 37.5pt;"> <td style="border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color rgb(79, 129, 189) rgb(79, 129, 189); border-width: medium medium 1pt 1pt; padding: 0in 5.4pt; width: 77.55pt; height: 37.5pt;" valign="top" width="103"> <p class="table"><span style="">Calculate Total Price<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 201.85pt; height: 37.5pt;" valign="top" width="269"> <p class="table">As the price may account for a loyalty program, marketing campaign, stock level, and other business dimensions, business rules are relevant here to compute the price outside of a simple addition.<o:p></o:p></p> </td> </tr> <tr style="height: 37.5pt;"> <td style="border-style: none none solid solid; border-color: -moz-use-text-color -moz-use-text-color rgb(79, 129, 189) rgb(79, 129, 189); border-width: medium medium 1pt 1pt; padding: 0in 5.4pt; width: 77.55pt; height: 37.5pt;" valign="top" width="103"> <p class="table"><span style="">Get Shipment report<o:p></o:p></span></p> </td> <td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(79, 129, 189) rgb(79, 129, 189) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0in 5.4pt; width: 201.85pt; height: 37.5pt;" valign="top" width="269"> <p class="table">It may be possible to receive a set of events from the shipment company to aggregate and correlate to the same purchase order so that customer can be notified on a major type of events as well as the internal management team.<o:p></o:p></p> </td> </tr> </tbody></table><br />A decision point table is an important deliverable of the analysis. It can be built during the inception phase by the team responsible to outline the project high level scope. If it is not present the project team has to quickly develop it during the first iteration of the project.<br /><br />We will detail the outcome of the rule discovery in a next post.<br /><p class="MsoNormal"><o:p> </o:p></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-806620719975388560?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com2tag:blogger.com,1999:blog-6794234910187525180.post-54196932256602837742008-05-11T15:52:00.000-07:002008-05-11T16:01:05.694-07:00Successful webseminar on ABRDHi<br />Thanks a lot, to all the attendees on last week <a href="http://www.agileitarchitecture.com/2008/04/book-your-agenda-may-7-1000-am-pst-web.html">web seminar</a> , we got records of registered persons and connected ones. There are a lot of questions, and I could not respond to all of them. So I will use the BLOG to answer the questions related to Agile Business Rule Development and other architecture discussions.<br />For Europe we plan to do a second webseminar, I will announce it.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-5419693225660283774?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-25463573678107846952008-04-25T12:00:00.000-07:002008-12-11T12:23:39.944-08:00SOA maturity Matrix, Agile Chain Management System<img src="file:///C:/DOCUME%7E1/jboyer/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /><img src="file:///C:/DOCUME%7E1/jboyer/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" /><img src="file:///C:/DOCUME%7E1/jboyer/LOCALS%7E1/Temp/moz-screenshot-2.jpg" alt="" /> <p style="text-align: justify;" class="MsoNormal">Today I would like to present a very nice article in a IT french journal “<a href="http://www.solutions-logiciels.com/">Solutions logiciels</a>”. This is related to <a href="http://www.sustainableitarchitecture.com/">sustainable architecture</a>. I’m working with Pierre Bonnet, the author of this article, on this matter, and try to share experiences on BRMS, as one of the corner stones of the <a href="http://www.sustainableitarchitecture.com/is_agility">Agility Chain Management System</a>, I will try to summarize the main points of this article in french as it is relevant over the world:</p><div style="text-align: justify;"> </div><p style="text-align: justify;" class="MsoNormal">The IT infrastructure in a lot of companies suffers from a lack of investment to modernize the legacy, which adds complexity when development team deploys new applications. <span style=""> </span><span style=""> </span>Business and IT managers are focusing in short term ROI putting on hold long term investments needed to build a long term sustainable architecture.</p><div style="text-align: justify;"> </div><p style="text-align: justify;" class="MsoNormal">Added to these, we can foreseen three layers of IT staff: the senior with their knowledge of the current legacy systems and the business requirements, the intermediate layer with people skilled in client/server and EAI <span style=""> </span>technologies, and the younger one with object oriented skill, and web, web services development backgrounds. Younger are involved in tactical projects, using agile methodology, but most of the time generate rigid systems not able to change and supporting a long term logical architecture. The seniors are starting to retreat leaving a deep gap in knowledge which is most of the time not transferred to younger population. These are future bombs in the IT organization. What to do? <span style=""> </span></p><div style="text-align: justify;"> </div><p style="text-align: justify;" class="MsoNormal">IT management needs to start long term projects to rebuild the IT architecture for the next generation. Pierre proposes to start by looking at what is the current situation at the enterprise level and being able to build a plan to transform the IT architecture for long term needs. The second point is to take risk: we can manage an IT organization just by controlling the existing. The rapid changes in economy, new regulations, and technology progresses force managers to take risky choices. But the risk is also to look at change in IT staff population, skill transfer, and risk to deploy new application on a fragile architecture.<br /></p><p style="text-align: justify;" class="MsoNormal">Finally his last point is about clearly communicating to business and executive management about the non quality contract of current IT system, the medium to long term degradation of the IT services, and so the company competitive advantage. The communication has to leverage a strong action plan leveraging a risk management plan. </p><div style="text-align: justify;"> </div><p style="text-align: justify;" class="MsoNormal">Three principles support the argumentation:</p><div style="text-align: justify;"> </div><p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; text-align: justify;"><!--[if !supportLists]--><span style=""><span style="">1-<span style=";font-family:";font-size:7;" > </span></span></span><!--[endif]-->The re-engineering of any IT architecture cannot being done in one shot. The diagram below presents a progressing path to migrate existing architecture to a sustainable one. Starting from a SOA to expose the existing legacy functions as services, then moving to the extended SOA where BPM, BRMS and MDM are used in conjunction to offer agility at the service level for change in referential data, decision logic, and business process. The end of the path references the use of those technologies for the enterprise architecture.</p><p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Bs56QIwqBnc/SBIreDcHvYI/AAAAAAAAACQ/7IbdRJSU6fg/s1600-h/PathToExtendedSoa.bmp"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Bs56QIwqBnc/SBIreDcHvYI/AAAAAAAAACQ/7IbdRJSU6fg/s400/PathToExtendedSoa.bmp" alt="" id="BLOGGER_PHOTO_ID_5193261115630927234" border="0" /></a></p><div style="text-align: justify;"> </div><p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; text-align: justify;"><!--[if !supportLists]--><span style=""><span style="">2-<span style=";font-family:";font-size:7;" > </span></span></span><!--[endif]-->The Agility Chain Management System: Using the MDM, BRMS and BPM technologies, IT staff can start by externalize referential data and parameters using the MDM, business rules and decision logic using BRMS, and orchestrate services and support business process with BPM.</p><div style="text-align: justify;"> </div><p class="MsoNormal" style="margin-left: 0.5in; text-indent: -0.25in; text-align: justify;"><!--[if !supportLists]--><span style=""><span style="">3-<span style=";font-family:";font-size:7;" > </span></span></span><!--[endif]-->A Enterprise Level Methodology: the migration path enforces a strong use of methodology like <a href="http://www.togaf.org/">TOGAF</a>, Praxeme, CEISAR) </p><div style="text-align: justify;"> </div><p class="MsoNormal" style="margin-left: 0.5in; text-align: justify;">Pierre addresses in this article some very important points and principles to take care during a SOA migration. Currently we are seeing a lot of project focusing on re-vamping legacy function as web services but this is not the end of the story of a SOA. I like very much the path to the extended <span style=""> </span>SOA and the maturity matrix as a tool to explain to IT management the long term vision. Project managers can position where their project stands on this matrix to clearly articulate what is the value of their project’s product for the long term IT vision.</p><div style="text-align: justify;"> </div><p class="MsoNormal" style="margin-left: 0.5in; text-align: justify;">I modified slightly the original maturity matrix to clearly mention that any project falling into the bottom-right corner is the beginning of decision service re-engineering using the MDM-BRMS-BPM technologies, that IT development team has to leverage for the long run. When people embrace those technologies they are seeing the value and how to leverage them at the enterprise level. <span style="">As you can see green path is the way to go and the red path is going no-where as it falls back into a rigid application behind a web service...<br /></span></p><div style="text-align: justify;"> </div><p class="MsoNormal" style="margin-left: 0.5in; text-align: justify;">As an example of this kind of project we can take a claim processing application where the development team and architect decided to migrate one of their service (Claim Coverage Verification) to use business rules to verify the coverage of the insured person around his claim. MDM was used to define all the referential data as the medical codes, the US states, zip code,.. and other application parameters. The legacy application offers some data and business services with a re-vamped web service approach, and the BPM was used to call the services, to dispatch the set of XML documents over the process steps, and to offer the GUI for the claim processors: the actors of the business.</p><p class="MsoNormal" style="margin-left: 0.5in; text-align: justify;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Bs56QIwqBnc/SBIuyDcHvZI/AAAAAAAAACY/rYV_kMGEQOg/s1600-h/ExtendedServiceACM.bmp"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Bs56QIwqBnc/SBIuyDcHvZI/AAAAAAAAACY/rYV_kMGEQOg/s400/ExtendedServiceACM.bmp" alt="" id="BLOGGER_PHOTO_ID_5193264757763194258" border="0" /></a></p><div style="text-align: justify;"> </div><p class="MsoNormal" style="margin-left: 0.5in; text-align: justify;">Starting from there the team can enhance the migration of such application and design reusable, agile technical and business services. </p><div style="text-align: justify;"> </div><p style="text-align: justify;" class="MsoNormal"><o:p> </o:p></p><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-2546357367810784695?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-37482388170808433062008-04-22T13:37:00.000-07:002008-04-22T13:39:26.267-07:00Book your agenda: May 7 10.00 am PST. Web seminar on ABRD<p class="subHeader">Make Developing Business Rule Applications Easier</p> <p><b>What:</b> 60-minute best practices webinar<br /><b>When:</b> Wednesday, May 7<br /><b>Who should attend:</b> Architects, developers, application programmers, software engineers, IT senior managers, IT team leaders, and anybody who wants to learn more about developing business-rule applications</p> <p><b>Learn about a rules-specific methodology designed for short turnaround times: Agile Business Rule Development (ABRD)</b></p> <p>When you're building business rule applications, generic software-development methodologies just aren't enough.</p> <p><b>Agile Business Rule Development</b> (ABRD) is a step-by-step process for developing business rule applications. An iterative methodology, ABRD employs agile software-development values. Rule development is organized as a series of cycles: discovery, analysis, authoring, validation, and deployment. Your team stays on schedule, delivering outstanding business rule applications.</p> <p>Attend this free <b>one-hour webinar</b> and learn how to: </p><ul><li>Leverage ABRD as first open-source methodology for business rules </li><li>Implement and deploy rules in an SOA or BPM context </li><li>Engage in rule discovery and analysis </li></ul><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-3748238817080843306?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-7772996099492731122008-04-02T16:14:00.000-07:002008-12-11T12:23:40.117-08:00Software Development Life Cycle for BR-BPEL application<div style="text-align: justify;">The purpose of this article is to present an integrated software life cycle for development team who wants to leverage the capabilities offered by technologies such as BPM-BPEL and Business rules management system.<br /><br />Each new business application development is triggered by a business needs to support or enhance and improve business efficiency. Even with an Agile approach, to trigger the project, architect, business users, project manager and project sponsor have to work together during the Inception phase, to define the business case, the requirements and justifications of the project. Once the project funded, the team may work on specification and requirement documents. I simplify a little here because in reality a lot more documents may be produced, but the goal here is to present how those requirements are supported in an Agile way using the BRMS and BPM products and not discussing about requirements management. So let state the specifications are our main entry point to detail the major work that needs to be done for developing the applications. The format of the specification can be user stories, or a more detailed description. (a good reference to write specifications and user case is <a href="http://alistair.cockburn.us/index.php/Resources_for_writing_use_cases">Alistair Cockburn work</a> ). Specifications are classically managed by a standard SDLC which includes design, build, test, and deploy of working code to the different staging platforms (development, test, or production).<br /><br />The Agile approach enforces short iterations to deliver quick value to the business. The blue tasks in the diagram below represent a set of iterations that build the core of the business application.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Bs56QIwqBnc/R_QUP4DWemI/AAAAAAAAACI/UStfQ2yh5Nk/s1600-h/req2bpel2br.bmp"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_Bs56QIwqBnc/R_QUP4DWemI/AAAAAAAAACI/UStfQ2yh5Nk/s400/req2bpel2br.bmp" alt="" id="BLOGGER_PHOTO_ID_5184791333987318370" border="0" /></a><br />The horizontal axe of this diagram represents time. The pools are used to contain activities executed in the different development environment. The top pool is the business analyst team which is triggering change to the application. When the development team is using BPEL and BRMS technologies, there are parts of the specifications which go directly to those components: Business processes will be implemented using BPEL and BPM process map, and business rules using BRMS. In the first release (you can see a release as a vertical slice of the above diagram) the agile value of each of these technologies is not clearly articulate. This is true that BPEL and BRMS help to develop in less time, and adopt an agile approach of development. But the main value proposition will come in longer term by the ability to efficiently support the two types of change requests the business user may ask:<br />• The business rules and policies changes: business want to improve the decision done by the rule engine<br />• The process tuning or improvements: the process needs to change due to legal constraints, better error and exception path management, or for better execution.<br /><br />Business Rule changes will be done in the BRMS using a web based interface or IDE like JRules Rule Studio. The hot deployment capability of a rule set authorizes to deploy a newly updated rule set in a question of seconds. This helps a lot to support quick change on the decision logic attached to decision services called by the BPEL process instance. Rule Developer can do a lot of try and catch in a pre-production environment to improve the quality of the rule set, so the quality of the decision. Some IT organization implements the “champion – challenger” pattern to evaluate a new rule set against the production one. The champion rule set is in production and process transaction request with a certain level of metrics: metric can be number of automatic decision, or other business key performance indicator. On the pre-production server, the challenger rule set receives the same data flow, and metrics are compared. If challenger beats the champion it becomes the new champion in production.<br /><br />Business process improvement requests are managed using the BPMS system, and a new process definition can be released to the different platforms. We can definitively see more change requests coming for business rules change, than on the business process: When we have a working process it is more sensitive to change it. Still business process changes will happen to support for example an improvement of the exception management, or to find some short-cut on the global processing so that the time to complete the process is better.<br /><br />The core application can still evolve with a new release path. Change to the GUI, or data model will most likely be managed by a new release of the full application.<br />As a conclusion it is important to consider using an agile development methodology which support quick change when using BPM – BPEL – BRMS technologies, if you do not adapt your way to develop business application, you may lose the opportunity to be agile.<br /></div><div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-777299609949273112?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com4tag:blogger.com,1999:blog-6794234910187525180.post-66044184223178346682008-03-20T10:53:00.000-07:002008-12-11T12:23:40.300-08:00Industry First Open Source Methodology for Business RulesYesterday ILOG Inc announced his donation of his Rule Based Methodology to Eclipse Consortium. I need to provide some explanations on what this donation is about. The Agile Business Rules Development methodology (ABRD) is the industry’s first free, vendor-neutral methodology delivered as an Eclipse Process Framework (EPF)OpenUp plug-in. ABRD provides a step-by-step process for developing business applications using technologies such as Business Rule Management System, BPM, BPEL. <br /> <br />ABRD mitigates the risk associated with new business rules initiatives by providing a well documented and structured approach for developing rule-based applications. ABRD allows organizations to avoid using ad-hoc processes or having to expend significant time and effort creating their own best practices.<br /><br />In case you never have a look at EPF, Eclipse Process Framework provides tools for software process engineering to develop methodology. It comes with content knowledge organized in library, and with a tool, EPF Composer, which enables process engineers and managers to implement, deploy, and maintain processes for organizations or individual projects based on the content of the library. <br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Bs56QIwqBnc/R-KpVIDWelI/AAAAAAAAACA/QkYFEoJBUmA/s1600-h/EPFComposer_small.bmp"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_Bs56QIwqBnc/R-KpVIDWelI/AAAAAAAAACA/QkYFEoJBUmA/s400/EPFComposer_small.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5179888701833378386" /></a><br /><br />The goal for EPF is to deliver a platform for producing software development practices, how-to, common definition and vocabulary, and processes with task, role, work product and guidelines definitions. Libraries are physical containers for knowledge content, process configuration and other parameters to publish the content as a set of web pages. Method content describes what is to be produced, the necessary skills required and the step-by-step explanations describing how specific development goals are achieved.<br />Processes describe the development life cycle. They take the method content elements and relate them into semi-ordered sequences that are customized to specific types of projects. They express who, when, what work will be performed.<br />EPF Composer provides a knowledge base of intellectual capital which we can browse, manage and deploy. This knowledge base organized in plug-in forms the basis for developing processes. We can define Roles, Tasks, Work Products, and Guidances in a hierarchy of folders named Content Packages. All content can be published to html and deployed to Web servers for distributed usage. Finally process engineers and project managers can select, tailor, and rapidly assemble processes for their concrete development projects. Once content is defined you can define the process building blocks, called capability patterns, which represent best development practices for specific disciplines, technologies, or management styles. <br /><br />'abrd_openup" is a plug-in which extends openUp. From there you can reuse the content to develop your own plug-in. I recommend to extend ABRD without modifying it, so that you can leverage future release of it. If you want to contribute to abrd_openup you can send me email or comment on this blog. I will integrate most of the contribution in each release of the plug-in.<br />Have EPF fun!.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-6604418422317834668?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0tag:blogger.com,1999:blog-6794234910187525180.post-62074066318540901182008-02-27T17:21:00.000-08:002008-03-20T14:13:09.487-07:00Agile Business Rule Development EPF plugin.<a href="http://www.eclipse.org/epf">Eclipse Process Framework</a> just integrated the Agile Business Rule Development <a href="http://www.eclipse.org/epf/downloads/openup/openup_downloads.php">plugin </a>into the OpenUp library. This abrd_openup plugin addresses the development of business application using rule engine technology and Business Rule Management System. This is pre-release 1.0 but it already integrates a lot of content around rule discovery and analysis. I am working on the architecture track and will be able to deliver a new version in March. So any comments or contributions are welcome.<br />Please download EPF and the OpenUp library and let me know your thoughts.<div class="blogger-post-footer"><img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6794234910187525180-6207406631854090118?l=www.agileitarchitecture.com'/></div>JBoyhttp://www.blogger.com/profile/00147585132386859260jerome.boyer@gmail.com0