Activiti6---获取节点信息

1. 说明

在应用中可能需要获取当前节点的上一个节点的信息,或者下一个节点的信息。

2. 获取上一节点的方式

如下能够获取到上一个节点的key,可以用来进行回退等功能实现。

 /**
     * 根据流程实例id获取上一个节点的信息
     */
    @Test
    public void queryUpOneNode(){
    
    
        Task task = taskService.createTaskQuery()
                .taskAssignee("lisi")
                .singleResult();
        List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
                .processInstanceId(task.getProcessInstanceId())
                .orderByHistoricTaskInstanceEndTime()
                .desc()
                .list();

        HistoricTaskInstance taskInstance = null;

        if(!list.isEmpty()){
    
    
            if(list.get(0).getEndTime()!=null){
    
    
                taskInstance=list.get(0);
            }
        }

        System.out.println(taskInstance.getTaskDefinitionKey());
    }

效果图:
数据库:
在这里插入图片描述
查询到的:
在这里插入图片描述

3. 获取下一节点的方式

当前节点任务A,通过当前任务的流程定义id获取下一个节点任务B的信息。

	  /**
     * 根据流程定义id获取当前节点的下一节点
     */
    @Test
    public void getNexNode(){
    
    
        Task task = taskService.createTaskQuery()
                .taskAssignee("zhangsan")
                .singleResult();

        //根据流程定义id获取bpmnModel对象
        BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
        //获取当前节点信息
        FlowNode flowNode =
                (FlowNode) bpmnModel.getFlowElement(task.getTaskDefinitionKey());
        //获取当前节点输出连线
        List<SequenceFlow> outgoingFlows = flowNode.getOutgoingFlows();
        //遍历输出连线
        for (SequenceFlow outgoingFlow : outgoingFlows) {
    
    
            //获取输出节点元素
            FlowElement targetFlowElement = outgoingFlow.getTargetFlowElement();
            //排除非用户任务接点
            if(targetFlowElement instanceof UserTask){
    
    
                //获取输出节点id==名称
                System.out.println(outgoingFlow.getTargetFlowElement().getId()+"==="
                +outgoingFlow.getTargetFlowElement().getName());
            }
        }
    }

效果图:
数据库:
在这里插入图片描述

查询到的:
在这里插入图片描述
可以看出当前节点任务A,可以查询到任务B的信息。

猜你喜欢

转载自blog.csdn.net/Lv_vI/article/details/107978329
今日推荐