bpmNEXT is 2 and half days of intense examination and evaluation of the leading trends in the business process community, and Decision Modeling Notation was clearly highlighted this year.
This is the year for DMN
The Decision Modeling Notation standard was released mid 2015. There are several implementations, but none of them quite mature yet. If you are not familiar with DMN, here is what you need to know:
- You can think of it simplistically as a tree of decision tables. There is so much more to it than that, but probably 80% of usage will a tree of decision tables
- It has a specific expression language that allows the writing of conditions and results
- Actually it is a tree of block expressions. A block expression can be a decision table, a simple if/then/else statement, or a number of other types of expression.
- The results of blocks lower in the tree can be used in blocks further up.
The idea is to represent complicated expressions in a compact, reusable way.
In general, the market response to DMN has been very good. Some business rule purists say it is too technical, however is strikes a balance between what you would need to do in a programming language, and a completely natural language rule implementation. Like BPMN, it will probably tend to be used by specialists, but there is also a good chance, like BPMN, that the results will at least be readable by regular business users. In my talk, I claimed “This is the Year for DMN”
- Denis Gagne, Trisotech, demonstrated DMN modeling as part of his suite of cloud based process modeling tools. Execution is notably absent.
- Alvin To, Oracle, demonstrated their version, which only supports linear box expressions (as opposed to the more general tree structure) putting particular attention to their contribution to the spec: FEEL (Friendly Enough Expression Language).
- Larry Goldberg, Sapiens, demonstrated their ability to create DMN models and transform them into a large variety of execution formats.
- Jacob Feldman, Open Rules, demonstrates his rules optimization capability.
- Jacob Freund, Camunda, has an implementation that focuses on single decision tables.
Most of the demonstrations focused on the modeling of the decisions. This is a problem. The specification covers the modeling, however as with any software standard, the devil is in the details. You can model using several tools in exactly the same way, but there is no guarantee that the execution of the model will be the same. A similar situation existed with BPMN where different implementations treated things like the Inclusive-OR node completely differently. The model is meaningless unless you can show that the models actually produce the same decisions — and that requires a standard run time library that can execute the model and show that what they actually mean.
The semantics are described in the specification using words that can never be precise enough to ensure reliable interoperability. Until an actual reference implementation is available, there will be no way to decide who has interpreted these words correctly. The problems occur in what might seem to be pathological edge cases, but experience shows that these are surprisingly more numerous than anyone anticipates.
Call To Action
For this reason I am calling for a standard implementation of the DMN evaluator that is widely available to everyone. A reference implementation. I think it needs to be an open source implementation, one that works well enough that products can actually use the code in a product. Much like the way that Apache web server has eliminated the need for each company to write their own web server.
WfMC will be starting a working group to identify and promote the best open source implementation of DMN run-time. We don’t want to invent yet another implementation, so we plan to identify the best existing implementation and promote it. There are a couple of good examples out there.
If you believe you have a good open source implementation of DMN run-time then please leave a comment on this blog post.
If you are interested in helping identify and recognize the best implementation, leave a comment as well.