Sunday, September 22, 2013

Case Management - Part 1

I have been using BPMN in projects for a while now. It is very useful in describing the predefined sequence of actions that need to be taken in a specific process.

With BPMN 2.0 we have the option to support the process with IT using a Business Management Process System (BPMS) without having to rewrite the process definition. Oracle BPM Suite is an example of such a BPMS. You take the BPMN 2.0 process definition and implement the activities and events using the Oracle SOA Suite. This is a very powerful concept and works well in certain situations. However, not every process actually follows a limited, predetermined sequence of events. A lot of process management or workflow projects fail because the BPM approach is too restrictive or because the system does not support all the possible scenario's that apply in reality.

BPMN to model non-deterministic processes

So how do we model processes or actions that don't follow a predefined sequence? BPMN offers ad-hoc sub processes. These can be used to depict a number of activities that can be executed in any order any number of times until a certain condition is met. The notation for this is depicted below.
ad hoc sub process
However, none of the BPMS systems I use (Oracle BPM Studio, Activiti) support this construct. You can see this in the screen shot from Oracle BPM below. Sub processes are supported, Event Sub Processes are supported, the creation of ad-hoc tasks by a user or the system at runtime is supported, but Ad-hoc sub processes as defined in BPMN 2.0 are not.

Activities supported by Oracle BPM
There are workarounds for that obviously. You can model a process that offers a choice (gateway) every time a new step is taken and loops around until a certain condition is met. This results in very complex process models that are hard to read and understand and therefore 'breaks' the idea of having a BPMN 2.0 process that is used both by the business as documentation and by IT for implementing it directly in your BPMS. Besides, it does not take into account the fact that you want to be able to add new activities on the fly, during the execution of your process.

Using Case Management Model and Notation 

The OMG defined a new specification: the case management model and notation or CMMN that can be used to model non-deterministic processes. It is currently in beta. A case is defined as: "(...) a proceeding that involves actions taken regarding a subject in a particular situation to achieve a desired outcome." A case has actions, just like a process. The difference is that you don't have to know in advance what the sequence of these actions is, it can be completely ad-hoc. But as the specification continues: "(...) As experience grows in resolving similar cases over time, a set of common practices and responses can be defined for managing cases in more rigorous and repeatable manner." Hence the term Case Management.

The specification describes the following:

  1. Case Management Elements. A semantic description of elements like Case Model Elements, Information Model elements and Plan Model Elements. 
  2. Notation. This describes the notation of elements like Case, Case Plan Models, Case File Items, Stages, Tasks, Milestones, etc. 
  3. Execution semantics that specify the lifecycle of a Case instance, Case File Items, Case Plan Items, Behavior property rules etc. 
Below is an example model of the case "Write Document".  

Now let's compare this model to BPMN. 
  • The model does not show roles, even though the specification states that a case has roles associated with it. In BPMN there is the concept of swim lanes to depict roles. We lose that information when modelling with CMMN. 
  • In BPMN we show messages to model interaction with other 'process pools'. This gives a good overview of dependencies on the outside world. In CMMN we can define a task that calls another case or another process and there are event listeners in the model. The origin of the events are Case File Items, User tasks or timer events. There is no way to depict interaction with the outside world.
  • In BPMN you can model different gateways, including parallel gateways and exclusive or gateways. In CMMN you can not model the fact that stages can occur in parallel in a case. 
  • In BPMN you can not specify that ad-hoc tasks may be defined at runtime. The same is true for this model. You can model a task as a discretionary task. But there is no way to model the fact that certain users may define a task at runtime in a certain stage. Or to model that they may not do that.
  • In BPMN you can't model the content of criteria, or expressions for a certain condition. As you can see that is true for CMMN as well. There is no way to model the rules that determine when a certain criterion is met or when a certain milestone is reached. This has to do with the fact that the information (data) that is part of the case is not modelled. 
  • In BPMN you model data items. In CMMN you model Case File Items. This is a similar concept.
  • In BPMN you model activities, or tasks. In CMMN you model tasks. 
  • In BPMN you model a sequence of activities. In CMMN you model entry and exit conditions and events that cause the conditions to be met. This reflects the fact that BPMN is about a predefined sequence of activities and a case is about a set of actions that need to be executed to reach a certain end result. Unfortunately the desired end result is not modelled. 
Looking at the specification, all the relevant information is defined in the semantic part of the specification, including the execution semantics. The model is not as rich (yet?) and seems to be lacking crucial information. I guess the only way to found out how bad that is, is to start using it...

Next steps

In part 2 I will model a case (applying for a permit) using different notations. Part 3 will show how case management is supported in Oracle BPM Suite using the case component.

No comments:

Post a Comment