我正在使用一个Controller创建一个简单的spring-boot RESTful Web API。我按照Camunda的Github上的示例嵌入了DMN引擎。
我在Camunda Modeler上创建了DMN定义。我将其上传到了Camunda DMN Simulator,并且效果很好。
但是,当我从Web API内部读取时,出现以下错误。
DMN-02003 Unable to transform decisions from input stream.
深入研究时,会发现以下内部异常。
org.xml.sax.SAXException: Error: URI=null Line=2: cvc-elt.1: Cannot find the declaration of element ‘definitions’.
这是我正在使用的示例代码。
dmnEngine = DmnEngineConfiguration.createDefaultDmnEngineConfiguration().buildEngine();
InputStream fileStream = getClass()
.getClassLoader().getResourceAsStream("trade.dmn");
dmnDecision = dmnEngine.parseDecision("category_decision", fileStream);
我已经仔细检查了InputStream是否已正确加载,它从头到尾显示了XML定义。
这是我的.dmn文件
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn.xsd" xmlns:biodi="http://bpmn.io/schema/dmn/biodi/1.0" id="categoryDecision" name="Category Decisions" namespace="http://camunda.org/schema/1.0/dmn" exporter="Camunda Modeler" exporterVersion="3.0.1">
<decision id="category_decision" name="Category Decision">
<extensionElements>
<biodi:bounds x="235" y="81" width="180" height="80" />
<biodi:edge source="InputData_0rvbel4">
<biodi:waypoints x="229" y="291" />
<biodi:waypoints x="288" y="161" />
</biodi:edge>
</extensionElements>
<informationRequirement>
<requiredInput href="#InputData_0rvbel4" />
</informationRequirement>
<decisionTable id="decisionTable_1">
<input id="InputClause_1dib2hg" label="Size">
<inputExpression id="LiteralExpression_1sesq6j" typeRef="integer">
<text>tradeSize</text>
</inputExpression>
</input>
<output id="output_1" label="Category" name="category" typeRef="string" />
<rule id="DecisionRule_12mnt4v">
<inputEntry id="UnaryTests_0ujys6t">
<text>>100</text>
</inputEntry>
<outputEntry id="LiteralExpression_1dc690t">
<text>"large"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_1e7c7uc">
<inputEntry id="UnaryTests_0r8085z">
<text><100</text>
</inputEntry>
<outputEntry id="LiteralExpression_0x2p9cr">
<text>"small"</text>
</outputEntry>
</rule>
<rule id="DecisionRule_0rmcb11">
<inputEntry id="UnaryTests_10xi3qk">
<text>100</text>
</inputEntry>
<outputEntry id="LiteralExpression_1awferl">
<text>"small"</text>
</outputEntry>
</rule>
</decisionTable>
</decision>
<inputData id="InputData_0rvbel4" name="Size of Trade">
<extensionElements>
<biodi:bounds x="156" y="291" width="125" height="45" />
</extensionElements>
</inputData>
</definitions>
谢谢!