Using DMN decision to determine DMN decisions to be executed

Hi,

I’m thinking of a scenario where I want to use a DMN decision table to determine a set of DMN decision tables to be executed. The determined decisions all use hit policy collect (Sum) and in the end I would be interested in the sum of all all outputs from the executed decisions.

Since not yet very familiar with DMN, my straight-forward approach is having a DMN table with ‘Collect’ hit policy which outputs the list of DMN decisions (id), then I use BPMN gateway logic (inclusive gateway) to trigger the execution of all the previously determined decisions.

Since the superset of all possible decisions is quite big (approx 25), this ends up in a huge ‘rake’-style BPMN model. There is no further process logic other than orchestrating the execution of the decisions as well as summing up their outputs.

I’m wondering if there is a way to use a DRD only and omit the BPMN part to achieve the same?

Thanks.

Hi,

AFAIK the Camunda DMN engine does not support any kind of inference within or between decision tables. Hence I dont believe a DRG will help you in this case. (Actually its a good question, Im curious if the DMN standard anticipates an inference component…)

Ive successfuly used BPMN flows to build what I call decision flows. I typically expose these as a decision service exposed via an API, thus to the client, the implementation is a black box.

If you are concerned about a BPMN ‘rake’ diagram, you could use more dynamic dispatch via putting the name of the decision table(s) to execute in a process variable and use an expression to reference the variable and dynamically bind to a decision table.

Another feature Ive used is to use BPMN async continuations to run shadow or experimental decisions. Thus the calling client does not incurr the cost of these shadow decisions and the outcome of these shadow decisions can feed an analytics component in support of machine learning to continuously improve the decisions…

regards

Rob

1 Like

From the DMN spec, you could use BKMs to evaluate specific decisions and coordinate the evaluation of decisions.

Since BKMs are not supported yet, you could use include the precondition checks in the decisions themselves. For example, using the first input column in a decision table.