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

2023-11-14 17:30:18 浏览数 (2)

3.5.3.2 任务办理时设置

在完成任务时设置流程变量,该流程变量只有在该任务完成后其它结点才可使用该变量,它的作用域是整个流程实例,如果设置的流程变量的 key 在流程实例中已存在相同的名字则后设置的变量替换前边设置的变量。

这里需要在创建请假单任务完成时设置流程变量

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

说明:

通过当前任务设置流程变量,需要指定当前任务 id,如果当前执行的任务 id 不存在则抛出异常。

任务办理时也是通过 map<key,value>设置流程变量,一次可以设置多个变量。

3.5.3.3 通过当前流程实例设置

通过流程实例 id 设置全局变量,该流程实例必须未执行完成。

代码语言:javascript复制
public void setGlobalVariableByExecutionId(){
//当前流程实例执行 id,通常设置为当前执行的流程实例
String executionId="2601";
RuntimeService runtimeService = processEngine.getRuntimeService();
Holiday holiday = new Holiday();
holiday.setNum(3);
//通过流程实例 id设置流程变量
runtimeService.setVariable(executionId, "holiday", holiday);
//一次设置多个值
//runtimeService.setVariables(executionId, variables)
}

注意:

executionId 必须当前未结束 流程实例的执行 id,通常此 id 设置流程实例 的 id。

也可以通过 runtimeService.getVariable()获取流程变量

0 人点赞