Api calls in DMN


I’d like to ask about possibilities to resolves some variables (be it by querying a data source or calling an api). Preferably by only using the Camunda Modeler and DMN files. Was thinking about using literal expressions on which the decision table is dependant on to make the needed api calls/queries.

What other possibilities exist and what do you consider best practices? Where is the best place to collect variables from other 3rd party systems which are required in the decision.

Two answers:

1.) not possible with the default expression language “FEEL”. If you switch to groovy or scala, you can call services from within your dmn cell.
2.) I would advise not to do so. I like to think of decision tables as “pure functions”. So it should always return the same output for the same input and never modify any state. This is particulary useful when you want to analyse historic dmn executions to find out why a process did not take an expected path, you see which table in which version was called with which inputs … you loose this transparency when you have dynamic calls involved.

If you have many inputs that are not stored in process variables, its good practice to call the dmnService manually in a service task delegate, here you could determine the required inputs, dynamically load data and then execute the evaluation.