Decision Model and Notation Avatar
  1. OMG Specification

Decision Model and Notation — Open Issues

  • Acronym: DMN
  • Issues Count: 103
  • Description: Issues not resolved
Open Closed All
Issues not resolved

Issues Summary

Key Issue Reported Fixed Disposition Status
DMN15-58 Missing semantics for multiple imports DMN 1.3 open
DMN15-65 spec places unrealistic constraints on decision expressions and BKM parameter bindings DMN 1.3 open
DMN15-131 Another False, or at least ignored statement by most vendors DMN 1.4b1 open
DMN15-130 False, or at least ignored statement by most if not all vendors DMN 1.4b1 open
DMN15-107 No support for numbers in scientific notation DMN 1.4b1 open
DMN15-120 Wording in section above does not match the rule 35 in grammar DMN 1.4b1 open
DMN15-6 Depiction of Input Data is not harmonized with BPMN and CMMN DMN 1.1 open
DMN15-123 Importing libraries of functions is not business friendly DMN 1.4b1 open
DMN15-119 Incorrect function name in example DMN 1.4b1 open
DMN15-124 Interchanging models that use external libraries of functions is complicated DMN 1.4b1 open
DMN15-125 Lists and filters section does not provide a dot accessor "." example with null DMN 1.4b1 open
DMN15-121 It is not possible to use a range of Dates as an iteration context DMN 1.4b1 open
DMN15-118 Typo in Table 66 DMN 1.4b1 open
DMN15-109 There are questions regarding precedence of operator between negation and exponation DMN 1.4 open
DMN15-108 Positive unary tests lack equality operators DMN 1.4b1 open
DMN15-101 No Mapping of FEEL to JSON DMN 1.4 open
DMN15-99 No built-in function to support Range conversion DMN 1.4 open
DMN15-96 Gaps: Range as input, mapping to JSON, evaluation of non-FEEL expression languages DMN 1.4 open
DMN15-94 Typo in "10.3.1.2 Grammar rules" 3rd bulletpoint in the bottom DMN 1.4 open
DMN15-106 Incorrect reference to FEEL rule DMN 1.4b1 open
DMN15-78 Underspecified when ranges may include a qualified name for the endpoint, which resolves to null DMN 1.3 open
DMN15-88 UNused Requirements are considered invalid DMN 1.4 open
DMN15-86 Table 62 limited to "negative numbers" DMN 1.4 open
DMN15-18 Enumerations can only be defined as strings DMN 1.1 open
DMN15-31 Collect decision tables DMN 1.1 open
DMN15-16 Add two new concrete numeric types, make number abstract DMN 1.1 open
DMN15-104 Acknowledgements for DMN 1.4 and 1.5 contributors needed DMN 1.4b1 open
DMN15-36 No way to represent a black-box or incompletely defined Decision Service DMN 1.2 open
DMN15-98 DMN 1.4 updated XMI references external file DMN14.mdxml DMN 1.4 open
DMN15-91 Functions cannot invoke external services DMN 1.4 open
DMN15-83 Typo in 6.3.7 Decision metamodel DMN 1.4 open
DMN15-81 Typo in 8.3.1 Decision Table metamodel "DecsionTable" DMN 1.4 open
DMN15-79 Typo in the DMN 1.4 XSD schema (complexType tFilter) DMN 1.4 open
DMN15-73 Clarification on syntax of DMNReference DMN 1.3 open
DMN15-69 Allow for partial temporal values DMN 1.3 open
DMN15-70 Change to the "at literal" in FEEL DMN 1.3 open
DMN15-71 Adding a new interval built-in function DMN 1.3 open
DMN15-72 Allow input data to be of type Interval DMN 1.3 open
DMN15-77 Missing InformationItem Association? DMN 1.3 open
DMN15-75 Links with other standards DMN 1.3 open
DMN15-74 Incorrect typeRef for variables associated to BKMs DMN 1.3 open
DMN15-76 The "schemaLocation" relative URLs are broken DMN 1.3 open
DMN15-62 No way to show relative multiplicity of decisions and their information requirements DMN 1.3 open
DMN15-67 Ambiguous named params for before() and after() range functions DMN 1.3 open
DMN15-68 FunctionItem `parameters` array attribute is plural, not singular in name DMN 1.3 open
DMN15-64 P0D == P0Y in SFEEL, but it is unclear if P0D == P0Y in FEEL DMN 1.3 open
DMN15-60 Spec does not mandate that all formal parameters are utilised. DMN 1.3 open
DMN15-61 DRG requirements only state am unused knowledge requirement is illegal DMN 1.3 open
DMN15-63 No way to tell that a Decision iterates over a collection DMN 1.3 open
DMN15-66 the operation of is() function is not well specified DMN 1.3 open
DMN15-57 Add an itemKind property to ItemDefinition DMN 1.3b1 open
DMN15-59 Spec does not mandate that all user-defined function parameters are utilised DMN 1.3 open
DMN15-54 Figure 10.17 defines DMN Expressions and lists its specializations, but it does not list Unary Tests. DMN 1.3 open
DMN15-53 "instance of" not possible with some built-in functions DMN 1.2b1 open
DMN15-52 Inconsistency DMNv1.2 dropping [a]=a and get entries example DMN 1.2b1 open
DMN15-51 properly define type(e) DMN 1.2 open
DMN15-56 Typos in the XMI files DMN 1.2 open
DMN15-55 Figure 8-20 shows UnaryTests as being a specialization of DMNElement when it has been changed to be a specialization of Expression DMN 1.3 open
DMN15-50 Clarification on DMN case sensitivity of timezones DMN 1.2 open
DMN15-49 Support for recursive calls by Business Knowledge Models DMN 1.2 open
DMN15-48 Lack of visual notation for processing of / iteration over lists in FEEL DMN 1.2 open
DMN15-43 Temporal precision inconsistencies DMN 1.2b1 open
DMN15-44 Clarification regarding equivalence of date vs date and time DMN 1.2 open
DMN15-47 Friendlier handling of null values DMN 1.2b1 open
DMN15-46 Provide better spec and examples for Equality, Identity, and Equivalence DMN 1.2b1 open
DMN15-45 Clean up example xml files DMN 1.2b1 open
DMN15-40 Situational Data Model and Notation (SDMN) DMN 1.2b1 open
DMN15-39 inconsistent date comparisons make unavoidavle paradoxes DMN 1.2 open
DMN15-42 data equivalence with date and time DMN 1.2 open
DMN15-38 DMN Models need a default timezone DMN 1.2 open
DMN15-41 Knowledge Package Model and Notation (KPMN) DMN 1.2b1 open
DMN15-35 Unspecified conclusion is not supported DMN 1.1 open
DMN15-34 notion of arbitrary order conflicts with lack of an unordered collection data type DMN 1.1 open
DMN15-37 Fix interchange of links to objects in BPMN/BMM DMN 1.2 open
DMN15-30 Metamodel constraints & validation DMN 1.1 open
DMN15-33 need set operations and equality in FEEL DMN 1.1 open
DMN15-32 In section 7.3.1 Expression Meta-Model: there is no table to display the typeRef attribute added by Expression to DMNElement DMN 1.1 open
DMN15-27 Improvement of Semantic Domains Specification DMN 1.1 open
DMN15-26 Rule 51.c doesn't support FEEL syntax of list with squary brackets as shown on page 122 DMN 1.1 open
DMN15-28 Semantic domain mapping for simple expressions DMN 1.1 open
DMN15-29 Requested additional built-in functions DMN 1.1 open
DMN15-23 Can an expression in user defined function body reference a name outside of it's scope? DMN 1.1 open
DMN15-22 How to get FEEL type if evaluation is not an option? DMN 1.1 open
DMN15-24 Should name declarations in same context fail or overwrite? DMN 1.1 open
DMN15-25 Missing FEEL semantic mapping for grammar rule 2.i - simple positive unary test DMN 1.1 open
DMN15-20 More Generic Ways to Define Decision Table Properties DMN 1.1 open
DMN15-19 FEEL grammar readbility DMN 1.1 open
DMN15-21 Scope of decision table input/output entries is not well defined in the specification DMN 1.1 open
DMN15-14 Improve description of built-in function string() DMN 1.1 open
DMN15-13 Clarification needed if null is passed as value for optional parameter of built in function DMN 1.1 open
DMN15-12 Introduce a new property "value" for type date, date and time, time, years and months duration, days and time duration DMN 1.1 open
DMN15-11 No adjustment for last day in month if duration is added/subtracted to date and time value DMN 1.1 open
DMN15-15 Can the same Definitions/namespace be used by more than one model? DMN 1.1 open
DMN15-17 Lexical representation of time string has ambiguous definitons DMN 1.1 open
DMN15-10 Should encapsulated decisions of a decision service include output decisions? DMN 1.0 open
DMN15-9 Figure 6.15 shows incorrect multiplicity for Decision Service Output Decisions DMN 1.1 open
DMN15-8 Enhancement suggestion: make unary tests first class citizens of the FEEL language DMN 1.1 open
DMN15-7 Include Test Cases in Decision Model DMN 1.1 open
DMN15-5 XSD: global context DMN 1.0 open
DMN15-2 No notation for ItemDefinition DMN 1.0 open
DMN15-1 Business Context links go both ways DMN 1.0 open
DMN15-4 Business Knowledge Model can have Information Requirements DMN 1.0 open
DMN15-3 italics and bold used for both typographic literal notation and FEEL semantic exposition DMN 1.0 open

Issues Descriptions

Missing semantics for multiple imports

  • Key: DMN15-58
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    The semantics of Import is not fully specified.

    In certain use cases the same DMN element (e.g. ItemDefinition or DRGElement) can be imported multiple times (e.g. transitive imports).

    Lets consider the following use case:

    • Model A contains the definition of an InputData for a Person (e.g. name, age etc)
    • Model B imports model A. Model B contains a decisions DB that uses the Person as input
    • Model C imports models A and B. Model C contains a decision DC that uses Person and DB as input

    In this situation model C imports Person twice due to transitive import.

    In order to evaluate DC the Person InputData has to be bound to a value. The question is how many values is the user going to provide, lets say in a Web form? A single value or one value for each import path (in this case 2)?

    I am inclining towards the first option - one single value per input data. Here is my rationale:

    • InputDatas / DRGElements are uniquely identified by model namespace and DRGElement.name
    • InputDatas own one single variable (see 6.3. Metamodel). The semnatics for InputData.variable is in Table 18:
      The instance of InformationItem that stores the result of this InputData.
    • Consistency with the import of other DMN Elements: it does not make any sense for ItemDefinitions, BKMs and DSs to have multiple variables / values when imported several times.
    • If we choose the second option and the model is refactored (e.g. models are merged), but the logic does not change, the user has to fill-in different input forms. It is not very user friendly.
    • I am not aware of any PL/DSL that uses the second option

    Lets discuss.

  • Reported: DMN 1.3 — Tue, 30 Mar 2021 08:28 GMT
  • Updated: Thu, 1 Dec 2022 21:35 GMT

