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.
Agile IT Architecture
Develop 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.
Tuesday, December 27, 2011
Monday, November 14, 2011
New post on Book companion web site
Hi
I start now to add content to the book - companion web site. So point to agilebrdevelopment
Have fun
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:
if
'current expense' has attendee
then
<... do something >
else
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.
definitions
set 'current expense' to an Expense in 'all expenses received';
if
it is not true that 'current expense' has attendee
then
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.
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:
if
'current expense' has attendee
then
<... do something >
else
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.
definitions
set 'current expense' to an Expense in 'all expenses received';
if
it is not true that 'current expense' has attendee
then
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....
I know I have a strong french accent....
ABRD EPF link updates
Hi
Just want to update the ABRD reference: EPF 1.5.1.2 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.
Just want to update the ABRD reference: EPF 1.5.1.2 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
IBM BPM7.5
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
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...
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...
Subscribe to:
Posts (Atom)