我正在尝试解析一个示例决策表,但是在异常下面
org.camunda.bpm.dmn.feel.impl.FeelException:感觉/SCALA-01008在计算表达式时出错:未能计算表达式‘Fall’:没有找到名称‘cellInput’的变量
我使用Camunda版本4.12.0及以下版本创建了dmn文件,这是用于解析决策的java代码。
VariableMap variables = Variables
.putValue(“season”, “Spring”);
DmnEngine dmnEngine = DmnEngineConfiguration.createDefaultDmnEngineConfiguration().buildEngine();
InputStream inputStream = DishDecider.class.getResourceAsStream("/dishTest.dmn");
DmnModelInstance dmnModelInstance = Dmn.readModelFromStream(inputStream);
List decisions = dmnEngine.parseDecisions(dmnModelInstance);
DmnDecision decision = decisions.get(0);
DmnDecisionTableResult result = dmnEngine.evaluateDecisionTable(decision, variables);
String desiredDish = result.getSingleResult().getSingleEntry();
System.out.println("Dish Decision:\n\tI would recommend to serve: " + desiredDish);下面是用4.12.0创建的dmn文件
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="https://www.omg.org/spec/DMN/20191111/MODEL/" xmlns:dmndi="https://www.omg.org/spec/DMN/20191111/DMNDI/" xmlns:dc="http://www.omg.org/spec/DMN/20180521/DC/" xmlns:camunda="http://camunda.org/schema/1.0/dmn" id="decision" name="Dish" namespace="http://camunda.org/schema/1.0/dmn" exporter="Camunda Modeler" exporterVersion="4.12.0">
<decision id="Decision_0iitlac" name="Dish">
<decisionTable id="DecisionTable_0gwyugh" hitPolicy="ANY">
<input id="Input_1" label="Season" camunda:inputVariable="season">
<inputExpression id="InputExpression_1" typeRef="string">
<text>season</text>
</inputExpression>
</input>
<output id="Output_1" label="Dish" name="desiredDish" typeRef="string" />
<rule id="DecisionRule_0oq0hav">
<description>-</description>
<inputEntry id="UnaryTests_0m9w26w">
<text>"Fall"</text>
</inputEntry>
<outputEntry id="LiteralExpression_0ii151o">
<text>"Spareribs"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_1atwuts">
<description>-</description>
<inputEntry id="UnaryTests_1bnxqqw">
<text>"Winter"</text>
</inputEntry>
<outputEntry id="LiteralExpression_1bzzfsr">
<text>"RoastBeer"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_0kf4y0a">
<inputEntry id="UnaryTests_09pkbsv">
<text>"Spring"</text>
</inputEntry>
<outputEntry id="LiteralExpression_0fx9hii">
<text>"Dry Aged steak"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_020pynb">
<description>Less Effort</description>
<inputEntry id="UnaryTests_10ydtir">
<text>"Fall","Winter","Spring"</text>
</inputEntry>
<outputEntry id="LiteralExpression_0byu0h6">
<text>"Stew"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_19jjhib">
<description>Hey why not</description>
<inputEntry id="UnaryTests_03eg1qd">
<text>"Summer"</text>
</inputEntry>
<outputEntry id="LiteralExpression_0cx6p63">
<text>"Light Sald"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_1cnr8kg">
<inputEntry id="UnaryTests_12w0ceb">
<text></text>
</inputEntry>
<outputEntry id="LiteralExpression_1g1nomo">
<text></text>
</outputEntry>
</rule>
</decisionTable>
</decision>
<dmndi:DMNDI>
<dmndi:DMNDiagram>
<dmndi:DMNShape dmnElementRef="Decision_0iitlac">
<dc:Bounds height="80" width="180" x="160" y="100" />
</dmndi:DMNShape>
</dmndi:DMNDiagram>
</dmndi:DMNDI>
</definitions>任何帮助都是非常感谢的。
发布于 2022-01-15 14:21:49
您编写java代码来解析DMN表是有原因的吗?Camunda引擎将为您解析和评估表,作为运行流程的一部分。
尽管如此,您的Java代码似乎并不完整,因为我看不到您在任何变量中输入的位置。我假设您应该提供一个要评估的输入变量cellInput。
dg
发布于 2022-01-28 10:39:40
在“季节”列中,您将字段“输入变量”的默认值从cellInput更改为“季节”。从输入变量字段中移除季节,并确保数据季节的值被传入。
https://stackoverflow.com/questions/70698546
复制相似问题