工作流activiti 6 学习笔记十五 实践获取下一节点信息

举报
lu_zhishen 发表于 2021/10/29 16:18:34 2021/10/29
【摘要】 业务场景:当用户提交审批,弹出选择审批人的时候,通常要显示的是下一节点的信息,根据当前节点获取下一个节点就很重要了,百度了一下,大部分文章好像写的都不对,因此记录一下。需要重点强调的是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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。