spec places unrealistic constraints on decision expressions and BKM parameter bindings

  • Key: DMN15-65
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    Section 7.1 specifies that under certain circumstances relating to BKMs a decision must have a literal expression, and BKM parameter bindings relate to decision inputs. For example:

    > "If a decision element requires more than one business knowledge element, its value expression must be a literal expression that specifies how the business knowledge model elements are invoked and how their results are combined into the decision's outcome.

    So, in essence dictating that if a decision uses more than 1 BKM its expression must be a literal expression. In practice, a decision may use its BKMs in various ways - to populate a boxed context entry, or even not to invoke it at all and (say) pass the BKM to another BKMN or function accepting as function type parameter.

    This statement should be removed from the spec.

    Next: "If a decision does not require any business knowledge models, its value expression must be a literal expression or decision table that specifies the entire decision logic for deriving the output from the inputs."

    Again, whether a decision uses a BKM or not has no bearing on the type of expression a decision has. A decision with no BKM may have any expression including (say) a boxed context, or a list, or indeed may return a function definition - not just a literal expression or a decision table . The above text should be removed from the spec.

    Next: "Similarly, if a decision element requires only one business knowledge model element, but the logic of the decision elaborates on the logic of its required business knowledge model, the decision element must have a literal expression that specifies how the business knowledge model's value expression is invoked, and how its result is elaborated to provide the decision's outcome."

    The same - this text should be removed from the spec.

    Next: "In all other cases (i.e., when a decision requires exactly one business knowledge model and does not elaborate the logic), the value expression of a decision element may be a value expression of type invocation. In a value expression of type invocation, only the bindings of the business knowledge model parameters to the decisions input data need be specified: the outcome of the decision is the result returned by the business knowledge model's value expression for the values passed to its parameters."

    Again, this is unnecessarily limiting how a decision may use a BKM. For example, a decision may actually return the BKM as its value. The above text should be removed from the spec.

    Additionally, the following should be removed:

    "At the decision logic level, a decision invokes a required business knowledge model by evaluating the business knowledge model's value expression with the parameters bound to its own input value. How this may be achieved depends on how the decision logic is partitioned between the decision and business knowledge models:"

    A decision does not have to bind its input values to a BKM parameters. As a decision may have (say) contexts that evaluate in a top down manner and the binding to a BKMs parameters could be any manner of calculations in that context or results of other BKM invocations that do not strictly relate to the inputs of a decision.

    // ****

    Therefore, in summary I suggest removing all of the following text:

    "At the decision logic level, a decision invokes a required business knowledge model by evaluating the business
    knowledge model's value expression with the parameters bound to its own input value. How this may be achieved
    depends on how the decision logic is partitioned between the decision and business knowledge models:

    If a decision element requires more than one business knowledge element, its value expression must be a literal
    expression that specifies how the business knowledge model elements are invoked and how their results are
    combined into the decision's outcome.

    • If a decision does not require any business knowledge models, its value expression must be a literal expression
      or decision table that specifies the entire decision logic for deriving the output from the inputs.
    • Similarly, if a decision element requires only one business knowledge model element, but the logic of the
      decision elaborates on the logic of its required business knowledge model, the decision element must have a
      literal expression that specifies how the business knowledge model's value expression is invoked, and how its
      result is elaborated to provide the decision's outcome.
    • In all other cases (i.e., when a decision requires exactly one business knowledge model and does not elaborate
      the logic), the value expression of a decision element may be a value expression of type invocation. In a value
      expression of type invocation, only the bindings of the business knowledge model parameters to the decisions
      input data need be specified: the outcome of the decision is the result returned by the business knowledge
      model's value expression for the values passed to its parameters.

    The binding of a business knowledge model's parameter is a value expression that specifies how the value passed to that
    parameter is derived from the values of the input variables of the invoking decision."

  • Reported: DMN 1.3 — Fri, 19 Feb 2021 10:01 GMT
  • Updated: Thu, 1 Dec 2022 20:41 GMT

Another False, or at least ignored statement by most vendors

  • Key: DMN15-131
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    This statement was brought to my attention via DMN TCK email:

    "If a decision element requires more than one business knowledge element, its value expression must be a literal expression that specifies how the business knowledge model elements are invoked and how their results are combined into the decision's outcome. "

    This statement is either false or ignored by most vendors

  • Reported: DMN 1.4b1 — Wed, 30 Nov 2022 17:58 GMT
  • Updated: Thu, 1 Dec 2022 20:41 GMT

False, or at least ignored statement by most if not all vendors

  • Key: DMN15-130
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    This statement was brought to my attention via DMN TCK email:

    "If a decision does not require any business knowledge models, its value expression must be a literal expression or decision table that specifies the entire decision logic for deriving the output from the inputs."

    This statement is either false or ignored by most vendors

  • Reported: DMN 1.4b1 — Wed, 30 Nov 2022 17:55 GMT
  • Updated: Thu, 1 Dec 2022 20:39 GMT

No support for numbers in scientific notation

  • Key: DMN15-107
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    Currently the syntax of numeric literals does not support usage of exponents. This is quite useful when dealing with large numbers.

  • Reported: DMN 1.4b1 — Tue, 31 May 2022 07:59 GMT
  • Updated: Tue, 22 Nov 2022 18:21 GMT

Wording in section above does not match the rule 35 in grammar

  • Key: DMN15-120
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    After adding support for scientific notation (https://issues.omg.org/browse/DMN15-107), there are incorrect parts in section 10.3.2.3.1:

    1. Literals consist of base 10 digits and an optional decimal point.
    2. FEEL does not support a literal scientific notation. E.g., 1 .2e3 is not valid FEEL syntax. Use 1.2*10**3 instead.

  • Reported: DMN 1.4b1 — Tue, 11 Oct 2022 08:45 GMT
  • Updated: Tue, 22 Nov 2022 18:21 GMT

Depiction of Input Data is not harmonized with BPMN and CMMN


Importing libraries of functions is not business friendly

  • Key: DMN15-123
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    There are many different Functions that are needed to make FEEL expressive enough for tackle the logic of various contexts/industries:
    e.g Financial Functions, Healthcare Functions, etc. even advanced Mathematical functions or Matrix manipulation functions.

    Currently these functions need to be imported in, and then all functions need to be prefixed with a namespace.
    This not ideal as the business friendly name with space such as "annual interest rate" now becomes cryptic as "financial.annual interest rate"
    or "discount as percentage" becomes "financial.discount as percentage"

  • Reported: DMN 1.4b1 — Tue, 18 Oct 2022 19:27 GMT
  • Updated: Tue, 8 Nov 2022 17:02 GMT

Incorrect function name in example

  • Key: DMN15-119
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    There are 2 typos in the examples

    duraion("P0DT25H") and duraion("P0Y13M"))

    Should be

    duration("P0DT25H") and duraton("P0Y13M"))

  • Reported: DMN 1.4b1 — Tue, 11 Oct 2022 08:37 GMT
  • Updated: Wed, 26 Oct 2022 08:45 GMT

Interchanging models that use external libraries of functions is complicated

  • Key: DMN15-124
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    Currently if a DMN model makes use of an external library of functions, the receiving tool may be challenged in also importing this library and execute on these new functions.

    We should explore a way to make the interchanged model not only exchangeable but also executable.

  • Reported: DMN 1.4b1 — Tue, 18 Oct 2022 19:35 GMT
  • Updated: Tue, 25 Oct 2022 17:29 GMT

