см. Ниже образец моей таблицы решений
Приведенный вами образец фрагмента на самом деле не является таблицей решений, а является буквальным выражением FEEL:)
Тем не менее, я полагаете, что вы неправильно используете расширенную функцию zip Signavio.
zip (attributes, values1, ..., valuesN) Собирает список объектов из списка атрибутов и нескольких списков значений.
Проблема 1: исправить правильное использование расширенной функции zip
Итак, в вашем случае, поскольку у вас есть атрибуты размера 3, вы должны предоставить 3 списка по N элементов в каждом.
Другими словами:
zip(["Item Name", "Item Price", "Item Quantity"],
list of names,
list of prices,
list of qtys)
что для вашей модели DMN это было бы как сказать:
zip(["Item Name", "Item Price", "Item Quantity"], order.itemName, order.price, order.quantity)
Проблема 2: исправить правильную поставку Java составного объекта
Также на вашем входе Java вы не предоставляете ожидаемый составной объект, order
- это список сложных объектов, каждый из которых имеет атрибуты "itemName", "price", "quantity"
.
Выводы
Один раз Я исправил эти проблемы, это работает Хорошо, я буду включать образец DMN и Java тестовый фрагмент ниже.
Важно. Однако немного сложно понять вариант использования, основанный на элементах, представленных в исходном вопросе, поэтому вы можете пересмотреть, требуется ли вообще использование функции zip()
, и просто использовать стандартные функции DMN.
Полный фиксированный пример модели DMN:
<dmn:definitions xmlns:dmn="http://www.omg.org/spec/DMN/20180521/MODEL/" xmlns="https://kiegroup.org/dmn/_CEDFCB71-C301-4AF7-8438-3C906965946C" xmlns:di="http://www.omg.org/spec/DMN/20180521/DI/" xmlns:kie="http://www.drools.org/kie/dmn/1.2" xmlns:dmndi="http://www.omg.org/spec/DMN/20180521/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" xmlns:feel="http://www.omg.org/spec/DMN/20180521/FEEL/" id="_C606E3BA-A1A8-4D0A-A1E8-AE404B568CC0" name="9B64A25E-4853-4D7B-B8FE-33E98234AE51" typeLanguage="http://www.omg.org/spec/DMN/20180521/FEEL/" namespace="https://kiegroup.org/dmn/_CEDFCB71-C301-4AF7-8438-3C906965946C">
<dmn:extensionElements/>
<dmn:inputData id="_AFE2999A-D71C-4C4B-B1D7-CC1DB6650FC1" name="order">
<dmn:extensionElements/>
<dmn:variable id="_F69956F1-49DA-46C8-A0DA-9E84AF18D0B2" name="order"/>
</dmn:inputData>
<dmn:decision id="_48E05B28-5BEB-457E-BCDB-16023684FA3E" name="collateOrder">
<dmn:extensionElements/>
<dmn:variable id="_69BECEE8-924A-411C-84EE-769432DF5C22" name="collateOrder"/>
<dmn:informationRequirement id="_4533C1C4-E3F3-4557-ABE1-A2264908875F">
<dmn:requiredInput href="#_AFE2999A-D71C-4C4B-B1D7-CC1DB6650FC1"/>
</dmn:informationRequirement>
<dmn:literalExpression id="_F029607F-4296-4ADE-B669-AC6FD5AB91FD">
<dmn:text>zip(["Item Name", "Item Price", "Item Quantity"], order.itemName, order.price, order.quantity)</dmn:text>
</dmn:literalExpression>
</dmn:decision>
</dmn:definitions>
фрагмент теста:
DMNContext context = runtime.newContext();
Map<String, Object> item1 = new HashMap<>();
item1.put("itemName", "item1");
item1.put("price", new BigDecimal(1000));
item1.put("quantity", 100);
Map<String, Object> item2 = new HashMap<>();
item2.put("itemName", "item2");
item2.put("price", new BigDecimal(200));
item2.put("quantity", 20);
Map<String, Object> item3 = new HashMap<>();
item3.put("itemName", "item3");
item3.put("price", new BigDecimal(3000));
item3.put("quantity", 300);
context.set("order", Arrays.asList(item1, item2, item3));
DMNResult evaluateAll = runtime.evaluateAll(model0, context);
System.out.println(evaluateAll.getContext());
результаты:
{
order: [{itemName=item1, quantity=100, price=1000}, {itemName=item2, quantity=20, price=200}, {itemName=item3, quantity=300, price=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}]
}