候选人设置了deptleader,该值将部署在表ACT_RU_IDENTITYLINK中,查看xml看见:
//设置了候选组 <userTask id="deptLeaderAudit" name="部门领导审批" activiti:candidateGroups="deptLeader"> </userTask>
完整的XML(无图形位置信息)
<process id="leave" name="请假流程" isExecutable="true"> <documentation>请假流程演示</documentation> <startEvent id="startevent1" name="Start" activiti:initiator="applyUserId"></startEvent> <userTask id="deptLeaderAudit" name="部门领导审批" activiti:candidateGroups="deptLeader"></userTask> <exclusiveGateway id="exclusivegateway5" name="Exclusive Gateway"></exclusiveGateway> <userTask id="modifyApply" name="调整申请" activiti:assignee="${applyUserId}"> <extensionElements> <activiti:taskListener event="complete" delegateExpression="${afterModifyApplyContentProcessor}"></activiti:taskListener> </extensionElements> </userTask> <userTask id="hrAudit" name="人事审批" activiti:candidateGroups="hr"></userTask> <exclusiveGateway id="exclusivegateway6" name="Exclusive Gateway"></exclusiveGateway> <userTask id="reportBack" name="销假" activiti:assignee="${applyUserId}"> <extensionElements> <activiti:taskListener event="complete" delegateExpression="${reportBackEndProcessor}"></activiti:taskListener> </extensionElements> </userTask> <endEvent id="endevent1" name="End"></endEvent> <exclusiveGateway id="exclusivegateway7" name="Exclusive Gateway"></exclusiveGateway> <sequenceFlow id="flow2" sourceRef="startevent1" targetRef="deptLeaderAudit"></sequenceFlow> <sequenceFlow id="flow3" sourceRef="deptLeaderAudit" targetRef="exclusivegateway5"></sequenceFlow> <sequenceFlow id="flow4" name="不同意" sourceRef="exclusivegateway5" targetRef="modifyApply"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!deptLeaderPass}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow5" name="同意" sourceRef="exclusivegateway5" targetRef="hrAudit"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${deptLeaderPass}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow6" sourceRef="hrAudit" targetRef="exclusivegateway6"></sequenceFlow> <sequenceFlow id="flow7" name="同意" sourceRef="exclusivegateway6" targetRef="reportBack"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${hrPass}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow8" sourceRef="reportBack" targetRef="endevent1"></sequenceFlow> <sequenceFlow id="flow9" name="不同意" sourceRef="exclusivegateway6" targetRef="modifyApply"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!hrPass}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow10" name="重新申请" sourceRef="exclusivegateway7" targetRef="deptLeaderAudit"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${reApply}]]></conditionExpression> </sequenceFlow> <sequenceFlow id="flow11" sourceRef="modifyApply" targetRef="exclusivegateway7"></sequenceFlow> <sequenceFlow id="flow12" name="结束流程" sourceRef="exclusivegateway7" targetRef="endevent1"> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!reApply}]]></conditionExpression> </sequenceFlow> </process>
2.查询候选任务
//根据候选组ID查询拥有任务 List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup(groupA.getId()).list(); for (Task task : tasks){
System.out.println(task.getName());
} //根据用户ID查询任务 tasks = taskService.createTaskQuery().taskCandidateUser(user.getId()).list(); for (Task task : tasks){
System.out.println(task.getName());
} //调用taskCandidateGroupIn List<String> groupIds = new ArrayList<String>(); groupIds.add(groupA.getId()); groupIds.add(groupB.getId());
tasks = taskService.createTaskQuery().taskCandidateGroupIn(groupIds).list(); for (Task task : tasks){
System.out.println(task.getName());
} //查询权限数据 List<IdentityLink> links = taskService.getIdentityLinksForTask(tasks.get(0).getId()); System.out.println("关系数据量: " + links.size());}
原文:http://www.cnblogs.com/firebata/p/5253021.html