Tuesday, December 27, 2011

BPM used as monolithic L4G

With my last months studying BPM products, I'm quite impressed by product marketing fliers and other 'best pratices'/ training materials putting emphasis to the fact that traditional, code driven, approach to develop business application is bad, and with BPM it is better to have a unique artifact in a central repository, for managing all the elements of a business application such as UI, information model, service definitions, connectors, business rules, process logic.
I'm confused by the lack of applying basic design and architecture best practices such as separation of concern, and artifact life cycle. With monolithic process application, any change to the information model, or the UI enforce migrating all the process instances running on the runtime server. This is interesting to note that SOA reference architecture, defines, UI services separated from process, from data, and rules services. Which makes perfectly sense for re usability, components life cycle, flexible, sustainable architecture.
Do not apply bad patterns because of such BPM product, use BPM for workflow orchestration, visibility into your process, monitoring the business activities inside the process, and think about valuable architecture and design, and do not blindly follow marketing sirens.

Monday, November 14, 2011

New post on Book companion web site

I start now to add content to the book - companion web site. So point to agilebrdevelopment
Have fun

Thursday, August 11, 2011

JRules is not a graphical programming environment

I got to review a JRules project recently where the developer did used JRules as a graphical programming tool, and not implement rules leveraging the inference and the capability of the rule language. The ruleflow has around 15 subflows that look all like the picture below.

The approach chosen was to loop around a collection of expenses and to apply rules in the "Expense" rule task using a variable named 'current expense'. A rule in the Expense rule task, looks like the following statement:
'current expense' has attendee
<... do something >
print "Expense had no person attached to it" ;

First a ruleflow should be used to control the flow of execution of group of rules, grouped together to apply business logic. A ruleflow should not be used as a UI for programming logic. A rule flow stays simple. What is interesting is that JRules as the definitions part in the BAL rules with operator 'in' to navigate collection of objects. The logic addressed in this flow is in fact really one line in the definition part of the rule. Using this capability we can remove 15 subflow, makes the rules far more efficient and gain on execution performance.

set 'current expense' to an Expense in 'all expenses received';
it is not true that 'current expense' has attendee
add error: "Attendee not present" to 'list of errors';

In this rule the variable 'current expense' will get all the references to the instance of the Expense class in the list of expenses received. Therefore the pattern matching in the if part of the rule will be done on this local variable. No more need to complex loop in the ruleflow...

I just wanted to share this with you, as this may be helpful to others. As a rule of thumb as soon as your ruleflow looks like spaghetti code, there is something fishy in the implementation. Most of the time the developer did not understand how a rule engine is working and how to leverage the different rule language operators. The product documentation is very good, with samples, and tutorials. Spending some time to understand rule programming will help avoid such pitfall.

On You Tube

I'm not yet lady gaga but here is a video done at Impact 2011.
I know I have a strong french accent....

ABRD EPF link updates

Just want to update the ABRD reference: EPF practice library is available here and contains the last version of ABRD.
A published version of ABRD can be found at http://epf.eclipse.org/wikis/epfpractices/ then go on the left to the following folder:
Practices > Additional Practices > Agile business rule development.

Tuesday, June 7, 2011


Last Friday IBM BPM 7.5 made GA. This is a great product, with a lot of exiting features in it. This week I'm doing a self training on it. BPM, BPMN, SCA, JRules integration.
For more information go to IBM BPM

Monday, April 11, 2011

Impact 2011

IBM Impact 2011 is starting with a lot of announcements in BPM space. I will have a session wednesday morning, 10.30am called: "Harvesting Business Terminology and Rules using WebSphere ILOG BRMS", with Stephane Mery, an eminent colleague working on business rule language.
We introduce ABRD and the harvesting cycle, and we go over how to quickly use ILOG BRMS to prototype the vocabulary and the rules.
Also I will have a signing session for the book at 12,00pm at the bookstore. Come to see...

Thursday, March 24, 2011

Jazz and RTC 3.0 for your project

Rational Team Concert 3.0 and previous version provide an excellent environment to develop business application using an agile methodology, and global team. I'm working on a project with resources in china, and multiple States in USA. Creating plan, iteration, work items is very easy and make the production and communication between remote team member very efficient.
Have a look at Jazz here
and the manual here

Tuesday, March 22, 2011

Agile Business Rule Development book ready

My silence on this blog is due to the work on my book, I co authored with Hafedh. The book is now available as you can see on Springer site.
The book is about ABRD methodology, architecture, best practices for developing business rule application.
I will give more information later. Have fun reading it!.
My silence is also due to my current consulting engagements with IBM, so I do not want to say anything about my projects. Also I still need to figure out what I can say outside of IBM.... Learning the business policies of my new company...