8.7 办理任务
8.7.1 办理个人任务
办理前数据表中:
办理任务:
// 办理个人任务 @Test public void comPeletePersonTask111(){ String taskId = "1520002"; String user = "张三"; List<Task> list = processEngine.getTaskService().findPersonalTasks(user); System.out.println(list.size()); if( list == null || list.size() < 1){ // throw ... System.out.println("该用户当前没有可以办理的任务!"); return; } for(Task task : list){ if(user.equals(task.getAssignee()) && taskId.equals(taskId)){ // 办理任务 processEngine.getTaskService().completeTask(taskId); break; } } }
办理后数据表:
8.7.2 办理个人组任务
个人组任务:组任务节点的办理人不是一个人,而是一组拥有相同权限的人(设置组任务办理人在8.10.1)。
组任务不能直接办理,需要先将该组任务 拾取 到个人任务中。这样该组任务就变成了个人任务,此时办理方法同8.7.1。
拾取任务:
@Test public void ban(){ String taskId = "1470004"; String user = "小红"; // 拾取前 判断下 该组任务的办理用户中是否有 该用户 // 判断 略... processEngine.getTaskService().takeTask(taskId, user); } // 拾取任务后 该组任务就变为自己的任务了 办理 同 8.7.1 // 办理 略...
8.8 驳回任务
// 驳回申请 @Test public void jujue(){ String taskId = "410001"; Task task = processEngine.getTaskService().getTask(taskId); System.out.println(task.getExecutionId()); // 在驳回任务前最好先做个判断,只能驳回属于自己的任务 // 判断 略... processEngine.getExecutionService() .endProcessInstance(task.getExecutionId(),ProcessInstance.STATE_ENDED); }
8.9 流程变量
流程变量设置的值的作用域是整个流程(流程启动到流程结束,流程变量在流程结束后会自动从数据库表删除)。
流程变量 会保存在 jbpm4_variable 表中。
8.9.2 设置流程变量
// 设置流程变量 @Test public void testSetVariables(){ String executionId = ""; String taskId = ""; String name = ""; Object value = ""; Map<String, Object> variableMap = new HashMap<String, Object>(); String processDefinitionKey = ""; // 以下 设置 流程变量的方式 任选其一就行 // 根据 Execution 设置一个流程变量 processEngine.getExecutionService().setVariable(executionId, name, value); // 根据 Execution 设置多个流程变量 processEngine.getExecutionService().setVariables(executionId, variableMap); // 根据 Task 设置多个流程变量(放入map) processEngine.getTaskService().setVariables(taskId, variableMap); // 启动时候 加入流程变量 processEngine.getExecutionService().startProcessInstanceByKey(processDefinitionKey, variableMap); // 办理指定任务 并 加入 参数 processEngine.getTaskService().completeTask(taskId, variableMap); }
8.9.3 获取流程变量
// 获取流程变量 @Test public void testGetVariables(){ String executionId = ""; String taskId = ""; String variableName = ""; // 根据 Execution获取指定名称的一个流程变量 processEngine.getExecutionService().getVariable(executionId, variableName); // 根据 Execution获取所有流程变量 processEngine.getExecutionService().getVariableNames(executionId); // 根据 Execution获取指定名称的所有流程变量 Set<String> variableNames1 = null; processEngine.getExecutionService().getVariables(executionId, variableNames1); // 同上 processEngine.getTaskService().getVariable(taskId, variableName); processEngine.getTaskService().getVariableNames(taskId); Set<String> variableNames2 = null; processEngine.getTaskService().getVariables(taskId, variableNames2); }
所有的流程变量 都在 jbpm4_variable 表中可以查看。