Acitivit6获取当前任务下个节点组或人员

  @Test
    public void queryHistoricVariables1() {
        List<FlowNode> list = getNextNode("127507");
        for (FlowNode flowNode : list) {
            if (flowNode instanceof UserTask) {
                UserTask userTask = (UserTask)flowNode;
                List<String> candidateGroups = userTask.getCandidateGroups();
                System.out.println(candidateGroups);
            }
            System.out.println(flowNode.getId());
            System.out.println(flowNode.getName());
        }
        System.out.println(list);
    }

    /**
     * 下一个节点
     *
     * @param taskid
     * @return
     * @throws
     */

    public List<FlowNode> getNextNode(String taskid) {
        HistoricTaskInstance myTask = processEngine.getHistoryService().createHistoricTaskInstanceQuery().taskId(taskid).singleResult();
        String processDefinitionId = myTask.getProcessDefinitionId();
        BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
        String myActivityId = myTask.getTaskDefinitionKey();
        if (StringUtils.isEmpty(myActivityId)) {
            return Lists.newArrayList();
        }
        List<FlowNode> flowNodeList = Lists.newArrayList();
        FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(myActivityId);
        List<FlowNode> flowNodes = Lists.newArrayList();
        flowNodes.add(flowNode);
        addNextNode(flowNodes, flowNodeList);
        return flowNodeList;
    }
    /**
     * @param list         存放网关节点
     * @param flowNodeList 任务节点
     * @return addNextNode
     * @description 解析当前节点的接下来的任务节点
     */
    private void addNextNode(List<FlowNode> list, List<FlowNode> flowNodeList) {
        if (CollectionUtils.isEmpty(list)) {
            return;
        }
        List<FlowNode> flowNodeList1 = Lists.newArrayList();
        for (FlowNode flowNode : list) {
            List<SequenceFlow> sequenceFlows = flowNode.getOutgoingFlows();
            for (SequenceFlow sequenceFlow : sequenceFlows) {
                FlowNode flowNode1 = (FlowNode) sequenceFlow.getTargetFlowElement();
                if (flowNode1 == null) {
                    continue;
                }
                if (flowNode1 instanceof UserTask) {
                    if (flowNode1.getName() == null) {
                        flowNode1.setName(" ");
                    }
                    flowNodeList.add(flowNode1);
                } else if (flowNode1 instanceof EndEvent) {
                    flowNode1.setName("结束");
                    flowNodeList.add(flowNode1);
                } else if (flowNode1 instanceof StartEvent) {
                    flowNode1.setName("开始");
                    flowNodeList.add(flowNode1);
                } else {
                    flowNodeList1.add(flowNode1);
                }
            }

        }
        addNextNode(flowNodeList1, flowNodeList);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值