Source: Goldman Sachs ( Octavian Patrascoiu)
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
Reported: DMN 1.3 — Tue, 30 Mar 2021 08:28 GMT
Updated: Tue, 17 Jan 2023 18:19 GMT