文章目录
- 8.7 办理任务
- 8.7.1 办理个人任务
- 8.7.2 办理个人组任务
- 8.8 驳回任务
- 8.9 流程变量
- 8.9.2 设置流程变量
- 8.9.3 获取流程变量
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 表中可以查看。