Flowable是一个工作流和业务流程管理平台,它允许用户定义、执行和管理各种业务流程。在Flowable中,变量(Variables)是用来在流程执行期间存储和传递数据的。
变量存储位置:
-
运行时数据库:
- 当流程实例在运行时,相关的变量通常存储在Flowable的运行时数据库中。这些变量与特定的流程实例、任务或其他执行元素相关联。
-
流程定义:
- 有些变量可能在流程定义中被设置为默认值或静态值。
-
外部存储:
- 虽然不是默认行为,但可以通过自定义代码将变量存储在外部数据库、缓存或其他存储系统中。
自定义变量:
要自定义变量,可以采取以下步骤:
-
定义变量:
- 在流程定义文件(通常是BPMN文件)中,可以使用
<extensionElements>
元素来定义变量。例如:
xml
flowable:inputOutput
<flowable:inputParameter name=“myVariable” />
<flowable:outputParameter name=“myVariable” />
</flowable:inputOutput>
- 在流程定义文件(通常是BPMN文件)中,可以使用
-
设置变量值:
- 在流程执行期间,可以在Java代码中使用
RuntimeService
来设置变量值:
java
RuntimeService runtimeService = processEngine.getRuntimeService();
runtimeService.setVariable(executionId, “myVariable”, “myValue”);- 也可以在任务服务中使用
TaskService
来设置任务级别的变量:
java
TaskService taskService = processEngine.getTaskService();
taskService.setVariable(taskId, “myVariable”, “myValue”); - 在流程执行期间,可以在Java代码中使用
-
获取变量值:
- 使用
RuntimeService
或TaskService
可以获取变量的值:
java
Object variableValue = runtimeService.getVariable(executionId, “myVariable”);或
java
Object variableValue = taskService.getVariable(taskId, “myVariable”); - 使用
-
使用表达式:
- 在BPMN模型中,可以使用UEL表达式来设置和获取变量值。
-
自定义存储:
- 如果需要将变量存储在外部系统,可以在Flowable的监听器(如ExecutionListener或TaskListener)中编写自定义代码来实现。
java
public class MyExecutionListener implements ExecutionListener {
public void notify(ExecutionListenerExecution execution) {
// 自定义存储逻辑
}
}
在自定义变量及其存储时,需要注意数据的安全性、一致性和性能。确保按照业务需求和最佳实践来设计变量的使用和存储方式。