使用MID压缩输入的DMN决策模型

Java资源管理器

我在下面的DMN模型中压缩输入并计算折扣。我可以通过信号模拟器运行它。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions namespace="http://www.signavio.com/dmn/1.1/diagram/8462cb232d98419493d4ef846516a070.xml" exporterVersion="13.3.2" name="MID Example" id="id-f1fe73d348e342d2a6f0435b38ce14e6" sigExt:revisionId="9f563b074ba844d4b9d1fcd6bead7580" sigExt:revisionNumber="1" xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" xmlns:sig="http://www.signavio.com/dmn/1.1/diagram/8462cb232d98419493d4ef846516a070.xml" xmlns:sigExt="http://www.signavio.com/schema/dmn/1.1/" xmlns:feel="http://www.omg.org/spec/FEEL/20140401">
<extensionElements/>
<itemDefinition isCollection="false" name="calculatePriceAfterDiscount" id="id-f8c81ba73d98a8a51216f4583ed31dc9" label="Calculate Price After Discount">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="false" name="calculatePrice" id="id-e13d8570789c69dec9515bd8b9159f2d" label="Calculate Price ">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="false" name="determineDiscount" id="id-99dded75dc910f4c4b3e2f1d3471cd10" label="Determine Discount %">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="false" name="discount" id="id-e41b37d9d6d86919af6290e062ee6bbe" label="Discount">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="false" name="collateOrder2" id="id-a4abe03e2f888a7830f15614f50bc45a" label="Collate Order">
    <itemComponent isCollection="false" name="itemName" id="id-a4abe03e2f888a7830f15614f50bc45a-relation-ItemName" label="Item Name" sigExt:slotId="Item Name">
        <typeRef>feel:string</typeRef>
    </itemComponent>
    <itemComponent isCollection="false" name="itemPrice" id="id-a4abe03e2f888a7830f15614f50bc45a-relation-ItemPrice" label="Item Price" sigExt:slotId="Item Price">
        <typeRef>feel:number</typeRef>
    </itemComponent>
    <itemComponent isCollection="false" name="itemQuantity" id="id-a4abe03e2f888a7830f15614f50bc45a-relation-ItemQuantity" label="Item Quantity" sigExt:slotId="Item Quantity">
        <typeRef>feel:number</typeRef>
    </itemComponent>
</itemDefinition>
<itemDefinition isCollection="false" name="calculateTotalPrice" id="id-753285786a1cec905c139529a673b0fe" label="Calculate Total Price">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="false" name="itemPrice" id="id-1a281dc9cb860f8ffd0c4cef9485f6a0" label="Item Price ">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="true" name="collateOrder" id="id-8cbabc9f5673d5e84b524b68155dcb45" label="Collate Order">
    <itemComponent isCollection="false" name="itemName" id="id-8cbabc9f5673d5e84b524b68155dcb45-relation-ItemName" label="Item Name" sigExt:slotId="Item Name">
        <typeRef>feel:string</typeRef>
    </itemComponent>
    <itemComponent isCollection="false" name="itemPrice" id="id-8cbabc9f5673d5e84b524b68155dcb45-relation-ItemPrice" label="Item Price" sigExt:slotId="Item Price">
        <typeRef>feel:number</typeRef>
    </itemComponent>
    <itemComponent isCollection="false" name="itemQuantity" id="id-8cbabc9f5673d5e84b524b68155dcb45-relation-ItemQuantity" label="Item Quantity" sigExt:slotId="Item Quantity">
        <typeRef>feel:number</typeRef>
    </itemComponent>
