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 相同,后者覆盖前者。