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

2023-11-16 11:10:40 浏览数 (2)

3.6设置 local 流程变量

3.6.1 任务办理时设置

任务办理时设置 local 流程变量,当前运行的流程实例只能在该任务结束前使用,任务结束该变量无法在当前流程实例使用,可以通过查询历史任务查询。

代码语言:javascript复制
// 办理任务时设置local流程变量
@Test
public void completTask() {
//任务id
String taskId = "";
TaskService taskService = processEngine.getTaskService();
// 定义流程变量
Map<String, Object> variables = new HashMap<String, Object>();
Holiday holiday = new Holiday ();
holiday.setNum(3);
// 定义流程变量
Map<String, Object> variables = new HashMap<String, Object>();
//变量名是holiday,变量值是holiday对象
variables.put("holiday", holiday);
// 设置local变量,作用域为该任务
 taskService.setVariablesLocal(tasked, variables);
taskService.complete(taskId);
}

说明:

设置作用域为任务的 local 变量,每个任务可以设置同名的变量,互不影响。

3.6.2通过当前任务设置

代码语言:javascript复制
@Test
public void setLocalVariableByTaskId(){
//当前待办任务id
String taskId="1404";
TaskService taskService = processEngine.getTaskService();
Holiday holiday = new Holiday ();
holiday.setNum(3);
//通过任务设置流程变量
taskService.setVariableLocal(taskId, "holiday", holiday);
//一次设置多个值
//taskService.setVariablesLocal(taskId, variables)
}

注意:

任务 id 必须是当前待办任务 id,act_ru_task 中存在。

3.6.3 Local 变量测试 1

如果上边例子中设置 global 变量改为设置 local变量是否可行?为什么?

Local 变量在任务结束后无法在当前流程实例执行中使用,如果后续的流程执行需要用到此变量则会

报错。

0 人点赞