</itemDefinition>
<itemDefinition isCollection="false" name="order" id="id-4cc8046b78214ad11657d5b06436db21" label="Order ">
    <itemComponent isCollection="true" name="price" id="id-4cc8046b78214ad11657d5b06436db21-relation-0" label="Price" sigExt:slotId="0">
        <typeRef>feel:number</typeRef>
    </itemComponent>
    <itemComponent isCollection="true" name="quantity" id="id-4cc8046b78214ad11657d5b06436db21-relation-1" label="Quantity" sigExt:slotId="1">
        <typeRef>feel:number</typeRef>
    </itemComponent>
    <itemComponent isCollection="true" name="itemName" id="id-4cc8046b78214ad11657d5b06436db21-relation-2" label="Item Name" sigExt:slotId="2">
        <typeRef>feel:string</typeRef>
    </itemComponent>
</itemDefinition>
<inputData name="collateOrder_iterator" id="id-4835f35ebd354e9d65c600afb02d9d3c" label="Collate Order" sigExt:shapeId="sid-139D76F2-2029-4058-B488-9472C5BBEBC6" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements/>
    <variable typeRef="sig:collateOrder2" name="collateOrder_iterator" id="id-4835f35ebd354e9d65c600afb02d9d3c_variable"/>
</inputData>
<inputData name="order" id="id-a47f651b80111a121d93cf07939b20dc" label="Order " sigExt:shapeId="sid-8352CBF9-98EA-4018-9EAC-F17A5F936551" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements/>
    <variable typeRef="sig:order" name="order" id="id-a47f651b80111a121d93cf07939b20dc_variable"/>
</inputData>
<decision name="calculatePriceAfterDiscount" id="id-567eb0877fe31a6d84a53c3917e4eee0" label="Calculate Price After Discount" sigExt:shapeId="sid-5F8D6179-84FD-47B9-BA88-0E3CB4305014" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements/>
    <variable typeRef="sig:calculatePriceAfterDiscount" name="calculatePriceAfterDiscount" id="id-567eb0877fe31a6d84a53c3917e4eee0_variable"/>
    <informationRequirement>
        <requiredDecision href="#id-bc493858d94a5f245b95febc081cb0c7"/>
    </informationRequirement>
    <informationRequirement>
        <requiredDecision href="#id-d045696f950f3769011d375f7a1afd78"/>
    </informationRequirement>
    <literalExpression expressionLanguage="http://www.omg.org/spec/FEEL/20140401">
        <text>(calculatePrice-((determineDiscount/100)*calculatePrice))</text>
    </literalExpression>
</decision>
<decision name="calculateTotalPrice" id="id-be5d8465feb66b570cf75aeee595bf21" label="Calculate Total Price" sigExt:shapeId="sid-EA841422-3493-491C-9CE6-59F5EA9CE261" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements/>
    <variable typeRef="sig:calculateTotalPrice" name="calculateTotalPrice" id="id-be5d8465feb66b570cf75aeee595bf21_variable"/>
    <informationRequirement>
        <requiredInput href="#id-4835f35ebd354e9d65c600afb02d9d3c"/>
    </informationRequirement>
    <decisionTable hitPolicy="UNIQUE">
        <input id="id-137491756d969eac658224df41ae34d3" label="Price">
            <inputExpression>
                <text>collateOrder_iterator.itemPrice</text>
            </inputExpression>
        </input>
        <input id="id-cad45b775d319f14f2cc11d5d3b758fd" label="Quantity">
            <inputExpression>
                <text>collateOrder_iterator.itemQuantity</text>
            </inputExpression>
        </input>
        <output name="calculateTotalPrice" typeRef="sig:itemPrice" id="id-99e0fdb7f0d56dbc7bb88ae025be147c" label="Calculate Total Price"/>
        <rule id="id-2fff85d2331aa1e369d698392addb0a8">
            <description>string(-)</description>
            <inputEntry>
                <text>not(null)</text>
            </inputEntry>
            <inputEntry>
                <text>not(null)</text>
            </inputEntry>
            <outputEntry>
                <text>(collateOrder_iterator.itemPrice*collateOrder_iterator.itemQuantity)</text>
            </outputEntry>
        </rule>
    </decisionTable>
