当前位置: 代码迷 >> 综合 >> Activiti-设置全局变量的四种方法
  详细解决方案

Activiti-设置全局变量的四种方法

热度:123   发布时间:2023-11-03 07:23:54.0

1.在流程启动的时候设置全局变量

//在流程启动时设置全局变量
@Test
public void startProcessInstance() {//得到runtimeServiceRuntimeService runtimeService = processEngine.getRuntimeService();//根据流程定义的key(标识)来启动一个实例,activiti找该key下版本最高的流程定义//一般情况下为了方便开发使用该方法启动一个流程实例String processDefinitionKey = "purchasingflow";//在流程启动时设置全局变量,第二个参数variables存储流程变量Map<String , Object> variables = new HashMap<String,Object>();//流程变更名称是assignee,流程变量值是“张三”variables.put("assignee", "张三");ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, variables);//根据流程定义的id来启动一个实例,这种方法一般不用//runtimeService.startProcessInstanceById(processDefinitionId);System.out.println("流程变量:" + processInstance.getProcessVariables());

2.任务办理时候设置变量


//办理任务时设置变量
@Test
public void completeTask(){//查询任务使用taskserviceTaskService taskService = processEngine.getTaskService();//任务idString taskId = "3002";//任务办理人String assignee = "wangwu";//根据任务id和assignee查询该任务Task task = taskService.createTaskQuery().taskId(taskId).taskAssignee(assignee).singleResult();if (task != null) {//说明assignee是该任务的办理人,有权限完成//taskService.complete(taskId);//完成任务是设置流程变量Map<String, Object> variables = new HashMap<String,Object>();//流程变更名称是assignee,流程变量值是“张三”//variables.put("assignee", "李四");//taskService.complete(taskId, variables);taskService.complete(taskId);System.out.println("完成任务:" + taskId);}}

3.通过当前流程实例id设置


//调用api,通过当前流程实例id设置
@Test
public void setVariableByProcessInstanceId(){RuntimeService runtimeService = processEngine.getRuntimeService();//设置单个变量//第一个参数:executionId是流程实例的执行id,通常使用流程实例id,必须是当前正在运行的流程实例id//第二个参数:变量名//第三个参数:变量值runtimeService.setVariable("503", "price", 10000);//一次设置多个变量,第二个参数是map//runtimeService.setVariables(executionId, variables);
}

4.通过当前待办任务设置变量


//通过当前待办任务设置变量
@Test
public void setVariableByTaskId(){TaskService taskService = processEngine.getTaskService();//设置单个变量//第一个参数:taskI是当前待办任务的id,在act_ru_task存在//第二个参数:变量名//第三个参数:变量值taskService.setVariable("2903", "price", 2000);//一次设置多个变量,第二个参数是map//taskService.setVariables(taskId, variables);
}