Business Knowledge Model |
|
$dmn//n1:businessKnowledgeModel |
Compliance Level 2 |
Tests that do not require any capability beyond that required by conformance level 2 |
|
Compliance Level 3 |
Full capability of DMN with being restricted to a compliance level |
|
Context |
|
$dmn//n1:context |
Decision Table: Multiple Output |
Decision tables that have more than one output column |
$dmn//n1:decisionTable[count(n1:output) gt 1] |
Decision Table: Single Output |
Decision table with only a single output column |
$dmn//n1:decisionTable[count(n1:output) = 1] |
FEEL Constants |
Tests feel constants, like true, false, numbers and strings |
|
FEEL Arithmetic |
Formulas that test FEEL arithmetic operators |
$dmn//n1:text[matches(.,'\b\s*(\+|\-|\*|/)')] |
FEEL Conditionals |
Formulas that test FEEL conditional operators and structures (if..then..else) |
$dmn//n1:text[matches(.,'\bif\b')] |
FEEL Context |
Defined as literal expression using {""key1"": e1, ""key2"": e2, ... } |
|
FEEL Filter (10.3.2.5) |
|
$dmn//n1:text[matches(.,'\[((?!\.\.)[^,])+\]')] |
FEEL Function Literals |
Formulas containing anonymous functions |
$dmn//n1:text[matches(.,'\bfunction\s*\(')] |
FEEL Functions: date and time |
|
$dmn//n1:text[matches(.,'\b(date|time|duration)\s*\(')] |
FEEL Functions: lists |
|
$dmn//n1:text[matches(.,'\b(list contains|count|min|max|mean|and|or|sublist|append|concatenate|insert before|remove|reverse|index of|union|distinct values|flatten)\s*\(')] |
FEEL Functions: strings |
|
$dmn//n1:text[matches(.,'\b(string|substring|string length|upper case|lower case|substring before|substring after|replace|starts with|ends with|matches)\s*\(')] | $dmn//n1:text[matches(.,'contains\s*\((?<!list )')] |
FEEL Functions: numeric |
|
$dmn//n1:text[matches(.,'\b(number|floor|ceiling|decimal)\s*\(')] |
FEEL Iteration |
Formulas containing for..in..return |
$dmn//n1:text[matches(.,'\bfor \.*\bin ')] |
FEEL List Operator |
[e1, e2, ...] |
|
FEEL Quantifiers |
Formulas containing some/every..in..satisfies |
$dmn//n1:text[matches(.,'\b(some |every )\.*\bin ')] |
FEEL Relation |
[{""key1"": e11, ""key2"": e12, ...}{""key1"": e21, ""key2"": e22, ...}...] |
|
FEEL Special-character Names |
Tests with variables that have names with spaces or other non alphanumerica characters and for which the expression does not surround the name with single quotes or any other special treatment. Name might contain operators. |
$dmn//n1:variable/@name[matches(.,'(\s|\.|\+|\-|\''|\*|/)')] |
Function Definition |
Named function definition other than BKM, e.g. context entry. (Anonymous function definition listed under FEEL Function Literals |
$dmn//n1:functionDefinition |
Function Invocation |
Invocation expression type (boxed invocation). |
$dmn//n1:invocation |
Literal Function Invocation |
Invocation of user-defined function from literal expression |
|
Hit Policy: ANY |
Decision tables with the hit policy ANY |
$dmn//n1:decisionTable[@hitPolicy='ANY'] |
Hit Policy: COLLECT |
Decision tables with the hit policy COLLECT |
$dmn//n1:decisionTable[@hitPolicy='COLLECT'] |
Hit Policy: PRIORITY |
Decision tables with the hit policy PRIORITY |
$dmn//n1:decisionTable[@hitPolicy='PRIORITY'] |
Hit Policy: UNIQUE |
Decision tables with the hit policy UNIQUE |
$dmn//n1:decisionTable[@hitPolicy='UNIQUE' or not(@hitPolicy)] |
Hit Policy: FIRST |
|
|
Hit Policy: OUTPUT ORDER |
|
|
Hit Policy: RULE ORDER |
|
|
Item Definition |
|
$dmn//n1:itemDefinition |
Literal Expression |
|
$dmn//n1:literalExpression |
Relation |
|
$dmn//n1:relation |
Data Type: String |
|
$dmn//n1:typeRef[contains(lower-case(.),':string')]|$dmn//@typeRef[contains(lower-case(.),':string')] |
Data Type: Number |
|
$dmn//n1:typeRef[contains(lower-case(.),':number')]|$dmn//@typeRef[contains(lower-case(.),':number')] |
Data Type: Structure |
Type has components |
$dmn//n1:itemDefinition/n1:itemComponent |
Data Type: Collection |
|
$dmn//n1:itemDefinition[@isCollection=true()]|$dmn//n1:itemDefinition//n1:itemComponent[@isCollection=true()] |
Data Type: Date |
|
$dmn//n1:typeRef[matches(.,':date(?! and time)')]|$dmn//@typeRef[matches(.,':date(?! and time)')] |
Data Type: Time |
|
$dmn//n1:typeRef[matches(.,':time\b')]|$dmn//@typeRef[matches(.,':time\b')] |
Data Type: Date and Time |
|
$dmn//n1:typeRef[matches(.,':date and time')]|$dmn//@typeRef[matches(.,':date and time')] |
Data Type: Days and Time Duration |
|
$dmn//n1:typeRef[contains(.,':days and time duration')]|$dmn//@typeRef[contains(.,':days and time duration)')] |
Data Type: Years and Months Duration |
|
$dmn//n1:typeRef[contains(.,':years and months duration')]|$dmn//@typeRef[contains(.,':years and months duration)')] |
Data Type: Boolean |
|
$dmn//n1:typeRef[contains(lower-case(.),':boolean')]|$dmn//@typeRef[contains(lower-case(.),':boolean')] |