</decision>
<decision name="determineDiscount" id="id-bc493858d94a5f245b95febc081cb0c7" label="Determine Discount %" sigExt:shapeId="sid-6824DDAF-771A-4773-973E-1477F70EC90B" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements/>
    <variable typeRef="sig:determineDiscount" name="determineDiscount" id="id-bc493858d94a5f245b95febc081cb0c7_variable"/>
    <informationRequirement>
        <requiredDecision href="#id-d045696f950f3769011d375f7a1afd78"/>
    </informationRequirement>
    <decisionTable hitPolicy="UNIQUE">
        <input id="id-8a61ecb31c82e81d0b067a63f8a10b25" label="Calculate Price ">
            <inputExpression>
                <text>calculatePrice</text>
            </inputExpression>
        </input>
        <output name="determineDiscount" typeRef="sig:discount" id="id-cd2468e782346733c82b544eae541110" label="Determine Discount %"/>
        <rule id="id-8ce83be6aaf7113a136fadb09f2de83b">
            <description>string(-)</description>
            <inputEntry>
                <text>[0..500)</text>
            </inputEntry>
            <outputEntry>
                <text>1</text>
            </outputEntry>
        </rule>
        <rule id="id-ba19200060db4a933658db98400f5019">
            <description>string(-)</description>
            <inputEntry>
                <text>[500..1000)</text>
            </inputEntry>
            <outputEntry>
                <text>5</text>
            </outputEntry>
        </rule>
        <rule id="id-23a4b91a413530151413d2230f41e010">
            <description>string(-)</description>
            <inputEntry>
                <text>[1000..5000)</text>
            </inputEntry>
            <outputEntry>
                <text>10</text>
            </outputEntry>
        </rule>
        <rule id="id-9b4dbf30626d219d5e7937c1322b33fe">
            <description>string(-)</description>
            <inputEntry>
                <text>[5000..10000]</text>
            </inputEntry>
            <outputEntry>
                <text>20</text>
            </outputEntry>
        </rule>
        <rule id="id-37139385183b4a6ee481738ccccc02f4">
            <description>string(-)</description>
            <inputEntry>
                <text>&gt; 10000</text>
            </inputEntry>
            <outputEntry>
                <text>25</text>
            </outputEntry>
        </rule>
        <rule id="id-7d86977d4be287545686b09f982b55a9">
            <description>string(-)</description>
            <inputEntry>
                <text>&lt; 0</text>
            </inputEntry>
            <outputEntry>
                <text>0</text>
            </outputEntry>
        </rule>
    </decisionTable>
</decision>
<decision name="calculatePrice" id="id-d045696f950f3769011d375f7a1afd78" label="Calculate Price " sigExt:shapeId="sid-E3A6C7E0-BEE6-47C9-97EC-1C5A95EE2DB4" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements>
        <sigExt:MultiInstanceDecisionLogic>
            <sigExt:iterationExpression>collateOrder</sigExt:iterationExpression>
            <sigExt:iteratorShapeId>id-4835f35ebd354e9d65c600afb02d9d3c</sigExt:iteratorShapeId>
            <sigExt:aggregationFunction>SUM</sigExt:aggregationFunction>
            <sigExt:topLevelDecisionId>id-be5d8465feb66b570cf75aeee595bf21</sigExt:topLevelDecisionId>
        </sigExt:MultiInstanceDecisionLogic>
    </extensionElements>
    <variable typeRef="sig:calculatePrice" name="calculatePrice" id="id-d045696f950f3769011d375f7a1afd78_variable"/>
    <informationRequirement>
        <requiredDecision href="#id-85c7398c9bc186c1e2396c4625ebbcc1"/>
    </informationRequirement>
