flowable 获取当前以及下一任务节点

本文介绍了一种使用工作流引擎查询任务节点的方法,包括获取当前审批节点和下一个审批节点的详细流程。通过流程实例ID和任务ID,可以精确地定位到流程模型中的具体节点,并输出节点的ID和名称。
/**
 * 获取任务节点
 *
 * @param node   查询节点选择
 * @param taskId 任务id
 */
public void nextFlowNode(String node, String taskId) {
    Task task = processEngine().getTaskService().createTaskQuery().taskId(taskId).singleResult();
    ExecutionEntity ee = (ExecutionEntity) processEngine().getRuntimeService().createExecutionQuery()
            .executionId(task.getExecutionId()).singleResult();
    // 当前审批节点
    String crruentActivityId = ee.getActivityId();
    BpmnModel bpmnModel = processEngine().getRepositoryService().getBpmnModel(task.getProcessDefinitionId());
    FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(crruentActivityId);
    // 输出连线
    List<SequenceFlow> outFlows = flowNode.getOutgoingFlows();
    for (SequenceFlow sequenceFlow : outFlows) {
        //当前审批节点
        if ("now".equals(node)) {
            FlowElement sourceFlowElement = sequenceFlow.getSourceFlowElement();
            System.out.println("当前节点: id=" + sourceFlowElement.getId() + ",name=" + sourceFlowElement.getName());
        } else if ("next".equals(node)) {
            // 下一个审批节点
            FlowElement targetFlow = sequenceFlow.getTargetFlowElement();
            if (targetFlow instanceof UserTask) {
                System.out.println("下一节点: id=" + targetFlow.getId() + ",name=" + targetFlow.getName());
            }
            // 如果下个审批节点为结束节点
            if (targetFlow instanceof EndEvent) {
                System.out.println("下一节点为结束节点:id=" + targetFlow.getId() + ",name=" + targetFlow.getName());
            }
        }


    }
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值