java - 具有 3 输出专用网关的 BPMN 图在 Camunda 中不起作用

标签 java eclipse wildfly bpmn camunda

我正在处理包含在部署到 Camunda 的 .war 文件中的 BPMN 图。该图显示正常,我可以完成前两个用户任务,但是当我到达独占网关时,我收到错误消息:表达式中使用的未知属性:${Approve == 1}。原因:无法解析标识符“批准”

我尚未确定变量 Approve,但我不确定在哪里执行此操作?我一直在处理BPMN图的.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 文件中定义,以及如何执行此操作?谢谢。

最佳答案

您有两个带有条件表达式的序列流。分别名为 ApproveReject 的变量上的表达式引用。这些变量必须在要评估的当前范围内定义。创建变量的方法有多种,之后应该对其进行评估。例如,创建一个表单,您可以在其中完成用户任务并创建变量。

您可以使用task complete REST 资源来完成用户任务并创建变量。

还可以在 execution listener 中使用 Java API :

public class ExampleExecutionListenerOne implements ExecutionListener {

  public void notify(DelegateExecution execution) throws Exception {
    execution.setVariable("Approve", true);
  }
}

希望有帮助。

关于java - 具有 3 输出专用网关的 BPMN 图在 Camunda 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38901332/

相关文章:

java - Spring Data JPA 存储库 : IN-clause in derived query not working

java - 从 Tomcat 获取日志

Java 构造函数被多次调用

jboss - Keycloak - Infinispan Redis 缓存存储

java - Wildfly 无法创建 netty 连接

jms - 如何在 Wildfly 和 ApacheActiveMQ Artemis 之间创建 jms 桥?

java - 如何删除JPA @ManyToMany关系中的记录?

java - 方法 getOrDefault(String, String) 未定义类型 Map<String,String>

Java Applet 无法正确显示

java - 在 IntelliJ IDEA 中突出显示异常抛出器