</decision>
<decision name="collateOrder" id="id-85c7398c9bc186c1e2396c4625ebbcc1" label="Collate Order" sigExt:shapeId="sid-C47674E0-8CDE-4A4A-84E8-3DD179DCF72C" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements/>
    <variable typeRef="sig:collateOrder" name="collateOrder" id="id-85c7398c9bc186c1e2396c4625ebbcc1_variable"/>
    <informationRequirement>
        <requiredInput href="#id-a47f651b80111a121d93cf07939b20dc"/>
    </informationRequirement>
    <literalExpression expressionLanguage="http://www.omg.org/spec/FEEL/20140401">
        <text>zip(["Item Name", "Item Price", "Item Quantity"], [order.itemName, order.price, order.quantity])</text>
    </literalExpression>
</decision>

我尝试如下更改zip

zip([[“商品名称”,“商品价格”,“商品数量”],order.itemName,order.price,order.quantity)

当我通过Java代码运行它时,出现以下错误消息

19:40:43.251 [main]错误org.kie.dmn.feel.runtime.functions.DTInvokerFunction-调用决策表'determineDiscount'时出错:ClassCastException java.lang.ClassCastException:类java.util.ArrayList无法转换为类java .math.BigDecimal(java.util.ArrayList和java.math.BigDecimal在加载程序'bootstrap'的模块java.base中)

我的Java代码将像这样

    final KieServices ks = KieServices.Factory.get();
    final KieFileSystem kfs = ks.newKieFileSystem();
    KieModuleModel kmm = ks.newKieModuleModel();
    kmm.setConfigurationProperty("org.kie.dmn.profiles.signavio", "org.kie.dmn.signavio.KieDMNSignavioProfile");
    kfs.writeKModuleXML(kmm.toXML());
    kfs.write(ks.getResources().newClassPathResource("MID Example (2).dmn", this.getClass()));
    KieBuilder kieBuilder = ks.newKieBuilder(kfs).buildAll();
    Results results = kieBuilder.getResults();
    logger.info("buildAll() completed.");
    results.getMessages(Message.Level.WARNING).forEach(e -> logger.warn("{}", e));
    final KieContainer kieContainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId());
    DMNRuntime runtime = kieContainer.newKieSession().getKieRuntime(DMNRuntime.class);
    DMNModel model0 = runtime.getModels().get(0);
    DMNContext context = runtime.newContext();
    Map<String, Object> item1 = new HashMap<>();
    item1.put("itemName", "item1");
    item1.put("price", 1000);
    item1.put("quantity", 100);
    Map<String, Object> item2 = new HashMap<>();
    item2.put("itemName", "item2");
    item2.put("price", 200);
    item2.put("quantity", 20);
    Map<String, Object> item3 = new HashMap<>();
    item3.put("itemName", "item3");
    item3.put("price", 3000);
    item3.put("quantity", 300);
    context.set("order", Arrays.asList(item1, item2, item3));
    DMNResult evaluateAll = runtime.evaluateAll(model0, context);
    evaluateAll.getMessages().forEach(System.out::println);
    List<DMNDecisionResult> decResutls = evaluateAll.getDecisionResults();
    printDecisionResults(decResutls);

感谢任何指针。

塔里拉

感谢您提供所有必需的资产/代码以完整重现此问题。我相信我将在下面描述一些问题,并在下面提供完整的固定/工作示例。

问题:尊重订单类型定义。

根据您完整的DMN模型定义,Order(输入数据节点值)必须是"itemName", "price", "quantity"属性的单例组合对象每个属性都是一个集合。

所以输入应该是这样的:

    order: {
        itemName: [item1, item2, item3]
        quantity: [100, 20, 300]
        price: [1000, 200, 3000]
    }

问题:遵守与订单类型定义一致的zip函数

根据您完整的DMN模型定义,zip函数的正确定义应为:

zip(["Item Name", "Item Price", "Item Quantity"], order.itemName, order.price, order.quantity)

我假设您要基于完整DMN模型定义执行的操作是将数据转换为以下结构

collateOrder: [
   {
      Item Name=item1,
      Item Quantity=100,
      Item Price=1000
   },
   {
      Item Name=item2,
      Item Quantity=20,
      Item Price=200
   },
   {
      Item Name=item3,
      Item Quantity=300,
      Item Price=3000
   }
]

