工作流activiti 6 学习笔记十五 实践获取下一节点信息
【摘要】 业务场景:当用户提交审批,弹出选择审批人的时候,通常要显示的是下一节点的信息,根据当前节点获取下一个节点就很重要了,百度了一下,大部分文章好像写的都不对,因此记录一下。需要重点强调的是task 和 usertask 是两个不同的节点,一个是执行流,一个是bpmn静态文件。private List<UserTask> getNextTask(Task currenttask,String pr...
业务场景:当用户提交审批,弹出选择审批人的时候,通常要显示的是下一节点的信息,根据当前节点获取下一个节点就很重要了,百度了一下,大部分文章好像写的都不对,因此记录一下。需要重点强调的是task 和 usertask 是两个不同的节点,一个是执行流,一个是bpmn静态文件。
private List<UserTask> getNextTask(Task currenttask,String processDef){
List<UserTask> nextTask = new ArrayList<UserTask>();
BpmnModel bpmnModel = rs.getBpmnModel(processDef);
org.activiti.bpmn.model.Process process = bpmnModel.getProcesses().get(0);
//获取所有普通任务节点
List<UserTask> UserTaskList = process.findFlowElementsOfType(UserTask.class);
for(UserTask userTask:UserTaskList){
//获取当前任务节点Id 09072bfd-388a-11ec-ad79-225bad8f0f0f
String id = userTask.getId();
if(id.equals(currenttask.getTaskDefinitionKey())){
//获取当前任务节点的所有出线信息
List<SequenceFlow> outgoingFlows = userTask.getOutgoingFlows();
for(SequenceFlow sequenceFlow:outgoingFlows){
//获取出线连接的目标节点
FlowElement targetFlowElement = sequenceFlow.getTargetFlowElement();
//获取到了下一个节点的Id
String nextId = targetFlowElement.getId();
List<UserTask> UserTaskLists = process.findFlowElementsOfType(UserTask.class);
//再次遍历所有普通任务节点
for(UserTask userTasks:UserTaskLists) {
//获取任务节点Id
String flowId = userTasks.getId();
//如果遍历的某个任务节点Id等于下一个节点的Id
if (flowId.equals(nextId)) {
nextTask.add(userTasks);
}
}
}
}
}
return nextTask;
}
task 的 getTaskDefinitionKey = usertask的id ,这个需要额外注意。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)