We’ve been following through an example CMMN model as a means to introduce some of the ways to use CMMN to describe case management automation. In the previous post, we finally completed a case instance. In this, the final post in this series, we’ll look at the two items sitting outside any of the stages in the example model.
As you may realize by now, when a case instance is created, as well as the Receive claim stage getting activated, any other items at the top level of the case plan will also be evaluated. We have two items, Update claimant contact details, a human task and Abandon claim, a user event listener. The task has no entry sentry to consider, so it immediately becomes available, but because it’s manually activated it doesn’t actually get created and become active. Similarly, the user event listener will only be available, waiting for the user event to trigger its activation.
While we’re talking about event listeners, rather than user triggered events, there can be events from external services, such as Kafka (see this blog). Using stages and event listeners inside them, you can control what events your case will be listening to – different events may be relevant at different points in the life-cycle of a case or problem, while some may always be relevant (modeled outside any stage in the case plan). You can read the eventing tutorial example from the trial download to get an idea of this. The model used in it looks like the following, where an event for a status change triggers different activities depending on which stage the case is active:
Back to the Update claimant contact details human task. The other thing you can see in the model alonside the manual activation icon is a # to indicate it can be activated multiple times. In the context of this example, within the whole life-time of a case the contact details may need to be changed several times. Each time the details need to be updated, you can manually trigger the creation of a new instance of the task to collect the changes. For any instance of a case, there can be none or multiple instances of the update details task. It’s not just human tasks that can be repeatedly activated, it can be any type of task, stage or milestone.
As well as just saying an item can be repeated any number of times, you can have a repetition rule that determines if further repeats are possible. Each time a repeatable task completes, the repetition rule is evaluated and if true the task can be repeated (it becomes available again). Flowable has some extended capabilities to count the number of times an item is repeated, as well as other handy attributes.
Well, that’s the end of our quick hands-on trip through CMMN. It is one of those things that you need to get your head into a different way of thinking if you’re very used to BPMN, describing what’s appropriate in different contexts, or reacting differently in different circumstanes, plus most importantly, letting the user have control over what happens next. We’ve covered some of the key introductory topics – some of the principal CMMN elements (plan items); the importance of understanding the activation life-cycle of CMMN plan items; how sentries provide a powerful way to express relevance of solution components in different contexts; and how you can express some things very naturally in CMMN that are not directly modelable in BPMN. Not a replacement for BPMN but an additional tool when you’re trying to express complex business problems.
In our experience, CMMN is a natural way to coordinate the high-level of a problem, to manage sets of business processes and information that relate together in some way. Often, there is an initiating process that creates a case but then the dynamic resolution of a problem is nicely captured through CMMN. There are plenty of complex things you can do with CMMN, and we’ve also added some extensions that we’ve found useful when dealing with real-world implementations. As mentioned at the beginning of this series of posts, Bruce Silver’s book, CMMN Method and Style is a great resource for learning more and adopting a best practice. Time to get on the case.