dsntk-examples 0.3.0

ÐecisionToolkit | Examples
Documentation
<?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 &lt; 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>