Evaluete List in DMN Table

Hi all,
I’m using Camunda EE 7.15.10 and I’m trying to evaluate a list generated by a service task (and set as a process variable) inside a decision table. To be precise, I need to check if the list contains the value defined in the respective table cell (referred to as “cellInput” by DMN Engine, if I’m getting this right). My searches led me to something like this:

Expression = list contains(aktiveVertraege, cellInput)
Expression Language = FEEL
Input Variable = aktiveVertraege
Type = integer

cell input value = 30

This gets me an exception: DMN-01005 Invalid value ‘false’ for clause with type ‘integer’.
Switching the type to boolean leads to a similar issue.

So, how am I supposed to get this working? The value the list needs to be evaluated against should, if possible, be set as a cell value so non tech savvy users can add/modify them more easily.

Hi coderHarder,

The field “Input Variable” with default “cellInput” is used differently than you describe in your question. The result of the “Expression” field is stored in “cellInput” (or under a different name if you specify it in the field “Input Variable”). You can then use “cellInput” (or the different name) in the expression in a input entry. Docs: DMN Decision Table Input | docs.camunda.org

I found a similar question here and adapted the provided solution to your question: DMN evaluate input List - #3 by hassang

In the “Expression” field we put “aktiveVertraege”. We leave the “Type” blank.
An input entry can then be written as:
list contains(cellInput, 30)

image

Checking with Postman:
Not containing 30:


Containing 30:

Unfortunately, the input entry is a bit more complex than a simple integer, but I hope it still suits your needs.

Kind regards
Till

2 Likes

Thanks Till, this is looking good!
However, I’m now getting this error: Exception while closing command context: condition expression returns non-Boolean: result has class java.lang.String and not java.lang.Boolean

I have the input conditions exactly as you described (type=blank, expression=aktiveVertraege etc.) and list contains(cellInput, 30) as a cell input in the table.

Hi codeHarder,

some expression seems to be misconfigured to produce a string instead of a boolean.

If you got this error while testing your BPMN process, it might be unrelated to the DMN table. This can also happen when a condition expression behind an exclusive OR gateway is misconfigured. Could still be a problem of the DMN table…

Could you share your BPMN and DMN files, so I can take a look at them?

You’re absolutely right, I was missing a closing curly bracket in a gateway following the decision table. Thanks for pointing me in the right direction!

1 Like