问题:MID聚合功能

我相信我在Signavio扩展实现中发现了一个错误;感谢您的举报,我们将对此进行进一步调查。

但是,您可以使用简单得多的标准DMN文字表达式来执行所需的业务逻辑,而不必依赖除仅在DMN规范本身中定义的扩展之外的任何扩展:

sum( for order in collateOrder return ( order.Item Price * order.Item Quantity ) )

这不需要任何(Signavio)扩展名,并且它是有效的DMN。


回顾一下。

Java测试代码段:

        DMNContext context = runtime.newContext();
        List<String> itemList = Arrays.asList("item1", "item2", "item3");
        List<BigDecimal> priceList = Arrays.asList(new BigDecimal(1000), new BigDecimal(200), new BigDecimal(3000));
        List<Integer> qtyList = Arrays.asList(100, 20, 300);
        Map<String, Object> order = new HashMap<>();
        order.put("itemName", itemList);
        order.put("price", priceList);
        order.put("quantity", qtyList);
        context.set("order", order);
        DMNResult evaluateAll = runtime.evaluateAll(model0, context);

固定的DMN模型,无需任何特殊扩展:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions namespace="http://www.signavio.com/dmn/1.1/diagram/8462cb232d98419493d4ef846516a070.xml" exporterVersion="13.3.2" name="MID Example" id="id-f1fe73d348e342d2a6f0435b38ce14e6" sigExt:revisionId="9f563b074ba844d4b9d1fcd6bead7580" sigExt:revisionNumber="1" xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" xmlns:sig="http://www.signavio.com/dmn/1.1/diagram/8462cb232d98419493d4ef846516a070.xml" xmlns:sigExt="http://www.signavio.com/schema/dmn/1.1/" xmlns:feel="http://www.omg.org/spec/FEEL/20140401">
<extensionElements/>
<itemDefinition isCollection="false" name="calculatePriceAfterDiscount" id="id-f8c81ba73d98a8a51216f4583ed31dc9" label="Calculate Price After Discount">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="false" name="calculatePrice" id="id-e13d8570789c69dec9515bd8b9159f2d" label="Calculate Price ">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="false" name="determineDiscount" id="id-99dded75dc910f4c4b3e2f1d3471cd10" label="Determine Discount %">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="false" name="discount" id="id-e41b37d9d6d86919af6290e062ee6bbe" label="Discount">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="false" name="collateOrder2" id="id-a4abe03e2f888a7830f15614f50bc45a" label="Collate Order">
    <itemComponent isCollection="false" name="itemName" id="id-a4abe03e2f888a7830f15614f50bc45a-relation-ItemName" label="Item Name" sigExt:slotId="Item Name">
        <typeRef>feel:string</typeRef>
    </itemComponent>
    <itemComponent isCollection="false" name="itemPrice" id="id-a4abe03e2f888a7830f15614f50bc45a-relation-ItemPrice" label="Item Price" sigExt:slotId="Item Price">
        <typeRef>feel:number</typeRef>
    </itemComponent>
    <itemComponent isCollection="false" name="itemQuantity" id="id-a4abe03e2f888a7830f15614f50bc45a-relation-ItemQuantity" label="Item Quantity" sigExt:slotId="Item Quantity">
        <typeRef>feel:number</typeRef>
    </itemComponent>
</itemDefinition>
<itemDefinition isCollection="false" name="calculateTotalPrice" id="id-753285786a1cec905c139529a673b0fe" label="Calculate Total Price">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="false" name="itemPrice" id="id-1a281dc9cb860f8ffd0c4cef9485f6a0" label="Item Price ">
    <typeRef>feel:number</typeRef>