Lists and filters section does not provide a dot accessor "." example with null

  • Key: DMN15-125
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    The current para (below) does not provide an example with null which could lead to misinterpretations.

    For convenience, a selection using the "." operator with a list of contexts on its left hand side returns a list of
    selections, i.e. FEEL(e.f, c) = [ FEEL(f, c'), FEEL(f, c"), ... ] where FEEL(e) = [ e', e", ... ] and c' is c augmented with
    the context entries of e', c" is c augmented with the context entries of e", etc. For example,

    [ {x:1, y:2}, {x:2, y:3} ].y = [2,3]
    
  • Reported: DMN 1.4b1 — Fri, 21 Oct 2022 14:43 GMT
  • Updated: Fri, 21 Oct 2022 15:04 GMT

It is not possible to use a range of Dates as an iteration context

  • Key: DMN15-121
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    FEEL for iteration statement context limits the iteration context (Section of 10.3.2.14 ) to integers:
    "An iteration context may either be an expression that returns a list of elements, or two expressions that return integers connected by “..”. "

    It would be useful to augment the iteration context to also allow dates.

    This will allow to create simple decision logic that validates conditions for each date in the range and allows one to write decision logic that can validate the state on each day to calculate the number of days that meet a requirement.

    An general example use case could be, how many days in the range [2021-01-01..2022-01-01] meets a certain complex logic.

    A specific example of that would be to determine if the person and its spouse were both employed and living at the same address for at least the 3 of the last 5 years given a list of Job description for both (Date From, Date To, Employer) and a list of their declared residence for both (Date From, Date To, Address).

    This can of course be calculated in a different way, but the logic of iterating on a date range and checking if the condition is true for every day and summing the number of days for which its true makes the logic a lot simpler to follow for a business user.

  • Reported: DMN 1.4b1 — Tue, 18 Oct 2022 18:39 GMT
  • Updated: Tue, 18 Oct 2022 18:39 GMT

Typo in Table 66

  • Key: DMN15-118
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    With reference to DMN v1.4 dtc-21-12-01 pdf
    Table 66 list all the properties for duration FEEL value type, the property hours (plural) is inadvertently spelled with the capital H, but it should be lower case hours

    Proposal

    With reference to DMN v1.4 dtc-21-12-01 pdf
    in table Table 66: Specific semantics of date, time and duration properties
    printed page 133, PDF counted page 149
    change the cell reading Hours with capital H
    from: Hours
    to: hours
    so that all cells in the leftmost column are in lowercase.

  • Reported: DMN 1.4b1 — Mon, 10 Oct 2022 14:17 GMT
  • Updated: Fri, 14 Oct 2022 15:50 GMT

There are questions regarding precedence of operator between negation and exponation

  • Key: DMN15-109
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    in FEEL -4**2 = 16
    Some may expect = -16

  • Reported: DMN 1.4 — Tue, 5 Jul 2022 17:03 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT

Positive unary tests lack equality operators

  • Key: DMN15-108
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    Currently the positive unary tests support all relational operators but not the equality operators (= !=). We should support them for consistency. For example, all the above operators are supported in comparison expressions (rule 49).

    Business analysts have reported that they would like to have a consistent and more readable way to write rules and test cases with many comparison operators.

  • Reported: DMN 1.4b1 — Tue, 31 May 2022 08:40 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT

No Mapping of FEEL to JSON

  • Key: DMN15-101
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    Current DMN Specification v1.4 does not define a mapping of FEEL to JSON, while it already provides mapping for Java, XML, PMML in chapter "10.3.2.12 Mapping between FEEL and other domains"

    This capability can be useful in other use-cases beyond mapping itself. For example, but not limiting to: the need for external REST-based invocation of externally defined (stateless, side-effect-free) decision services.

  • Reported: DMN 1.4 — Wed, 13 Apr 2022 13:22 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT
  • Attachments:

No built-in function to support Range conversion

  • Key: DMN15-99
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    Current DMN Specification v1.4 does not define a Built-in function to support Range conversion.

    This capability can be useful in other use-cases beyond conversion itself. For example, but not limiting to: the need to have FEEL:range as an input of the model, the need for external REST-based invocation of externally defined (stateless, side-effect-free) decision services, etc.

  • Reported: DMN 1.4 — Wed, 13 Apr 2022 13:07 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT
  • Attachments:

Gaps: Range as input, mapping to JSON, evaluation of non-FEEL expression languages

  • Key: DMN15-96
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    Current DMN Specification v1.4 has a few gaps in the following areas:

    1. Built-in function to support Range conversion
    2. Mapping of FEEL to JSON
    3. Evaluation of other expression language beyond FEEL

    In addition to the above gaps, during conversations in the OMG DMN RTF group, and in other communities with DMN interests, SMEs and Vendors have reported on the missing capabilities for a complete, semantically well-defined and interoperable solution, connected to the mentioned cases. For example, but not limiting to: the need to have FEEL:range as an input of the model, the need for external REST-based invocation of externally defined (stateless, side-effect-free) decision services, etc.

    The pragmatic aspects introduced in this proposal to cover the mentioned gaps above, could also be a meaningful foundational and propaedeutic work if the OMG DMN RTF group will want to pursue to eventually propose the DMN Specification to ISO, and/or the group will want to pursue to eventually refactor FEEL into its own stand-alone Specification.

    Finally, the DMN Specification already provides recommendations in the Annex(es) for integrations, in the scope of BPMN, etc., for harmonised semantic and potential improved interoperability; the DMN Spec could also offer similar recommendations in the scope of gap 3 identified above.

    This document advances pragmatic proposals that would both cover the existing gaps and provide the capabilities required to a well-defined and more interoperable solution.

  • Reported: DMN 1.4 — Fri, 25 Mar 2022 08:29 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT

Typo in "10.3.1.2 Grammar rules" 3rd bulletpoint in the bottom

  • Key: DMN15-94
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    With reference to DMNv1.4 dtc-21-12-01,
    section "10.3.1.2 Grammar rules",
    page 104 (PDF 120)
    the 3rd bulletpoint in the bottom is referring to the wrong grammar rule number.

    This is likely a typo originating from the need of additional grammar rules being added in previous version of the Spec.

    This can be trivially fixed editorially, with the associated proposal.

  • Reported: DMN 1.4 — Thu, 17 Mar 2022 17:22 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT

Incorrect reference to FEEL rule

  • Key: DMN15-106
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    In the following bullet point:

    In rule 62, the only permitted functions are the builtins date, time, date and time, and duration.

    the correct reference is rule 60 where the date time literals are defined.

  • Reported: DMN 1.4b1 — Tue, 31 May 2022 07:56 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT

Underspecified when ranges may include a qualified name for the endpoint, which resolves to null

  • Key: DMN15-78
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    It is underspecified when the ranges may include a qualified name for the endpoint, which resolves to null.

    This was identified by Greg McCreath and Octavian Patrascoiu during TCK contributions.

    Ranges' Endpoints can be either a literal or a qualified name. If the qualified name resolves to null, and the endpoint inclusivity flag is false, it is semantically equivalent to the case of single-endpoint-range. This leads to ambiguity in Table 55: Semantics of decision table syntax

    This also requires the typo fix in https://issues.omg.org/browse/INBOX-1337

    Example

    With reference to examples in Table 42: Examples of range properties values

    Instead of (1..10]
    do consider (x..10]
    if x resolves to null
    then this is semantically equivalent to <=10.

    However, Table 55, row 9, cites:

    e1 in (e2..e3] is equivalent to e1 > e2 and e1<=e3
    
    // exercise by hand..
    e1 in (x..10] is equivalent to e1 > x and e1<=10
    // if x resolves to null..
    e1 in (null..10] is equivalent to e1 > null and e1<=10
    e1 > null and e1<=10
    

    which is NOT equivalent to e1<=10, hence the ambiguity.

  • Reported: DMN 1.3 — Sun, 5 Sep 2021 07:18 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT

UNused Requirements are considered invalid

  • Key: DMN15-88
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    Executive summary: by the way the DMN specification stands, the description that Requirements SHALL (== "MUST") be referenced in the expression will nullify any CL1 DMN model and any DMN model not using FEEL, as not-conformant.

    In section 7.3.4 InformationItem metamodel we read:

    A variable representing an instance of Decision or InputData referenced by an InformationRequirement SHALL be referenced by the value expression of the decision logic in the Decision element that contains the InformationRequirement element. A parameter in an instance of BusinessKnowledgeModel SHALL be a variable in the value expression of that BusinessKnowledgeModel element.

    By side effect of this strict mandate in the specification, it is like saying an UNused requirement will fail conformance.

    Example: a decision enlist A, B, C as Requirements, but in the formula we use only A and B. According to the current spec, this makes the model failing conformance and invalid.

    Granted, it is always a best practice not only for BA but also for developers to avoid "unused requirements/variable"!
    But here is giving a strict mandate.

    Further, any DMN model which does not use FEEL "only DRG" automatically fail this constraint which is in Chapter 7.

    The DMN specification should follow best-practices of Modeling AND programming languages, where is NOT a blocking issue to have "unused requirements/variables", but of course warn when those are detected; this can be easily achieved by switching SHALL to SHOULD in the identified paragraphs in chapter 7.1 and 7.3.4 per proposal.

    This issue was detected in the TCK group (ref https://github.com/dmn-tck/tck/issues/487 )

  • Reported: DMN 1.4 — Sun, 27 Feb 2022 20:45 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT

Table 62 limited to "negative numbers"

  • Key: DMN15-86
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    In 10.3.2.15 Semantic mappings,
    Table 62: Semantics of negative numbers

    per its description is limiting to negative numbers, but by Table 59 it's possible to multiply a duration (years and months duration, days and time duration) by a number.

    Hence, it's already possible to do

    duration("PT1H")*-1
    

    but formally is not allowed to do

    -duration("PT1H")
    

    It should be easier to widen the semantic of Table 62 to negate numbers AND duration to allow the second case.

    This was identified in the TCK group, ref https://github.com/dmn-tck/tck/issues/482

  • Reported: DMN 1.4 — Sun, 27 Feb 2022 20:23 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT

Enumerations can only be defined as strings

  • Key: DMN15-18
  • Status: open  
  • Source: Decision Management Solutions ( James Taylor)
  • Summary:

    Item Definitions can share constraints and these constraints are specified as unary tests. This allows definitions such as requiring a positive number ( >0) or restricting a field to a specific value ("high", "medium", "low").

    However this requires enumerations to be strings and does not allow enumerations to be managed (sorted for instance). In addition, an enumerated list might be used for a set of Information Items but it must be repeated in Decision Tables when columns are meant to be restricted to the list of values.

    DMN should allow for the creation and management of enumerations:

    • Name
    • Description (optional)
    • List of enumerated values (optionally with a sort order)

    These enumerations should be considered symbolic constants, not strings

    FEEL functions should be created to:
    Get the list of of allowed values for a specified enumeration
    Check a value against an enumeration to see if it is an allowed value for that enumeration
    Check the sort order of some specified values in the context of an enumeration

    Decision Tables should be able to reference an enumeration by name in the value list row
    Information Items should be able to be linked to an enumeration

  • Reported: DMN 1.1 — Thu, 26 Oct 2017 16:12 GMT
  • Updated: Thu, 29 Sep 2022 00:50 GMT

Collect decision tables

  • Key: DMN15-31
  • Status: open  
  • Source: FICO ( 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
  • Updated: Tue, 13 Sep 2022 16:27 GMT

Add two new concrete numeric types, make number abstract

  • Key: DMN15-16
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    Currently S-FEEL / FEEL contains only one single numeric type called number that matches the semantics defined in IEEE 754-2008.

    This can lead to some strange constructions, such as
    substring("footbar", 3.67)
    perfect valid in FEEL.

    It also has impact on the performance of the execution (speed).

    Here is my proposal:

    • keep number as an abstract type to backwards compatibility
    • add a new concrete type real/float/decimal that matches the semantics of defined in IEEE 754-2008
    • add a new concrete type integer
    • change the signature of all built-in functions to restrict number to integer when it makes sense (e.g. index in a string and list, length of string. size of list)
    • add a separate paragraph to specify the implicit conversions performed by the FEEL processor when required (e.g. function resolution). For example,
      2 + 4.5 leads to a promotion 2 -> 2.0 that adding it 4.5.

    If we agree in principal all start working on it.

  • Reported: DMN 1.1 — Wed, 6 Dec 2017 13:44 GMT
  • Updated: Tue, 7 Jun 2022 17:30 GMT

Acknowledgements for DMN 1.4 and 1.5 contributors needed

  • Key: DMN15-104
  • Status: open  
  • Source: Camunda Services GmbH ( Falko Menge)
  • Summary:

    Section "4.1 Acknowledgements" is missing paragraphs to acknowledge the DMN 1.4 and 1.5 contributors, especially since some people left the task force.

  • Reported: DMN 1.4b1 — Tue, 24 May 2022 17:46 GMT
  • Updated: Tue, 24 May 2022 17:46 GMT

No way to represent a black-box or incompletely defined Decision Service


DMN 1.4 updated XMI references external file DMN14.mdxml

  • Key: DMN15-98
  • Status: open  
  • Source: Airbus Group ( Oliver Kellogg)
  • Summary:

    The dtc/21-12-03 "DMN14.xmi updated" contains some references to a file DMN14.mdxml,

    252:        <type href="DMN14.mdxml#_17_0_5_1_a250249_1518651646564_243499_3956"/>
    655:        <type href="DMN14.mdxml#_17_0_2_3_ea50349_1435268843602_88699_2217"/>
    656:        <association href="DMN14.mdxml#_17_0_2_3_ea50349_1435269041753_841899_2676"/>
    666:        <type href="DMN14.mdxml#_17_0_2_3_ea50349_1435268832194_670602_2213"/>
    667:        <association href="DMN14.mdxml#_17_0_2_3_ea50349_1435269293045_464837_2775"/>
    677:        <type href="DMN14.mdxml#_17_0_2_3_ea50349_1435268824892_950814_2209"/>
    678:        <association href="DMN14.mdxml#_17_0_2_3_ea50349_1435269539220_831013_2875"/>
    2298:      <memberEnd href="DMN14.mdxml#_17_0_5_1_a250249_1518651855436_638563_4054"/>
    

    Please check whether those references are intended and if so, please clarify where to obtain that file.

  • Reported: DMN 1.4 — Mon, 4 Apr 2022 21:56 GMT
  • Updated: Wed, 6 Apr 2022 15:55 GMT

Functions cannot invoke external services

  • Key: DMN15-91
  • Status: open  
  • Source: Decision Management Solutions ( James Taylor)
  • Summary:

    The current definition of externally-defined functions only allows Java and PMML external functions. There are clear use cases for allow an external (stateless and side-effect free) service to be used in this way.

  • Reported: DMN 1.4 — Wed, 16 Mar 2022 19:34 GMT
  • Updated: Wed, 16 Mar 2022 19:40 GMT

Typo in 6.3.7 Decision metamodel

  • Key: DMN15-83
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    In the chapter "6.3.7 Decision metamodel",
    a reference is made to the fact a Decision's Name MUST be unique in the model, but there is likely a wrong copy-paste of a sentence from other section of the spec.

    It currently reads as:

    The name of an Invocable must be different from the name of any other invocable, input data, decision, or import in the decision model.

    But a Decision is NOT an Invocable.

    In the chapter "6.3.9 Business Knowledge Model metamodel" the same pharse is used and there is valid since a BKM is indeed an Invocable.

    In the chapter "6.3.11 Input Data metamodel" the analogous phrase is correctly adapted, since it reads as:

    The name of an InputData must be different from the name of any other decision, input data, business knowledge model, decision service, or import in the decision model.

    Conclusion

    Only in chapter chapter "6.3.7 Decision metamodel" the phrase is wrong as referring to "Invocable" when in fact it should have just used the term "Decision". The proposal will address this accordingly.

  • Reported: DMN 1.4 — Wed, 19 Jan 2022 12:58 GMT
  • Updated: Wed, 2 Mar 2022 00:53 GMT

Typo in 8.3.1 Decision Table metamodel "DecsionTable"

  • Key: DMN15-81
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    In the paragraph of 8.3.1 Decision Table metamodel

    DecisionTable inherits all the attributes and model associations from Expression. Table 32 presents the additional attributes and model associations of the DecsionTable element.

  • Reported: DMN 1.4 — Wed, 5 Jan 2022 08:48 GMT
  • Updated: Wed, 2 Mar 2022 00:53 GMT

Typo in the DMN 1.4 XSD schema (complexType tFilter)

  • Key: DMN15-79
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    Typo of spurious trailing whitespace in the name of the complexType "tFilter " (notice the extra space at the end) make XSD validators to fail to validate the XML Schema itself.

  • Reported: DMN 1.4 — Mon, 3 Jan 2022 16:30 GMT
  • Updated: Wed, 2 Mar 2022 00:53 GMT

Clarification on syntax of DMNReference


Allow for partial temporal values

  • Key: DMN15-69
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    It should be possible to define partial temporal values but only for trailing precisions (i.e., if you specify a day, you must also specify a year and month)
    Values of type Date, the precision unit must be one of: years, months, or Days
    e.g. date( 2019 ), date( 2019, 09 ), date( 2019, 09, 17)
    Values of type Time, the precision unit must be one of: hours, minutes, or seconds
    e.g. time( 09 ), time( 09, 55), time( 09, 55, 00)
    Values of type Date and Time, the precision unit must be one of: years, months, days, hours, minutes, or seconds
    e.g. date and time( date(2019,09,17), time(09,55) ), date and time( “2019-09-17T09:55”)

    Operations carried out on elements with different time based precision units shall be done based on the lowest common precision unit (truncating any resulting decimal portion) 

  • Reported: DMN 1.3 — Tue, 26 Jan 2021 22:17 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Change to the "at literal" in FEEL

  • Key: DMN15-70
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    Currently the at literal = "@", string literal
    Rather than a string following the @ symbol we would use the ISO 8601 format.
    For date : @YYYY-MM-DD e.g. @2019-09-17
    For time : @THH:MM:SS e.g. @T09:55:00
    For date and time : @YYYY-MM-DDTHH:MM:SS e.g. @2019-09-17T09:55:00
    For duration : @P[n]Y[n]M[n]DT[n]H[n]M[n]S where [n] is a number
    e.g. @P18M, @P365D, PT48H

  • Reported: DMN 1.3 — Tue, 26 Jan 2021 22:11 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Adding a new interval built-in function

  • Key: DMN15-71
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    Add a new interval built-in function called: width of( Interval )
    to offer the behavior as follows:
    width of( (1..10] ) = 9
    width of( [1..10] ) = 10
    width of( (1..10) ) = 8
    width of( [ time(“09:55:00”)..time(“10:35:00”) ] ) = PT40M

  • Reported: DMN 1.3 — Tue, 26 Jan 2021 22:03 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Allow input data to be of type Interval

  • Key: DMN15-72
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    In many situations, it is desirable to have a data input that is an interval. Particularly when it comes to temporal logic many situations requires one to enter the "Valid Period", the "Measurement Period", the "Disccount Period" etc
    To currently achieve this requires to create two data inputs (one for the start data/time and one for the end data/time) and then assembling them into an interval named "Period using a literal expression [start..end].

  • Reported: DMN 1.3 — Mon, 25 Jan 2021 20:17 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Missing InformationItem Association?

  • Key: DMN15-77
  • Status: open  
  • Source: BPM Advantage Consulting ( Stephen White)
  • Summary:

    In other sections in the spec, InformationItem is described as storing the data through an ItemDefinition or Expression. Figure 6.16 shows that InformationItem has a /type association with ItemDefinition. Other figures show this also.
    But the table in the section on InformationItem (7.3.4) doesn't list this association and ItemDefinition is not mentioned in the section.

  • Reported: DMN 1.3 — Fri, 10 Jul 2020 21:28 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Links with other standards

  • Key: DMN15-75
  • Status: open  
  • Source: FICO ( Alan Fish)
  • Summary:

    A "bucket" for collecting related issues around external links

  • Reported: DMN 1.3 — Tue, 3 Nov 2020 18:17 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Incorrect typeRef for variables associated to BKMs

  • Key: DMN15-74
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    The typeRef attribute in the variable attribute of Business Knowledge Models in file 'Chapter 11 Example.dmn' from the examples archive is incorrect. The values references the output type (e.g. an item definition) and not a function item (introduced in DMN 1.3).

    According to DMN 1.3 (Table 14, page 57), the semantic of variable attribute is:

    This attribute defines a variable that is bound to the
    function defined by the FunctionDefinition, allowing
    decision logic to invoke the function by name.

    Hence, the typeRef attribute has to reference a FunctionItem, Any or no type at all.

    The issue was reported initially by Daniel Thanner in the TCK group (https://github.com/dmn-tck/tck/issues/376) and lead to the introduction of FunctionItems.

    Proposal:

    There are 3 ways to address this:
    1. Remove typeRef from variables in BKMs
    2. Change value to Any
    3. Create FunctionItems for every BKM in the dmn file and reference them

  • Reported: DMN 1.3 — Mon, 14 Dec 2020 18:07 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

The "schemaLocation" relative URLs are broken

  • Key: DMN15-76
  • Status: open  
  • Source: Mayo Clinic ( Davide Sottara)
  • Summary:

    In DMNDI13.xsd:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/"
    xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/"
    xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/"
    targetNamespace="https://www.omg.org/spec/DMN/20191111/DMNDI/"
    elementFormDefault="qualified" attributeFormDefault="unqualified">

    <xsd:import namespace="http://www.omg.org/spec/DMN/20180521/DC/"
    schemaLocation="DC.xsd"/>
    <xsd:import namespace="http://www.omg.org/spec/DMN/20180521/DI/"
    schemaLocation="DI.xsd"/>

    The schemaLocations for the DC/DI schemas that were introduced in DMN1.2 have not been upgraded to take into account the new URL for DMN 1.3
    While the relative location worked for DMN 1.2 (v20180521), the relative URLs resolve to https://www.omg.org/spec/DMN/20191111/DC.xsd (resp DI.xsd)

    This causes issues with tools such as IDEs and schema validators that try to resolve the URLs of the imports.
    The schemaLocations should be updated to use full URLs

  • Reported: DMN 1.3 — Mon, 14 Sep 2020 22:04 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

No way to show relative multiplicity of decisions and their information requirements

  • Key: DMN15-62
  • Status: open  
  • Source: Decision Management Solutions ( James Taylor)
  • Summary:

    Item Definitions are hierarchical so the top level one in an Input Data or a Decision might not be a collection while one or more of those contained are. This means that there may be a collection to process even if the Input Data or Decision is not marked as a collection (see DMN14-123 for this separate issue). It should be possible to show both "fan in" where multiple instances of the source of the requirement are used by a single instance of a decision and "fan-out" when the source of requirement contains a collection which will be processed one at a time by the decision.

  • Reported: DMN 1.3 — Wed, 24 Feb 2021 05:36 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT
  • Attachments:

Ambiguous named params for before() and after() range functions

  • Key: DMN15-67
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    The `before` and `after` range functions have ambiguous invocation when using named params. Both functions have 4 variants - take `before` as an example:

    ```
    (a) before(point1, point2)
    (b) before(point, range)
    (c) before(range, point)
    (d) before(range1, range2)
    ```

    If I invoke `before(range: [1..10], point: 1)` is it for variant (b) ... or (c) ... ?

    Suggest renaming the param names or making the variants separate functions.

  • Reported: DMN 1.3 — Tue, 2 Feb 2021 23:38 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

FunctionItem `parameters` array attribute is plural, not singular in name

  • Key: DMN15-68
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    The `parameters` attribute of the new FunctionItem introduced in DMN 1.3 is plural in name and not singular like all other array attributes described in the meta-models. This is an exception.

    This leads to an XML form where each `<parameters>` element contains one parameter.

    Recommendation. Change FunctionItem array attribute `parameters` to `parameter`. Another possibility is to deprecate `parameters` in favour of `parameter` and drop support in a future version.

  • Reported: DMN 1.3 — Tue, 2 Feb 2021 22:55 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

P0D == P0Y in SFEEL, but it is unclear if P0D == P0Y in FEEL

  • Key: DMN15-64
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    Section 9.4 says "Comparison operators are defined only when the two operands have the same type, except for years and months duration
    and days and time duration, which can be compared for equality. Notice, however, that “with the exception of the zerolength
    duration, no instance of xs:dayTimeDuration can ever be equal to an instance of xs:yearMonthDuration.”

    Thus stating that `P0D == P0Y` despite the fact they are different types and do not comply with the type-lattice equivalency. This is as per the XPATH operation `op:duration-equal` that the spec says equality here conforms to.

    It is not crystal clear if this applies to FEEL as well as SFEEL though the same sections does say:

    > The semantics of S-FEEL expressions are defined in this section, in terms of the semantics of the XML Schema datatypes
    and the XQuery 1.0 and XPath 2.0 Data Model datatypes, and in terms of the corresponding functions and operators
    defined by XQuery 1.0 and XPath 2.0 Functions and Operators (prefixed by “op:” below). A complete stand-alone
    specification of the semantics is to be found in clause 10.3.2, as part of the definition of FEEL. Within the scope of SFEEL,
    the two definitions are equivalent and equally normative.

    So, "Within the scope of SFEEL, the two definitions are equivalent and equally normative." seems to indicate that it does hold true for FEEL.

    My recommendation is that `P0D == P0Y` does apply to FEEL because it would make sense to a business person. `1 Apple != 1 Orange`, but zero apples is really the same as zero oranges, or zero anything for that matter. And, in practice, zero days really is the same as zero years.

  • Reported: DMN 1.3 — Fri, 19 Feb 2021 09:31 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Spec does not mandate that all formal parameters are utilised.

  • Key: DMN15-60
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    Section "10.5.3 FunctionDefinition metamodel" does not specify that formal parameters must be utilised in the function logic . As DMN is a self-documenting decision executable this leads to a situation where (documented) parameters may be defined but unnecessary.

    I propose the following paragraph is added to section "10.5.3 FunctionDefinition metamodel":

    "The body expression of a FunctionDefinition SHALL utilise every formal parameter. "

  • Reported: DMN 1.3 — Thu, 25 Mar 2021 08:25 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

DRG requirements only state am unused knowledge requirement is illegal

  • Key: DMN15-61
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    Subsection "6.2.2.2 Knowledge Requirement notation" of "6.2.2 DRD Requirements" states that knowledge requirements must be utilised in the decision/BKM knowledge requirement:

    "If e is a decision or a BKM in some DRD, and e contains a knowledge requirement on some invocable element b, then the logic of e must contain an invocation expression of b, including expressions for each of b's parameters."

    However, this section does not mandate that Information Requirements must also be utilised by the requiring DRG element in the same way that a knowledge requirement must. If a purpose of DMN is to serve as documentation and show actual relationships between decision elements then it is paramount the DRG reflects actual usage in the model, otherwise the graph is incorrect - it may show relationships that do not reflect the decision-making reality.

    I propose adding the following to section "6.2.2.1 Information Requirement notation":

    "If e is a DRG element in some DRD, and e contains an information requirement on some other DRG element b, then the logic of e MUST contain a usage of the information provided by b"

  • Reported: DMN 1.3 — Thu, 25 Mar 2021 08:10 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

No way to tell that a Decision iterates over a collection

  • Key: DMN15-63
  • Status: open  
  • Source: Decision Management Solutions ( James Taylor)
  • Summary:

    There is no visual way to show that a decision iterates over a collection at the top level.

  • Reported: DMN 1.3 — Wed, 24 Feb 2021 05:31 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

the operation of is() function is not well specified

  • Key: DMN15-66
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    The new is() function is in a spec section called "Date and time functions" but it is unclear if it related only to date and time types. The examples only show date and time. Though it would seem reasonable that is also handled datetime type as well.

    Additionally, it references section 10.3.2.2 for descriptions of semantics and that section deals with ore than just date and time. It also deals with other 'primitive' types - so it is unclear if is() relates to these also. Additionally, that section does not deal with other types like range/context/function/list so it is not clear if is() deals with all types in that section, and indeed other types as well.

    By example, is it not evident if is({},{}) is true, false, or illegal. Similarly for is([1], [1]) or is(1,1), or is([null..2], < 2).

    Additionally, it is also unclear (to me) from the semantic description whether is(@"2021-02-19T10:10:10Z", @"2021-02-19T10:10:10@Etc/GMT") as they are both UTC forms. The spec says they are 'comparable', but does that relate to is()?

  • Reported: DMN 1.3 — Fri, 19 Feb 2021 10:20 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Add an itemKind property to ItemDefinition

  • Key: DMN15-57
  • Status: open  
  • Source: BPM Advantage Consulting ( Stephen White)
  • Summary:

    SDMN, BPMN, and CMMN have a property that specifies the kind of element that is being modeled. The set of enumerations for this property include: data, conceptual, physical, etc.
    SDMN is directly referencing DMN’s ItemDefinition, but is extending the element to include this “itemKind” property.
    If this property makes sense in the DMN context and is added in DMN 1.4, then SDMN would not have to extend ItemDefinition for this property.
    SDMN extends ItemDefinition in other ways, which will be addressed by separate issues.

  • Reported: DMN 1.3b1 — Tue, 6 Apr 2021 22:11 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Spec does not mandate that all user-defined function parameters are utilised

  • Key: DMN15-59
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    Section "10.3.2.13.2 User-defined functions" provides definition and invocation semantics for user defined functions but permits unused parameters.

    As DMN is to be 'executable documentation' I suggest that unused parameters provide documentation that does not reflect reality.

    I propose the follow additional paragraph to "10.3.2.13.2 User-defined functions" :

    "The body expression of a user-defined function SHALL utilise every formal parameter. "

  • Reported: DMN 1.3 — Thu, 25 Mar 2021 08:35 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Figure 10.17 defines DMN Expressions and lists its specializations, but it does not list Unary Tests.

  • Key: DMN15-54
  • Status: open  
  • Source: BPM Advantage Consulting ( Stephen White)
  • Summary:

    Figure 10.17 defines DMN Expressions and lists its specializations, but it does not list Unary Tests.
    UnaryTest should be added to the diagram.

  • Reported: DMN 1.3 — Wed, 1 Jan 2020 00:23 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

"instance of" not possible with some built-in functions

  • Key: DMN15-53
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    some built in functions are overloaded in that they can have multiple signatures. So, say, performing an "instance of" to compare against the function "min" is meaningless as the signature is not known unless it is invoked.

    Unless the type system is to take into account overloaded functions?

  • Reported: DMN 1.2b1 — Thu, 15 Nov 2018 08:15 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Inconsistency DMNv1.2 dropping [a]=a and get entries example

  • Key: DMN15-52
  • Status: open  
  • Source: Red Hat ( Matteo Mortari)
  • Summary:

    Since DMNv1.2 the spec dropped the equivalence of:

    [a] = a
    

    because it does not apply to the statement that

    a singleton list L, when used in an expression where a list is not expected, behaves as if L[1] is written.

    So the expression

    [a] = a
    

    on DMNv1.2 is expected to return false.

    However, in section 10.3.2.6 Context of the spec, it provides the following statement for the get entries function:

    To retrieve a list of key,value pairs from a context m, the following built-in function may be used: get entries(m).
    For example, the following is true:

    get entries({key 1 : "value 1 "})[key="key 1 "].value = "value 1 "
    

    BUT

    get entries({key1 : "value1"})[key="key1"].value = "value1"
    
      by substitution:
    
    [ { key : "key1", value : "value1" } ][key="key1"].value = "value1"
    [ { key : "key1", value : "value1" } ].value = "value1"
    [ "value1" ] = "value1"
    

    according to DMNv1.2 should be false

    By the same principle that the DMNv1.2 for the following literal expression:

    [123] = 123
    

    on DMNv1.2 is expected to be false

  • Reported: DMN 1.2b1 — Wed, 30 Jan 2019 14:43 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

properly define type(e)

  • Key: DMN15-51
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    In some places the spec uses type(e) and other places type(e). These are different. The former provides a type-checking function that can validate a FEEL expression e without input data values (although some kind of scope is needed for disambiguation). The latter simply returns the datatype of the semantic domain element e. The former is more useful to implementors, but more work to specify. Essentially, all the semantic mapping tables need a new column to specify the result type given the input types, for each FEEL operator and builtin. The latter is a matter of generalizing Table 39. It must cover cases such as type([0,false]). It should be clear that type(e) as a function must return the most specific type (and there must be only 1), but informally the types also include those that are conformed to, so for example, [1,2,3] has types list<number>, list<Any>, Any.

  • Reported: DMN 1.2 — Tue, 27 Nov 2018 22:31 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Typos in the XMI files

  • Key: DMN15-56
  • Status: open  
  • Source: Camunda GmbH ( Maciej Barelkowski)
  • Summary:

    I found two typos in the XMI files:
    1. In the DMNDI12.xmi, lines 510-512:

    ```
    <packagedElement xmi:type="uml:Class" xmi:id="_18_1_f7a0369_1441612964861_428140_5975"
    name="DC::Style"
    isAbstract="true"/>
    ```

    The class cannot refer to dc:Style as such class does not exist. The XSD refers to di:Style.

    2. In the DMN12.xmi, lines 956-958:

    ```
    <ownedAttribute xmi:type="uml:Property" xmi:id="_17_0_3_1_42401a5_1375643571589_681805_3414"
    name="input
    "
    visibility="public"
    ```

    Attribute name includes an encoded newline character (`\n`) which is not present in the XSD.

  • Reported: DMN 1.2 — Thu, 19 Dec 2019 13:19 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Figure 8-20 shows UnaryTests as being a specialization of DMNElement when it has been changed to be a specialization of Expression

  • Key: DMN15-55
  • Status: open  
  • Source: BPM Advantage Consulting ( Stephen White)
  • Summary:

    Figure 8-20 shows UnaryTests as being a specialization of DMNElement when it has been changed to be a specialization of Expression. The figure should be updated.
    This is similar to the issue for Figure 6-10, which has the same problem.

  • Reported: DMN 1.3 — Wed, 1 Jan 2020 00:21 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Clarification on DMN case sensitivity of timezones

  • Key: DMN15-50
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    DMN spec refers to usage of iana timezones. iana does not specify that timezones are case-sensitive - that is up to the implementation. https://data.iana.org/time-zones/theory.html: re zone naming:

    "Do not use names that differ only in case. Although the reference implementation is case-sensitive, some other implementations are not, and they would mishandle names differing only in case."

    This issue is seeking clarification via the spec as to whether DMN's usage of time zones permits case insensitivity such that "etc/utc" is the same zone as "Etc/UTC" ... or not.

  • Reported: DMN 1.2 — Sat, 16 Mar 2019 01:12 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Support for recursive calls by Business Knowledge Models

  • Key: DMN15-49
  • Status: open  
  • Source: Montera Pty Ltd ( Greg McCreath)
  • Summary:

    The definition of "well formed" for a BusinessKnowledgeModel excludes the notion of the encapulatedLogic of a BusinessKnowledgeModel being able to invoke itself to permit recursion. There is no means to define a 'self' relationship via knowledgeRequirements - the spec forbids it.

    However, vendors are currently supporting BusinessKnowledgeModel recursion simply by permitting a BusinessKnowledgeModel's encapulatedLogic to invoke the contained BusinessKnowledgeModel as a function using the contained BusinessKnowledgeModel's name. I propose we formalise this in the spec.

    I propose that after the definition of well-formed on page 56/57 (repeated below):

    "An instance of BusinessKnowledgeModel is said to be well-formed if and only if, either it does not have any knowledgeRequirement, or all of its knowledgeRequirement elements are well-formed. That condition
    entails, in particular, that the requirement subgraph of a BusinessKnowledgeModel element SHALL be acyclic, that is, that a BusinessKnowledgeModel element SHALL not require itself, directly or indirectly. "

    The following paragraph is added:

    "However, the encapsulatedLogic within a BusinessKnowledgeModel may invoke itself in a recursive manner by using the name of the containing BusinessKnowledgeModel as an invokable name."

  • Reported: DMN 1.2 — Sat, 6 Apr 2019 02:38 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Lack of visual notation for processing of / iteration over lists in FEEL

  • Key: DMN15-48
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    split off from DMN13-12

  • Reported: DMN 1.2 — Tue, 20 Nov 2018 17:55 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Temporal precision inconsistencies

  • Key: DMN15-43
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    The spec sometimes refers to the temporal precision as milliseconds and sometimes to seconds. Sections 10.3.2.3.3, 10.3.2.3.5 and 10.3.2.3.6 refer to Seconds whereas table 48 offers a semantic of Milliseconds

  • Reported: DMN 1.2b1 — Tue, 16 Jul 2019 14:02 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Clarification regarding equivalence of date vs date and time

  • Key: DMN15-44
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    Section 10.3.2.3.5 date contains the following:

    Where necessary, including the valuedt function (see 10.3.2.3.6), a date value is considered to be equivalent to a date time value in which the time of day is UTC midnight (00:00:00).

    Is not obvious when the equaivalence should be applied.

    One option is to add an implicit conversion, similar to the ones for singleton lists.

  • Reported: DMN 1.2 — Sun, 2 Jun 2019 13:01 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT
  • Attachments:

Friendlier handling of null values

  • Key: DMN15-47
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    E.g. in aggregation, default for item definition, see examples in DMN-2, where filters like [item!=null] are used repeatedly

  • Reported: DMN 1.2b1 — Tue, 21 May 2019 16:53 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Provide better spec and examples for Equality, Identity, and Equivalence

  • Key: DMN15-46
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    the builtin function is() refers to this section. It should cover some pos/neg examples of equality vs. identity, and explain aggregate elements in D, e.g. list of structures.

  • Reported: DMN 1.2b1 — Tue, 28 May 2019 16:40 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Clean up example xml files

  • Key: DMN15-45
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    Sample xml files have Trisotech extension elements. These should be removed prior to publication.

  • Reported: DMN 1.2b1 — Tue, 28 May 2019 16:52 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Situational Data Model and Notation (SDMN)

  • Key: DMN15-40
  • Status: open  
  • Source: BPM Advantage Consulting ( Stephen White)
  • Summary:

    Situational Data is the set of Data Items and their structures that are needed for the performance and understanding of a Knowledge Package Model.
    The details of the Data Items will usually be a subset of the “official” complexity of those items in the environment of the Knowledge Package Model.
    For example, the official definition of the Data Item for Blood Pressure (in healthcare) includes more than 50 properties. A Data Item in a Situational Data Model may need only 2 of those properties for execution of the Processes, Cases, and or Decision Services.
    Semantic References can be added to link the Data Item to the “official” details.
    Uses of the Data Items in BPM+ models that determine the scope of Situational Data include:
    Data required for DMN Decisions
    Data required for BPMN Gateways transitions
    Data required to be passed to/from services invoked by BPMN and CMMN
    Data required to trigger Sentries in CMMN
    Etc.

  • Reported: DMN 1.2b1 — Tue, 10 Sep 2019 18:04 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT
  • Attachments:

inconsistent date comparisons make unavoidavle paradoxes

  • Key: DMN15-39
  • Status: open  
  • Source: fujitsu america ( keith swenson)
  • Summary:

    Date "=" is defined to include the time zone, and "<" and ">" does not. This causes a bunch of problems.

    see: https://social-biz.org/2017/08/03/a-strange-feeling-about-dates/

    Suggestion is simple: define date equality to be (date1 - date2 == 0) Eliminate the need to compare the "timezone" of the dates.

    My experience with the group is that most suggestions are ignored, so I don't really want to waste any time making a more detailed proposal, but if you have questions about this problem you can contact me.

  • Reported: DMN 1.2 — Wed, 18 Sep 2019 10:01 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

data equivalence with date and time

  • Key: DMN15-42
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    Section 10.3.2.3.5 contains the following:

    Where necessary, including the valuedt function (see 10.3.2.3.6), a date value is considered to be equivalent to a date time
    value in which the time of day is UTC midnight (00:00:00).

    It is not very clear where this equivalence is going to be applied.

    The proposal is to specify the above in a more precise manner, possibly as an implicit conversion.

  • Reported: DMN 1.2 — Mon, 27 May 2019 08:30 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

DMN Models need a default timezone

  • Key: DMN15-38
  • Status: open  
  • Source: fujitsu america ( keith swenson)
  • Summary:

    All date expressions, if the timezone is not explicitly mentioned, are interpreted as being in the timezone of the computer running the code. This means you can design a model that runs correctly in one timezone,a nd incorrectly in a different one.

    Imagine you have a development team in Bangalore which makes a DMN model that runs correctly and passes all the tests. Then it is installed into the company server in London, and it fails.
    Does anyone think this is a good idea?

    The solution is simple: the model should have a default timezone. All date expressions that don't mention the timezone are interpreted according to this default time zone, and NOT according the timezone of the machine you are running on. Then, models will run exactly the same way no matter where it is run. That is a good idea, right?

    See this: https://social-biz.org/2017/08/03/a-strange-feeling-about-dates/

  • Reported: DMN 1.2 — Wed, 18 Sep 2019 09:55 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Knowledge Package Model and Notation (KPMN)

  • Key: DMN15-41
  • Status: open  
  • Source: BPM Advantage Consulting ( Stephen White)
  • Summary:

    A Knowledge Package is mechanism for packaging and distributing a set of BPM+ models (the knowledge)
    A Knowledge Package references separate, but connected BPM+ models (BPMN Processes, CMMN Cases, and DMN Decision Services)
    KPMN is focused solely on the BMI behavioral standards
    A Knowledge Package also contains a Data Item library for the data that will be used by the BPM+ models
    A Situational Data Model and Notation (SDMN) is also being proposed as a potential BMI standard to be added to the BPM+ stack (see separate presentation on this topic)
    A Knowledge Package also contains metadata about the topic of the package to aid in understanding the content and to find appropriate Knowledge Packages
    We are still exploring the relationships between KPMN and Provenance and Pedigree
    KPMN includes a diagram to illustrate the scope of the Knowledge Package’s content (a Knowledge Model Diagram)

  • Reported: DMN 1.2b1 — Tue, 10 Sep 2019 17:59 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT
  • Attachments:

Unspecified conclusion is not supported

  • Key: DMN15-35
  • Status: open  
  • Source: Decision Management Solutions ( James Taylor)
  • Summary:

    I remember discussions about allowing "-" in conclusions to mark an unspecified conclusion in a decision table. This would allow some of the conclusions in a multiple output decision table to be marked as "unspecified" where there was no output relevant for that conclusion for a specific rule and to allow rules in multi-hit tables to show that a particular combination of conditions had been considered but did not result in anything being added to the result set.
    However the standard as written says that an output entry must adhere to the literal expression grammar, and '-' is not allowed. You have to return some FEEL value, e.g. 0, false, "N/A", null, etc.

  • Reported: DMN 1.1 — Mon, 13 Jun 2016 21:41 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

notion of arbitrary order conflicts with lack of an unordered collection data type

  • Key: DMN15-34
  • Status: open  
  • Source: Signavio GmbH ( Bastian Steinert)
  • Summary:

    Section "8.2.11 Hit policy" describes that hit policy "Collect: returns all hits in arbitrary order". This implies that the order of the results does not have to be deterministic and can also vary among different implementations. However, the standard only supports the notion of 'lists', which do have an order. The comparison of lists is also specified in a way that the order of elements is significant. The issue might get more clear when thinking about testing the interface of decisions. Strictly speaking, it is currently not feasible to define a test against a decision table with hit policy 'collect'. The expected result can only be defined using a list, whose elements do have an order. The operator to compare the 'expected' and the 'actual' result will also take order into account.

    The issue could easily be resolved by replacing 'arbitrary order' with 'rule order'.

  • Reported: DMN 1.1 — Sun, 26 Jun 2016 10:11 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Fix interchange of links to objects in BPMN/BMM

  • Key: DMN15-37
  • Status: open  
  • Source: Decision Management Solutions ( James Taylor)
  • Summary:

    The current spec uses objects from BMM and BPMN. However it is not at all clear how links to these objects, and the objects at the end of the links, should be interchanged. Does the DMN file contain a snippet of BPMN? Should a separate BPMN file be generated and then referenced? If we are going to have these links then we need to show/explain how to interchange them both with tools that only support DMN (and so only have a few BPMN or BMM objects) and with those that support DMN/BPMN/BMM.

  • Reported: DMN 1.2 — Thu, 27 Sep 2018 01:07 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Metamodel constraints & validation

  • Key: DMN15-30
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    None of the metamodels contain logic constraints. For example, the name of a decision table is the same with the name of the variable defined inside of the decision table tag (invariant at decision table level).

    Ideally these constrains would be used to validate the diagrams before execution (e.g. generating code from Java). Bruce Silver's already covers some of the. We should add them and more in the spec.

    I think the metamodel constraints should be described with OCL – see the UML metamodels. There should be constraints for CL1, CL2 and CL3. It’s very likely the CL3 constraints will be a superset of CL2 constraints.

  • Reported: DMN 1.1 — Sun, 30 Oct 2016 11:45 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

need set operations and equality in FEEL

  • Key: DMN15-33
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    some notes toward a proper description:
    FEEL has ordered lists and some set builtins, e.g. distinct values and union. Lacks intersection and equality.

    [1,2] in (1,2,[1,2], 3) is true

    intersect([1,2,3], [3,1,4]) = [1,3]

    set equals([1,1,3], [3,1]) is true
    probably - distinct values([1,1,3]) = distinct values([3,1])
    maybe change to set([1,1,3]) = set([3,1])
    (set needs to both remove dups and return elements in canonical order)
    what is canonical order [null, 0, {}, []]?
    [1,3] = [3,1] is false

    Another option is to add sets to FEEL semantic domain (along with lists, numbers, contexts, ...). And need syntax.

    simpler and more biz friendly proposal - add 'contains any' and 'contains all' as boolean infix operators taking 2 lists as LHS and RHS. And allow these to be added to unary tests w/o a '?'. E.g. 1,2,3 , in (1,2,3) , contains any (1,2,3), contains all (1,2,3). First 2 are what we have now (2nd allowed for symmetry). Last 2 assume input expr is a list (set).

    if we just add set oriented builtins, but no friendlier syntax, this may not solve the biz problem of allowing DTs to process sets in a user friendly way. Too many ()s and ?s

  • Reported: DMN 1.1 — Thu, 11 Aug 2016 15:35 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

In section 7.3.1 Expression Meta-Model: there is no table to display the typeRef attribute added by Expression to DMNElement

  • Key: DMN15-32
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    In section 7.3.1 Expression Meta-Model: there is no table to display the typeRef attribute added by Expression to DMNElement

  • Reported: DMN 1.1 — Wed, 24 Aug 2016 16:45 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Improvement of Semantic Domains Specification

  • Key: DMN15-27
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    The definition of Semantic Domains / Types in 10.3.2 does not contain:

    • a metamodel
    • relationships between various types

    I propose adding a metamodel and the following two relationship:

    1. Conforms To
    A semantic domain T1 conforms to a semantic domain T2 when an instance of T1 can be substituted at each place where an instance of T2 is expected.

    2. Equivalent To
    A semantic domain T1 is equivalent to a domain T2 iff they have the same name and the corresponding embedded semantic domains are equivalent. (e.g. List<Number> is equivalent only to List<Number> not List <String>).

    The above relationships should be defined via tables, similar to the ones used to describe the semantics of logic operators (page 119 Table 38).

  • Reported: DMN 1.1 — Thu, 30 Mar 2017 12:38 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT
  • Attachments:

Rule 51.c doesn't support FEEL syntax of list with squary brackets as shown on page 122

  • Key: DMN15-26
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    on page 122 in table 43 in row 2 and 3: "e1 in [e2, e3, ...]"
    on page 109 grammar rule 51.c: expression "in" positive unary test
    on page 109 grammar rule 51.c: expression "in" "(" positive unary tests ")"

    The syntax with square brackets is not allowed by the grammar rules 51.c. Either table 43 or grammar definition should be changed.

  • Reported: DMN 1.1 — Wed, 3 May 2017 08:58 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Semantic domain mapping for simple expressions

  • Key: DMN15-28
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    The FEEL grammar contains simple expressions as starting terminal

    page 107 6. simple expressions = simple expression ,

    { "," , simple expression }

    ;

    I could not find a mapping to a semantics domain for it. What is the type / domain of "simple expressions"? A list with element type Any or a Tuple Type with several element types?

  • Reported: DMN 1.1 — Fri, 17 Mar 2017 14:42 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Requested additional built-in functions

  • Key: DMN15-29
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    (from Bruce)
    a. String-join(stringList, separatorString)

    b. Format-number(value, formatString), where formatString (to be negotiated) generally follows Excel or xpath, maybe not all the features.

    c. Format-date(value, formatString), format-dateTime(value, formatString)

  • Reported: DMN 1.1 — Mon, 2 Jan 2017 20:43 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Can an expression in user defined function body reference a name outside of it's scope?

  • Key: DMN15-23
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    If an expression in a user defined function body references a name outside of it's scope (for example a parent scope), this scope must be available also during invocation of the function.

    Examples:

    • {f:function() a, a:1, i:f()}

      possible, since name a is still available in local context (scope) during invocation

    • {b:1,f:function() b}

      .f() impossible, since name b is not available outside of the context.

    It would be nice if the semantic mapping and the differentiation between function definition and invocation is clearly specified in the spec. What names can be referenced? Must the scopes also be available during invocation?

  • Reported: DMN 1.1 — Wed, 3 May 2017 15:24 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

How to get FEEL type if evaluation is not an option?

  • Key: DMN15-22
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    in chapter 10.3.2.10: "Sometimes we do not want to evalutate a FEEL expression e, we just want to know the type of e."

    in table 54: column Applicability defines which row in the table to use, depending on the type of a FEEL expression.

    Table 54 only makes sense if it is not allowed to pre-evaluate the expression e2, since even for a pre-evaluation context entries (for example: "item") must be declared in scope.

    How do we know the type of a FEEL expression if it is not allowed to evaluate it?

    Examples:

    • [1,2,3][min(3,2,1)]
    • {a:function() external {java: {class: "clazz", method signature: "method()"}}, b:[1,2,3][a()]}.b
    • {a: 1, b: a instance of number, c: [1,2,3][b] }
  • Reported: DMN 1.1 — Wed, 3 May 2017 14:56 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Should name declarations in same context fail or overwrite?

  • Key: DMN15-24
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    As I see the spec doesn't define what should happen if in a context a name should be declared that already exists in the current context. Sample FEEL expression: "for i in [1,2,3], i in [4,5,6] return i * i" Does the second definition of i overwrite the first one or should we return null for the complete "for" expression?

  • Reported: DMN 1.1 — Wed, 3 May 2017 09:25 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Missing FEEL semantic mapping for grammar rule 2.i - simple positive unary test

  • Key: DMN15-25
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    For simple positive unary test(s) there are extra entry points in the FEEL grammar. Therefore why do we need simple positive unary test in grammar rule 2.i. What is the semantic mapping?

  • Reported: DMN 1.1 — Wed, 3 May 2017 09:11 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT


FEEL grammar readbility

  • Key: DMN15-19
  • Status: open  
  • Source: Goldman Sachs ( Octavian Patrascoiu)
  • Summary:

    The grammar contains several sub-grammars each one with its own start non-terminal: expression, simple expressions, unary tests.

    The grammar should be broken in several grammars, and common part to make things more obvious. It will help the CL3 implementation.

  • Reported: DMN 1.1 — Sun, 30 Oct 2016 11:37 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Scope of decision table input/output entries is not well defined in the specification

  • Key: DMN15-21
  • Status: open  
  • Source: Trisotech ( Denis Gagne)
  • Summary:

    While the scope of context entry specifically says to include the previous context entry (section 7.3.1), there is no mention for the scope of input and output entries of decision tables.

  • Reported: DMN 1.1 — Mon, 15 May 2017 17:59 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Improve description of built-in function string()

  • Key: DMN15-14
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    The expected output of the built-in function string() should be defined for each type. Otherwise it is unclear what the result for a value, for example of type time, is. Is it the string literal or the full expression with built-in function time()?

    // which FEEL expression is valid?
    string(time("11:00:00")) = "11:00:00"
    string(time("11:00:00")) = "time("11:00:00")"
    

    Recommendation: Introduce a new table that lists example outputs for all types:

    • null -> null
    • boolean -> "true" or "false"
    • string -> "This is a string"
    • number -> "-1.234"
    • date -> "2017-10-11"
    • time -> "11:00:00.123" or "11:00:00.123+02:00" or "11:00:00.123@Europe/Paris"
    • date and time -> "2017-10-11T11:00:00.123" or "2017-10-11T11:00:00.123+02:00" or "2017-10-11T11:00:00.123@Europe/Paris"
    • days and time duration -> "P2DT3H4M5.123S"
    • years and months duration -> "P2Y3M"
    • list -> "[1,2,3]"
    • context -> "{a: true, b: false}"
    • range -> "[1..100]"
    • unary test -> "> 10"
    • function -> null
  • Reported: DMN 1.1 — Wed, 11 Oct 2017 09:02 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Clarification needed if null is passed as value for optional parameter of built in function

  • Key: DMN15-13
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    Some built-in functions has optional parameters. Chapter 10.3.4 describes "Whenever a parameter is outside its domain, the result of the built-in is null."

    Should the following call to a built-in function result to null?

    replace("This is a string", "[a-z]", "#", null)
    

    The optional parameter "flags" of the built-in function replace() is null. Parameter domain is string as stated in table 60 on page 133. Null is not in the domain of type string.

    This topic was already discussed in the DMN TCK. We think that the behavior should be the same as the function is called without the optional parameter:

    replace("This is a string", "[a-z]", "#", null) = replace("This is a string", "[a-z]", "#")
    

    Clarification in the specification is appreciated.

    May be we can change the sentence in chapter 10.3.4 on page 130 to: "Whenever a parameter is outside its domain, the result of the built-in is null. If null is passed as value to an optional parameter, the built-in behaves like no value is passed."

  • Reported: DMN 1.1 — Tue, 10 Oct 2017 14:32 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Introduce a new property "value" for type date, date and time, time, years and months duration, days and time duration

  • Key: DMN15-12
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    Chapter 10.3.2.3.4 time, 10.3.2.3.5 date, 10.3.2.3.6 date-time, 10.3.2.3.7 days and time duration and chapter 10.3.2.3.8 years and months duration defines each a value function. For date time arithmetic operations it would be useful to have this value available in the FEEL semantic domain. Therefore we suggest to add a new property value that is directly available for values of this type. Return type of the value if always a number.

    Table 53 should be adjusted accordingly.

  • Reported: DMN 1.1 — Tue, 10 Oct 2017 09:57 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

No adjustment for last day in month if duration is added/subtracted to date and time value

  • Key: DMN15-11
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    The specification says that the addition/subtraction of a date and time and a years and months duration value is defined as:

    date and time (
       date(e1.year +/– e2.years + floor((e1.month+/– e2.months)/12),
       e1.month +/– e2.months – floor((e1.month +/– e2.months)/12) * 12,
       e1.day), 
       time(e1))
    

    If you apply this expression to the following two values:

    • date and time("2017-08-30T11:00:00Z")
    • duration("P18M")
      you would expect the following results:
    date and time("2017-08-30T11:00:00Z") + duration("P18M")  --> result should be date and time("2019-02-28T11:00:00Z")
    date and time("2017-08-30T11:00:00Z") - duration("P18M")  --> result should be date and time("2016-02-29T11:00:00Z")
    

    If you apply the values to the defined formula, you get:

    date and time (
       date(2017 +/– 1 + floor((8 +/– 6)/12),
       8 +/– 6 – floor((8 +/– 6)/12) * 12,
       30), 
       time("11:00:00Z"))
    

    Addition
    which results for addition into:

    date and time (
       date(2018 + floor(1,1667),
       14 – floor(1,1667) * 12,
       30), 
       time("11:00:00Z"))
    

    which is:

    date and time (date(2019, 2, 30), time("11:00:00Z"))
    

    The adjustment to the last valid day in a month is missing. 30th February is invalid, since February has only 28/29 days.

    Subtraction
    which results for subtraction into:

    date and time (
       date(2016 + floor(0,1667),
       2 – floor(0,1667) * 12,
       30), 
       time("11:00:00Z"))
    

    which is:

    date and time (date(2016, 2, 30), time("11:00:00Z"))
    

    The adjustment to the last valid day in a month is missing. 30th February is invalid, since February has only 28/29 days.

    Recommendation:
    Adjustment to last valid day in month must be added to spec.

  • Reported: DMN 1.1 — Mon, 2 Oct 2017 12:41 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Can the same Definitions/namespace be used by more than one model?

  • Key: DMN15-15
  • Status: open   Implementation work Blocked
  • Source: Red Hat ( Edson Tirelli)
  • Summary:

    Please clarify if it is possible to have multiple models on the same namespace. For instance:

    <definitions namespace="http://my.company/financeModels" name="Model A" ...

    <definitions namespace="http://my.company/financeModels" name="Model B" ...

    The current text of the specification does not say anything explicitly one way or another, so please clarify that.

    In addition to this, if multiple models can use the same namespace, then the <import> element will require an additional attribute (for instance: modelName) in order to uniquely identify which model should be imported.

  • Reported: DMN 1.1 — Thu, 8 Mar 2018 16:20 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Lexical representation of time string has ambiguous definitons

  • Key: DMN15-17
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    A lexical time string is defined o page 131 by XML Schema Part 2 Datatypes (for local times and offset times) and by ISO 8601 with the extended form of a local time (for zoned times).

    Unfortunately XML Schema Part 2 and ISO 8601 has different definitions. Therefore it is unclear which of them to use. Or are both of them valid?

    Additionally the user should not have different lexical time string formats for a local time, an offset time or a zoned time.

    The list of ambiguities:

    • ISO 8601 allows a leading "T" character prefix. XML Schema Part 2 does not.
    • ISO 8601 allows optional seconds. In XML Schema Part 2, the seconds are mandatory.
    • ISO 8601 allows decimal fraction for seconds and minutes. XML Schema Part does not allow this.
    • ISO 8601 allows 00:00:00 and 24:00:00 for midnight. XML Schema Part 2 only allows 00:00:00.
    • ISO 8601 allows time offset of hours only. Minutes are optional. XML Schema Part 2 always requires minutes.

    Therefore clarification is needed. Which definitions are valid for FEEL? The stricter XML Schema Part 2 or the more user friendly ISO 8601 spec?

  • Reported: DMN 1.1 — Mon, 13 Nov 2017 15:24 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Should encapsulated decisions of a decision service include output decisions?

  • Key: DMN15-10
  • Status: open  
  • Source: ACTICO ( Daniel Thanner)
  • Summary:

    Figure 10 on page 25 with text "The encapsulated decisions are therefore

    {Decision 1, Decision 2}

    "

    Figure 11 on page 26 with text "The encapsulated decisions for this services are

    {Decision 1}

    ".

    Table 20 on page 56:

    • "outputDecisions: This attribute lists the instances of Decision required to be output by this DecisionService".
    • "encapsulatedDecisions: If present, this attribute lists the instances of Decision to be encapsulated in this DecisionService".

    For us it is unclear what decisions should be stored in the DMN model as encapsulated decisions. Must the output decisions also be included in the list of encapsulated decisions (as stated on page 25, 26)? Or does the list of encapsulated decisions only hold the decisions contained in the lower compartment of a decision service (as mentioned on 56 since encapsulatedDecisions seems to be optional)?

  • Reported: DMN 1.0 — Tue, 20 Mar 2018 14:49 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Figure 6.15 shows incorrect multiplicity for Decision Service Output Decisions

  • Key: DMN15-9
  • Status: open  
  • Source: BPM Advantage Consulting ( Stephen White)
  • Summary:

    In Figure 6.15 the multiplicity of output decisions for a decision service is shown as zero to many (0..), but the text below and Table 16 says the that multiplicity is one to many (1..). The figure should be correct to match the text and table.

  • Reported: DMN 1.1 — Fri, 3 Aug 2018 21:19 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Enhancement suggestion: make unary tests first class citizens of the FEEL language

  • Key: DMN15-8
  • Status: open  
  • Source: Red Hat Inc ( Edson Tirelli)
  • Summary:

    This is a suggestion for future versions of the spec:

    Add support for Unary Tests as first class citizens of the FEEL language, in a similar way as ranges and functions already are.

    A unary test is really a “predicate”: a single parameter function that returns a boolean. It is syntax sugar on:

    function ( x ) x in <unary_test>

    FEEL already supports functions as first class citizens, so it makes sense to support Unary Tests. The following two syntaxes would then be equivalent:

    is minor : < 18
    is minor : function( age ) age in < 18

    Invoking unary tests explicitly would be like invoking a function:

    Bob is minor : is minor( bob.age )

    More importantly, it would allow the implementation to actually support passing unary tests as parameters to functions and make the example on page 115 viable:

    decision table (
    outputs: "Applicant Risk Rating",
    input expression list: [Applicant Age, Medical History],
    rule list: [
    [ >60, "good", "Medium" ],
    [ >60, "bad", "High" ],
    [ [25..60], -, "Medium" ],
    [ <25, "good", "Low" ],
    [ <25, "bad", "Medium" ]
    ],
    hit policy: "Unique"
    )

    Unary test syntax is not ambiguous, so supporting it would mean to basically change rule 2 in the grammar to include rules 14 and 17 as possible options. The semantic mapping table on page 116 would also need to include a new FEEL value type: "unary test".

  • Reported: DMN 1.1 — Tue, 23 Aug 2016 01:41 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Include Test Cases in Decision Model

  • Key: DMN15-7
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    For interchange of test cases along with a decision model, it would be convenient to define metamodel and xsd elements for a suite of test cases, where a test case contains values for input data and expected values output decisions.

  • Reported: DMN 1.1 — Sat, 28 May 2016 16:25 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT
  • Attachments:

XSD: global context

  • Key: DMN15-5
  • Status: open  
  • Source: Bruce Silver Associates ( Bruce Silver)
  • Summary:

    10.3.2.9.2 says "The global context is a context provided for convenience and 'pre-compilation'. Any number of expressions can be named and represented in a FEEL context m. The syntactic description m of this context can be evaluated once, that is, mapped to the FEEL domain as m, and then re-used to evaluate many expressions." For example, you might want to put a Relation used as a multi-dimensional constant in the global context. Or you might want to put a reusable function definition in the global context. Currently the xsd does not have globals. All expressions are bound to a specific drgElement, not global. The Import element probably needs to be modified to support this also.

  • Reported: DMN 1.0 — Sun, 31 May 2015 16:35 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

No notation for ItemDefinition

  • Key: DMN15-2
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    The notion of a 'type' or ItemDefinition is in the metamodel (with some pending issues) and in the semantics and concepts, but little is in the notation. Thus, we have notation that allows you to execute an expression with actual arguments, but no notation to allow validation based on type information without actual values.

    We have most of the pieces, so it should not be difficult. E.g., individual values can be number, string, date and time, etc. We can allow numeric ranges using our unary tests, e.g. '>0', '[10..30)', etc. We can allow LOVs using "abc", "def", "ghi". These can be 'simple items', and we can also define structures using something similar to boxed contexts.

  • Reported: DMN 1.0 — Thu, 4 Jun 2015 06:28 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Business Context links go both ways

  • Key: DMN15-1
  • Status: open  
  • Source: Bruce Silver Associates ( Bruce Silver)
  • Summary:

    In XSD, business context pointers are duplicated in both directions. E.g. decisionOwner and decisionMaker point to organizationalUnit, which in turns has pointers back the other way. This duplication adds no new information, just potential for internal inconsistency. I suggest omitting one of these directions; the other one is easily extracted from the serialization by XPATH.

  • Reported: DMN 1.0 — Tue, 14 Apr 2015 17:30 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

Business Knowledge Model can have Information Requirements

  • Key: DMN15-4
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    FEEL function definitions are defined as lexical closures, which simply means that names in the function body must be in scope, and that scope includes the function parameters and, just like any other decision logic, it includes the information requirements and the knowledge requirements. This is very handy. For example, it allows the logic of a BKM to reference 100 Input Data items by name, without requiring that each invocation pass in 100 parameter bindings.

    In order for this to work, the BKM would model 100 Information Requirements on the 100 Input Data items, instead of modeling them as parameters. The boxed invocations would not have 100 rows of repetitive binding information. We must extend the MM and Table 2 to allow a BKM to have information requirements.

  • Reported: DMN 1.0 — Thu, 23 Jul 2015 23:30 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT

italics and bold used for both typographic literal notation and FEEL semantic exposition

  • Key: DMN15-3
  • Status: open  
  • Source: Oracle ( Gary Hallmark)
  • Summary:

    in typographic literals, italics are strings and bold italics are date literals, but in 10.3, italics are feel syntactic elements and bold are semantic elements. Better to have different notations

  • Reported: DMN 1.0 — Thu, 3 Sep 2015 15:58 GMT
  • Updated: Wed, 15 Dec 2021 21:12 GMT