<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions namespace="https://dsntk.io/recursion/"
name="non-compliant-test-0088"
id="_64d8c972-b94c-4942-bed7-9c70aa587f33"
xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/">
<description>Recursion</description>
<itemDefinition name="iTreeNode">
<itemComponent name="children" isCollection="true">
<typeRef>iTreeNode</typeRef>
</itemComponent>
<itemComponent name="value">
<typeRef>number</typeRef>
</itemComponent>
</itemDefinition>
<businessKnowledgeModel name="fibonacci" id="_fibonacci">
<variable name="fibonacci" typeRef="number"/>
<encapsulatedLogic>
<formalParameter name="num" typeRef="number"/>
<literalExpression>
<text>if (num < 2) then num else (fibonacci(num - 1) + fibonacci(num - 2))</text>
</literalExpression>
</encapsulatedLogic>
</businessKnowledgeModel>
<decision name="fibonacci_001" id="_fibonacci_001">
<variable name="fibonacci_001" typeRef="number"/>
<knowledgeRequirement>
<requiredKnowledge href="#_fibonacci"/>
</knowledgeRequirement>
<literalExpression>
<text>fibonacci(10)</text>
</literalExpression>
</decision>
<businessKnowledgeModel name="scanTree" id="_scanTree">
<variable name="scanTree" typeRef="number"/>
<encapsulatedLogic>
<formalParameter name="node" typeRef="iTreeNode"/>
<literalExpression>
<text>
if (count(node.children) = 0) then
node.value
else
node.value + sum(for n in node.children return scanTree(n))
</text>
</literalExpression>
</encapsulatedLogic>
</businessKnowledgeModel>
<decision name="tree_001" id="_tree_001">
<variable name="tree_001"/>
<informationRequirement>
<requiredInput href="#_treeData"/>
</informationRequirement>
<knowledgeRequirement>
<requiredKnowledge href="#_scanTree"/>
</knowledgeRequirement>
<literalExpression>
<text>scanTree(treeData)</text>
</literalExpression>
</decision>
<inputData name="treeData" id="_treeData">
<variable name="treeData" typeRef="iTreeNode"/>
</inputData>
</definitions>