如何在Camunda-BPM中设置全局流程变量?

2 java variables scope bpmn camunda

我有一个简单的 bpmn 流程,其中使用 2 个服务任务,我使用 processEngine.getRuntimeService().startProcessInstanceByKey("Process_1", variables); 变量执行我的流程,如下所示:

Map variables = new HashMap();
variables.put("a", 2);
variables.put("b", 5);
Run Code Online (Sandbox Code Playgroud)

服务任务 1 实现一个Additionjava 类,服务任务 2 实现一个Multiplication类。

现在我想要 3 个变量(常量) c = 5,,以便我可以用于d = 10服务任务 1,这样我就可以使用这个变量,类似地我想在我的类中使用,并且应该是全局的,以便我可以在两个班。e = 2cAdditiondMultiplicatione

有人可以指导我吗?

Pat*_*ner 5

作为快速修复,您可以将设置服务任务作为预填充流程变量的流程的第一个任务。根据您启动进程的方式,您可以: 通过 java-object-api 设置变量

https://docs.camunda.org/manual/7.5/user-guide/process-engine/variables/#java-object-api

或者,如果您使用 REST 调用,您可以在请求正文中提供这些固定值:

https://docs.camunda.org/manual/7.5/reference/rest/process-definition/post-start-process-instance/

另一个简单的解决方案是一个具有静态值的类或一个保存所需值的枚举。

- 编辑 -

如果你想使用 inputOutput 扩展,请将如下内容添加到你的 bpmn 文件中:

<bpmn:process id="Process_1" isExecutable="false">
  <bpmn:extensionElements>
    <camunda:inputOutput>
      <camunda:inputParameter name="c">5</camunda:inputParameter>
      <camunda:inputParameter name="d">10</camunda:inputParameter>
      <camunda:inputParameter name="e">2</camunda:inputParameter>
    </camunda:inputOutput>
  </bpmn:extensionElements>
Run Code Online (Sandbox Code Playgroud)

这无法在 camunda 建模器的图表视图中完成,只需切换到流程的 XML 表示形式并添加扩展元素即可。