DMN 1.6b1 RTF Avatar
  1. OMG Issue

DMN16 — Collect decision tables

  • Key: DMN16-28
  • Status: closed  
  • Source: FICO ( Dr. Alan Fish)
  • Summary:

    (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
  • Disposition: Resolved — DMN 1.6b1
  • Disposition Summary:

    Clarify description of Collect hit policy

    The issue raises three points. As discussed in the comments of DMN15-31:

    • Point 2 has been fixed in DMN 1.4 with wording on page 118 (PDF 134).
    • Point 3 has been fixed in DMN12-175

    This proposal therefore only addresses Point 1 by providing revised wording for the description of the Collect hit policy.

  • Updated: Mon, 16 Sep 2024 14:16 GMT