8.10 组任务
8.10.1 组任务的分配
8.10.1.1 写死的方式指定
该方式不推荐
人名与人名之间用 英文逗号 隔开。
8.10.1.2 实现AssignmentHandler接口指定
在.xml文件配置如下:
<task name="组任务2" g="347,280,92,52"> <assignment-handler class="com.snow.config.Group11AssignmentHandler"> </assignment-handler> <transition name="to end1" to="end1" g="-50,-22"/> </task>
类实现:
public class Group11AssignmentHandler implements AssignmentHandler { private static final long serialVersionUID = 11L; @Override public void assign(Assignable assignable, OpenExecution execution) throws Exception { // 获取 该分组任务的 候选人 ooo_task2_users流程变量是在流程走到该节点前指定的 String vairableName = "ooo_task2_users"; String[] users = (String[]) execution.getVariable(vairableName); // 将 人员 分配 给 组任务 for(String user : users){ assignable.addCandidateUser(user); } } }
8.10.2 查询自己的组任务
// 查询自己的组任务 @Test public void findGroupTasksByUser(){ String user = "小明"; List<Task> tasks = processEngine.getTaskService() .createTaskQuery() .candidate(user) .list(); System.out.println(tasks.size()); for(Task task : tasks){ System.out.println(task.getId() + task.getName() + task.getAssignee()); } }
8.10.3 办理自己的组任务
同 8.7.2
getExecutionService().getVariables(executionId, variableNames1); // 同上 processEngine.getTaskService().getVariable(taskId, variableName); processEngine.getTaskService().getVariableNames(taskId); Set<String> variableNames2 = null; processEngine.getTaskService().getVariables(taskId, variableNames2); }
所有的流程变量 都在 jbpm4_variable 表中可以查看。