Support for DMN 1.2 and/or 1.3

Hello,

We’re interested in using the Camunda DMN engine as a service in order to evaluate some decisions externally to our environment. However, having done some trials, I could not manage to do the following yet :

  1. Defining user-defined types, for example, to be able to pass information from on decision to the other. The type of user-defined type we would interested in is a complex type like the DMN Contexts, with values of some keys being other Context types etc. Also we would need the user defined type to be recursive (i.e., having an element which is of its own type, e.g. Type A => {“a” : string, “b” : Type A}) According to DMN 1.2 spécification such definitions are possible, and I’ve seen some other DMN engines supporting such user-defined types in the DMN model. I wanted to make sure if the support doesn’t yet exist on Camunda, or is it that I’im a novice in using Camunda.

  2. Is it possible to define functions within BKMs for usage in decisions ? The camunda modeler does not seem to provide any logic for BKMs so I did not manage to construct examples to try it out. When I feed the DMN engine with hand made DMN models (or DMN models generated by other DMN modelers), I could not access the functions declared in a decision A (or BKM A) within a decision B. We need such decomposition of logic because the rules that we need to implement are quite complex and especially we will need the possibility to define recursive functions that are used by decisions. Again ny question will be, is it my experience in Camunda DMN which is missing, or is it the support in the engine that is missing ?

Apart from these specific questions, I would also like to ask if there is a reference documentation where we can see the list of DMN 1.2 and/or DMN 1.3 features that are supported by the Camunda ? I’m not sure if the DMN-TCK test result list is updated recently, I had the impression that the results are correspond to previous implementations (and not the support for DMN 1.2).

Hope this is not too much to ask,

Thanks for the time you would take and for providing the DMN engine !

Regards

Hi @eqnx_dh,

thank you for raising this up.

Regarding your questions:

In the Camunda DMN engine, you don’t need to define types explicitly (i.e. no support for DMN item definitions). You can just pass any value in the decision.

In a decision table, the input defines usually a type. But you can also fill a custom name in the field to disable the type checking. Or, register your our types if you want.

See also:

Currently, BKMs are not supported.

One way is to implement the function in Java/Scala and make it available for FEEL expressions. So, the function can be used in different decisions.

Read more about it here: FEEL Engine Custom Functions | docs.camunda.org

The supported elements are listed in the docs: DMN 1.3 Reference | docs.camunda.org

Please note that not all elements for DMN 1.1, 1.2 or 1.3 are supported.

We updated the DMN-TCK in February. A new update is on the way.
We try to update the DMN-TCK on a regular basis.

Best regards,
Philipp