BPM (Business Process Management) is getting more and more visibility in the industry
in spite of the fact there are still some of difficult questions on it's justification remain unanswered or
at least have
divided opinion in the industry. One of them is "Whether to separate business logic from the components/services or not"? This is definitely against basic
OO concept of "Encapsulation"
i.e. Data and Business Logic of an object should remain inside the object and shielded from other objects. Let me leave it here and get to the real theme of this post..
There are innumerable standards, often from non-profit
consortiums or from a group of vendors that are always interested in getting their ideas standardized and widely accepted in the industry, sometimes driven by what is supported or planned to be supported by their products. You can clearly find out the
divide existing between these vendors on some standards with competing/overlapping standards popping up now and then to confuse the users and keep the proponents of these standards pulling each others leg.
There are quite a few advantages of using standards, the primary ones being portability and interoperability. Standards will help your code/
artifact/entity to be ported from one tool/application/platform to the other and also
inter operate with each other without much difficulty.
Let us look at the standards in the
BPM space. Any
BPM tool/framework provides for
A. Process Definition/Modeling
There are two distinct areas as part of this
- Creating Process Diagrams (ex. How to represent activities,joins,forks etc ). There can be standard
diagramming elements which tools can support.
- Storing/
serializing of these process
diagrams in a common format for other tools to understand.
B. Process Execution
- Some standard interchange format for Process Semantics, which can be understood by the execution engines and this format should be portable across all process engines.
Now comes the question, where does these standards like
BPMN,
XPDL and
BPEL et al stand today.
BPMN is a modeling notation — more than just a diagram, since each element has defined process semantics, abstracted from implementation details — but
BPMN has no official XML schema, i.e. no interchange format. The
BPMN proponents suggest than you can use any interchange format like
XMI for portability.
XPDL captures all the elements of
BPMN for interchange, But from a diagram portability perspective, not process semantic portability.
BPEL captures the process semantics and not the
diagrams, but assumes the processes as a sequence of calls to web services. Everything in a
BPEL is a web service operation, not "an activity", i.e. a unit of work
JPDL also captures the process semantics but it is very specific to
jBPM (now with
Redhat) . It assumes that every process consists of "States" and "Actions", somewhat like state machine.
On portability I would completely agree with "
Bruce Silver" on what he has to say in one his blog posts.
"The argument over whether
BPEL or
XPDL is more "portable" is based on different interpretations of what portable means. If you mean the same process semantics can be executed on two different engines, then
BPEL is more portable. If you mean that the same diagram can be created in two different tools, then
XPDL — especially if you allow the target tool to ignore the graphical details that don't carry over"
Now a days every product vendor claims to support either
BPMN,
XPDL and
BPEL or all of them. But, what does this support mean???There are many of them who have their own proprietary Interchange formats and have capability export/import from/to standard formats.There are some tools which can store these interchanges any standard/non-standard format, but would add one layer of translation before the process engine creates an instance of the process and executes it.
Is this what we are looking for in
BPMS tools ?? IMHO, we should look for moving the process
semantics and the
diagrams repository from one tool/engine to the other as it is.. Also, we should look at whether the process engines can be hosted in any container (ex.
JEE Server,
ESB etc).
To put it straight we are looking for process tools and engines that are
BPEL or
XPDL based and not provide support for them in way of export and import or internal translation.
The question is.. while evaluating tools/engines...which of these standards what we should look for? With the current state these standards, I would
definitely say there is no concrete answer. The choice is yours.. But, the decision should not be based on what the product vendors support, but what is the pros and cons of these standards and how you foresee the evolution of these standards.