</itemDefinition>
<itemDefinition isCollection="true" name="collateOrder" id="id-8cbabc9f5673d5e84b524b68155dcb45" label="Collate Order">
    <itemComponent isCollection="false" name="itemName" id="id-8cbabc9f5673d5e84b524b68155dcb45-relation-ItemName" label="Item Name" sigExt:slotId="Item Name">
        <typeRef>feel:string</typeRef>
    </itemComponent>
    <itemComponent isCollection="false" name="itemPrice" id="id-8cbabc9f5673d5e84b524b68155dcb45-relation-ItemPrice" label="Item Price" sigExt:slotId="Item Price">
        <typeRef>feel:number</typeRef>
    </itemComponent>
    <itemComponent isCollection="false" name="itemQuantity" id="id-8cbabc9f5673d5e84b524b68155dcb45-relation-ItemQuantity" label="Item Quantity" sigExt:slotId="Item Quantity">
        <typeRef>feel:number</typeRef>
    </itemComponent>
</itemDefinition>
<itemDefinition isCollection="false" name="order" id="id-4cc8046b78214ad11657d5b06436db21" label="Order ">
    <itemComponent isCollection="true" name="price" id="id-4cc8046b78214ad11657d5b06436db21-relation-0" label="Price" sigExt:slotId="0">
        <typeRef>feel:number</typeRef>
    </itemComponent>
    <itemComponent isCollection="true" name="quantity" id="id-4cc8046b78214ad11657d5b06436db21-relation-1" label="Quantity" sigExt:slotId="1">
        <typeRef>feel:number</typeRef>
    </itemComponent>
    <itemComponent isCollection="true" name="itemName" id="id-4cc8046b78214ad11657d5b06436db21-relation-2" label="Item Name" sigExt:slotId="2">
        <typeRef>feel:string</typeRef>
    </itemComponent>
</itemDefinition>
<inputData name="order" id="id-a47f651b80111a121d93cf07939b20dc" label="Order " sigExt:shapeId="sid-8352CBF9-98EA-4018-9EAC-F17A5F936551" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements/>
    <variable typeRef="sig:order" name="order" id="id-a47f651b80111a121d93cf07939b20dc_variable"/>
</inputData>
<decision name="calculatePriceAfterDiscount" id="id-567eb0877fe31a6d84a53c3917e4eee0" label="Calculate Price After Discount" sigExt:shapeId="sid-5F8D6179-84FD-47B9-BA88-0E3CB4305014" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements/>
    <variable typeRef="sig:calculatePriceAfterDiscount" name="calculatePriceAfterDiscount" id="id-567eb0877fe31a6d84a53c3917e4eee0_variable"/>
    <informationRequirement>
        <requiredDecision href="#id-bc493858d94a5f245b95febc081cb0c7"/>
    </informationRequirement>
    <informationRequirement>
        <requiredDecision href="#id-d045696f950f3769011d375f7a1afd78"/>
    </informationRequirement>
    <literalExpression expressionLanguage="http://www.omg.org/spec/FEEL/20140401">
        <text>(calculatePrice-((determineDiscount/100)*calculatePrice))</text>
    </literalExpression>
