Source: FICO ( Alan Fish)
(1) The spec says "Collect: returns all hits in arbitrary order. An operator (‘+’, ‘<’, ‘>’, ‘#’) can be added to apply a simple function to the outputs. If no operator is present, the result is the list of all the output entries.". This is confusing - as I understand it if an operator is present a collect hit policy does not return all hits, only the result of the operation.
(2) The spec should state clearly what result is returned by Collect decision tables when no rules fire. In particular the result of a C+ decision table is not clear, because the result of sum() is undefined. I think a case could be made (based on a recursive definition) that the sum of an empty list is zero, which would be a much more useful result from the decision table than null. In general, section 10.3.4.4 restricts the semantics of all list functions to non-empty lists, although some functions have natural and useful results for the empty list e.g. count()=0, sum()=0, sublist(,x,y)=, append(,items)=[items], concatenate(,items)=items, reverse()=, union(,items)=, distinct values()=, flatten()=.
(3) Why is the result of C+ defined as "sum of all the distinct outputs" rather than just "sum of all the outputs"? I would say that if three rules fire proposing the value 5, the C+ result should be 15, not 5.
Reported: DMN 1.1 — Thu, 13 Oct 2016 08:25 GMT
Updated: Thu, 6 Apr 2023 14:59 GMT
DMN15 — Collect decision tables
- Key: DMN15-31
- OMG Task Force: Decision Model and Notation 1.5 RTF