我正在处理一个包含在部署到Camunda的.war文件中的BPMN图表。该图显示正常,我可以完成前两个用户任务,但是当我到达专用网关时,我收到错误消息:表达式中使用的未知属性:$ {Approve == 1}。原因:无法解析标识符'批准'
我还没有确定变量Approve,但我不确定在哪里这样做?我一直在使用BPM图的.xml文件,其中与专用网关相关的代码如下:
<bpmn:sequenceFlow id="SequenceFlow_07b7fwg" name="Approve" sourceRef="ExclusiveGateway_0znxqqy" targetRef="ServiceTask_06fn5cm">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${Approve == 1}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="SequenceFlow_0qnqvj1" sourceRef="ServiceTask_06fn5cm" targetRef="EndEvent_146k48m" />
<bpmn:endEvent id="EndEvent_0ug591n" name="End">
<bpmn:incoming>SequenceFlow_1y6i7xo</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="SequenceFlow_068nx8b" name="Reject" sourceRef="ExclusiveGateway_0znxqqy" targetRef="ServiceTask_17qnuyi">
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">${Reject == 2}</bpmn:conditionExpression>
</bpmn:sequenceFlow>
<bpmn:sequenceFlow id="SequenceFlow_1irpvhx" sourceRef="ServiceTask_17qnuyi" targetRef="ServiceTask_1jks4hs" />
<bpmn:sequenceFlow id="SequenceFlow_1mjdjw2" sourceRef="ServiceTask_1jks4hs" targetRef="EndEvent_1qmduq" />
<bpmn:endEvent id="EndEvent_1qmduq" name="Hello!" />
<bpmn:sequenceFlow id="SequenceFlow_1deve3u" name="Extra Step" sourceRef="ExclusiveGateway_0znxqqy" targetRef="ServiceTask_09nq79v" />
<bpmn:sequenceFlow id="SequenceFlow_1y6i7xo" sourceRef="ServiceTask_09nq79v" targetRef="EndEvent_0ug591n" />
这是基于Camunda在此提供的代码:https://docs.camunda.org/manual/7.4/reference/bpmn20/gateways/exclusive-gateway/
还有一些已在Eclipse中创建的步骤的.java文件,并引用相同的BPMN图。我不确定是否应该在.xml文件或.java文件中定义变量,以及如何进行此操作?感谢。
答案 0 :(得分:2)
您有两个具有条件表达式的序列流。分别对Approve
Reject
变量的表达式引用。必须在要评估的当前范围中定义这些变量。创建变量有不同的方法,应该在之后进行评估。例如,创建一个表单,您可以在其上完成用户任务并创建变量。
您可以使用task complete REST资源来完成用户任务并创建变量。
也可以在execution listener:
中使用Java APIpublic class ExampleExecutionListenerOne implements ExecutionListener {
public void notify(DelegateExecution execution) throws Exception {
execution.setVariable("Approve", true);
}
}
希望它有所帮助。