</decision>
<decision name="determineDiscount" id="id-bc493858d94a5f245b95febc081cb0c7" label="Determine Discount %" sigExt:shapeId="sid-6824DDAF-771A-4773-973E-1477F70EC90B" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements/>
    <variable typeRef="sig:determineDiscount" name="determineDiscount" id="id-bc493858d94a5f245b95febc081cb0c7_variable"/>
    <informationRequirement>
        <requiredDecision href="#id-d045696f950f3769011d375f7a1afd78"/>
    </informationRequirement>
    <decisionTable hitPolicy="UNIQUE">
        <input id="id-8a61ecb31c82e81d0b067a63f8a10b25" label="Calculate Price ">
            <inputExpression>
                <text>calculatePrice</text>
            </inputExpression>
        </input>
        <output name="determineDiscount" typeRef="sig:discount" id="id-cd2468e782346733c82b544eae541110" label="Determine Discount %"/>
        <rule id="id-8ce83be6aaf7113a136fadb09f2de83b">
            <description>string(-)</description>
            <inputEntry>
                <text>[0..500)</text>
            </inputEntry>
            <outputEntry>
                <text>1</text>
            </outputEntry>
        </rule>
        <rule id="id-ba19200060db4a933658db98400f5019">
            <description>string(-)</description>
            <inputEntry>
                <text>[500..1000)</text>
            </inputEntry>
            <outputEntry>
                <text>5</text>
            </outputEntry>
        </rule>
        <rule id="id-23a4b91a413530151413d2230f41e010">
            <description>string(-)</description>
            <inputEntry>
                <text>[1000..5000)</text>
            </inputEntry>
            <outputEntry>
                <text>10</text>
            </outputEntry>
        </rule>
        <rule id="id-9b4dbf30626d219d5e7937c1322b33fe">
            <description>string(-)</description>
            <inputEntry>
                <text>[5000..10000]</text>
            </inputEntry>
            <outputEntry>
                <text>20</text>
            </outputEntry>
        </rule>
        <rule id="id-37139385183b4a6ee481738ccccc02f4">
            <description>string(-)</description>
            <inputEntry>
                <text>&gt; 10000</text>
            </inputEntry>
            <outputEntry>
                <text>25</text>
            </outputEntry>
        </rule>
        <rule id="id-7d86977d4be287545686b09f982b55a9">
            <description>string(-)</description>
            <inputEntry>
                <text>&lt; 0</text>
            </inputEntry>
            <outputEntry>
                <text>0</text>
            </outputEntry>
        </rule>
    </decisionTable>
</decision>
<decision name="calculatePrice" id="id-d045696f950f3769011d375f7a1afd78" label="Calculate Price " sigExt:shapeId="sid-E3A6C7E0-BEE6-47C9-97EC-1C5A95EE2DB4" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <literalExpression expressionLanguage="http://www.omg.org/spec/FEEL/20140401">
        <text>sum( for order in collateOrder return ( order.Item Price * order.Item Quantity ) )</text>
    </literalExpression>
    <variable typeRef="sig:calculatePrice" name="calculatePrice" id="id-d045696f950f3769011d375f7a1afd78_variable"/>
    <informationRequirement>
        <requiredDecision href="#id-85c7398c9bc186c1e2396c4625ebbcc1"/>
    </informationRequirement>
</decision>
<decision name="collateOrder" id="id-85c7398c9bc186c1e2396c4625ebbcc1" label="Collate Order" sigExt:shapeId="sid-C47674E0-8CDE-4A4A-84E8-3DD179DCF72C" sigExt:diagramId="8462cb232d98419493d4ef846516a070">
    <extensionElements/>
    <variable typeRef="sig:collateOrder" name="collateOrder" id="id-85c7398c9bc186c1e2396c4625ebbcc1_variable"/>
    <informationRequirement>
        <requiredInput href="#id-a47f651b80111a121d93cf07939b20dc"/>
    </informationRequirement>
    <literalExpression expressionLanguage="http://www.omg.org/spec/FEEL/20140401">
        <text>zip(["Item Name", "Item Price", "Item Quantity"], order.itemName, order.price, order.quantity)</text>
    </literalExpression>
</decision>
</definitions>

结果:

    order: {
        itemName: [item1, item2, item3]
        quantity: [100, 20, 300]
        price: [1000, 200, 3000]
    }
    collateOrder: [{Item Name=item1, Item Quantity=100, Item Price=1000}, {Item Name=item2, Item Quantity=20, Item Price=200}, {Item Name=item3, Item Quantity=300, Item Price=3000}]
    calculatePrice: 1004000
    determineDiscount: 25
    calculatePriceAfterDiscount: 753000.00

再次感谢您报告有关MID的问题,我们将在Signavio扩展程序中调查该问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

kie-dmn-signavio-7.37.0.Final-无法执行包含多实例决策和zip函数的DMN决策模型

来自分类Dev

在压缩输入上使用 ConvertRecord

来自分类Dev

