Flowable 设置流程变量的四种方式详解
在 Flowable 的流程开发中,我们经常需要设置流程变量。而要设置一个变量,有多种方式可以选择,本文将详细介绍这四种具体方式。
第一种方式:在 BPMN 中定义变量
第一种方式是在 BPMN 文件中,直接在 Start Event 中的属性设置中设置变量的名称和类型。如下所示:
<bpmn:startEvent id="startevent1" name="Start Event">
<bpmn:extensionElements>
<flowable:executionListener event="start">
<flowable:field name="name" stringValue="John Doe" />
</flowable:executionListener>
</bpmn:extensionElements>
</bpmn:startEvent>
在上面的代码中,stringValue
的值是设置的流程变量的值。这种方式适用于 在流程的启动时就设置好变量的值,同时它的好处是可读性强。
第二种方式:使用 BPMN 中的任务监听器
第二种方式是使用 BPMN 中的任务监听器,在任务执行之前或之后设置变量。可以看下面的示例:
<bpmn:serviceTask id="serviceTask1" name="Service Task">
<bpmn:extensionElements>
<flowable:executionListener event="start">
<flowable:field name="name" stringValue="John Doe" />
</flowable:executionListener>
</bpmn:extensionElements>
</bpmn:serviceTask>
在上面的例子中,变量的值被设置为 John Doe,这种设置方式适用于需要在任务执行前后设置变量的场景。
第三种方式:使用 Java 代码设置变量
在 Java 代码中,我们可以使用 Execution 类中的 setVariable 方法, 在流程的执行过程中设置变量的值。示例如下:
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
RuntimeService runtimeService = processEngine.getRuntimeService();
String processInstanceId = ""; // 执行的流程实例 ID
runtimeService.setVariable(processInstanceId, "name", "John Doe");
使用 Java 代码设置变量通常适用于执行任务时需要动态地设置变量值或者在 Java 代码里面对流程变量进行操作的场景。
第四种方式:使用 REST API
最后一种方式是使用 REST API,curl 客户端示例如下:
curl -v -X POST -H "Content-Type:application/json" -d "{\"name\":\"John Doe\"}" "http://localhost:8080/flowable-rest/service/runtime/executions/{executionId}/variables"
其中,executionId 表示流程实例的 ID,该方式是适用于需要通过 API 设置变量值的场景。
总结
上面就是四种设置流程变量的方式,使用这些方式可以在不同场景下为流程设置变量,实现业务逻辑。要根据具体情况选择适合的方式,使用恰当的方式可以让代码更加简洁易读。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Flowable 设置流程变量的四种方式详解 - Python技术站