项目实践工作流之Activiti学习(三十一)

2023-11-13 20:48:20 浏览数 (1)

3.5使用 Global 变量控制流程

3.5.1需求:

员工创建请假申请单,由部门经理审核,部门经理审核通过后请假 3 天及以下由人事经理直接审核,3 天以上先由总经理审核,总经理审核通过再由人事经理存档。

3.5.2流程程定义

请假天数大于等于 3 连线条件:

请假天数小于 3 连线条件:

3.5.3设置 global 流程变量

在部门经理审核前设置流程变量,变量值为请假单信息(包括请假天数),部门经理审核后可以根据流程变量的值决定流程走向。

3.5.3.1 启动流程时设置

在启动流程时设置流程变量,变量的作用域是整个流程实例。

通过 map<key,value>设置流程变量,map 中可以设置多个变量,这个 key 就是流程变量的名字。

代码语言:javascript复制
// 启动流程时设置流程变量
@Test
public void startProcessInstance() {
// 流程定义key
String processDefinitionKey = ""; 
Holiday holiday = new Holiday();
holiday.setNum(3);
// 定义流程变量
Map<String, Object> variables = new HashMap<String, Object>();
//变量名是num,变量值是holiday.getNum(),变量名也可以是一个对象
variables.put("num", holiday.getNum());
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService
.startProcessInstanceByKey(processDefinitionKey, variables);
System.out.println(" 流 程 实 例 id:"   
processInstance.getProcessInstanceId());
}

说明:

startProcessInstanceByKey(processDefinitionKey, variables)流程变量作用域是一个流程实例,流程变量使用 Map 存储,同一个流程实例设置变量 map 中 key 相同,后者覆盖前者。

0 人点赞