使用基于决策树比较的模型证明下界

来自分类Dev

Rails模型设计决策-尝试避免使用HABTM x 2创建多个新模型

来自分类Dev

如何使用sklearn从决策树模型提高预测的准确性?

来自分类Dev

在R中使用rpart Package,为决策树模型选择所有变量时出错

来自分类Dev

Xtext语法错误“决策可以匹配输入...,使用多种选择:1、3、4、5”

来自分类Dev

“决策可以使用多种选择匹配输入,例如“'?'”:xText中的1、2”

来自分类Dev

ANTLR决策可以使用多种选择匹配输入,例如“ ID ID”

来自分类Dev

决策使用方法

来自分类Dev

如何使用多个线程进行zlib压缩(相同的输入源)

来自分类Dev

使用输入/输出流的Java LZ4压缩

来自分类Dev

如何使用JSZIP从文件输入中压缩img

来自分类Dev

如何使用 mrjob.cat 自动解压缩输入?

来自分类Dev

scikit学习决策树模型评估

来自分类Dev

如何在DMN camunda中验证输入表达式

来自分类Dev

使用输入更新ng模型数据

来自分类Dev

使用输入更新ng模型数据

来自分类Dev

使用从输入 vueJS 更改的模型更新模板

来自分类Dev

使用模型名称字符串输入查询Django模型

来自分类Dev

如何使用forEach进行决策

来自分类Dev

使用mid()进行SQL连接

来自分类Dev

根据决策树算法生成的模型进行预测

来自分类Dev

如何为决策树模型创建混淆矩阵

来自分类Dev

如何在ignite中保存决策树训练模型?

来自分类Dev

Backbone.js:使用输入文件更改模型

来自分类Dev

Angular 2使用指令防止输入和模型更改

来自分类Dev

如何使用张量流模型预测新输入

来自分类Dev

如何设置使用v模型的值输入?-Laravel

Related 相关文章

  1. 1

    kie-dmn-signavio-7.37.0.Final-无法执行包含多实例决策和zip函数的DMN决策模型

  2. 2

    在压缩输入上使用 ConvertRecord

  3. 3

    使用基于决策树比较的模型证明下界

  4. 4

    Rails模型设计决策-尝试避免使用HABTM x 2创建多个新模型

  5. 5

    如何使用sklearn从决策树模型提高预测的准确性?

  6. 6

    在R中使用rpart Package,为决策树模型选择所有变量时出错

  7. 7

    Xtext语法错误“决策可以匹配输入...,使用多种选择:1、3、4、5”

  8. 8

    “决策可以使用多种选择匹配输入,例如“'?'”:xText中的1、2”

  9. 9

    ANTLR决策可以使用多种选择匹配输入,例如“ ID ID”

  10. 10

    决策使用方法

  11. 11

    如何使用多个线程进行zlib压缩(相同的输入源)

  12. 12

    使用输入/输出流的Java LZ4压缩

  13. 13

    如何使用JSZIP从文件输入中压缩img

  14. 14

    如何使用 mrjob.cat 自动解压缩输入?

  15. 15

    scikit学习决策树模型评估

  16. 16

    如何在DMN camunda中验证输入表达式

  17. 17

    使用输入更新ng模型数据

  18. 18

    使用输入更新ng模型数据

  19. 19

    使用从输入 vueJS 更改的模型更新模板

  20. 20

    使用模型名称字符串输入查询Django模型

  21. 21

    如何使用forEach进行决策

  22. 22

    使用mid()进行SQL连接

  23. 23

    根据决策树算法生成的模型进行预测

  24. 24

    如何为决策树模型创建混淆矩阵

  25. 25

    如何在ignite中保存决策树训练模型?

  26. 26

    Backbone.js:使用输入文件更改模型

  27. 27

    Angular 2使用指令防止输入和模型更改

  28. 28

    如何使用张量流模型预测新输入

  29. 29

    如何设置使用v模型的值输入?-Laravel

热门标签

归档