十五、从中间的TaskNode节点出发如何得到下一步

系统 1595 0

在上一节中说到:

Set<Transition> list = instance.getRootToken().getAvailableTransitions();

适合于从开始节点往下选择流向,但是如果当前节点不是开始节点时且流程中有fork节点时,该方法就不一定行,原因如下:


十五、从中间的TaskNode节点出发如何得到下一步可选路径列表

当流程走到fork节点时,rootToken是指向fork节点的,用之前的方法运行得到如下:

当前节点可以选择的流转方向有:
流向王五
流向李四

而此时流程真正已经流转到了李四审批和王五审批,显然他们的可选流转方向,不是上面两个。

 

所以改为如下使用方法:

//从中间的TaskNode节点出发如何得到下一步可选路径列表
    @SuppressWarnings("unchecked")
    @Test
    public void searchNextTransitionsFromTaskNodeTest(){
       
        JbpmContext context = null;
       
         try {
             
            //默认从classpath中查找名为hibernate.cfg.xml的配置文件
            JbpmConfiguration configuration = JbpmConfiguration.getInstance();
           
            //JbpmContext是对hibernate session的封装,提供了对JBPM相关对象的持久化功能
            context = configuration.createJbpmContext();
           
            //已知公文Id=7和用户ID
            String actorId = "李四";
            Long docId = 7l;
            List<TaskInstance> list = context.getTaskMgmtSession().findTaskInstances(actorId);
            for (TaskInstance taskInstance : list) {
                Long documentId = (Long) taskInstance.getContextInstance().getVariable("documentId");
               
                if (docId.equals(documentId)) {
                   
                    List<Transition> nextTrans = taskInstance.getAvailableTransitions();
                    System.out.println("当前节点可以选择的流转方向有:");
                    for (Transition transition : nextTrans) {
                        System.out.println(transition.getName());
                        //taskInstance.end(transition.getName());
                    }
                }
            }
           
           
           
        } catch (RuntimeException e) {
            e.printStackTrace();
        }finally{
            context.close();
        }
       
    }

十五、从中间的TaskNode节点出发如何得到下一步可选路径列表


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论