`

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

 
阅读更多

在上一节中说到:

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

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


当流程走到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();
        }
       
    }

  • 大小: 55.9 KB
分享到:
评论

相关推荐

    vue节点教程

    在Vue中,"节点"通常指的是虚拟DOM节点,这是Vue实现高效更新视图的关键技术。虚拟DOM是一种抽象的数据结构,它代表了实际DOM树的一部分,允许Vue在内存中快速计算DOM变化,减少对浏览器实际DOM操作的次数,从而提升...

    成信工作流引擎体系架构与介绍

    并行线模型允许多条连接线同时从一个节点出发,分别连接到不同的节点上。这种方式提高了流程的并发性。 **1.5.3 集合线模型** 集合线模型则是指多条连接线汇聚到一个节点上,用于合并多个任务的结果。 #### 六、...

    jbpm安装及使用方法

    要注意它们的区别,event触发的action无法控制流程,也就是说它无法决定流程经过这个节点后下一步将到哪一个leaving transition;而挂在node 节点的action就不同,它可以控制流程。不管是哪一种action都要实现...

    JBPM数据库分析文档.pdf

    - 这个表包含了流程中的各个节点信息,如ID是节点的唯一标识,CLASS指定了节点的类型,例如ProcessState、Decision、TaskNode等。SUBPROCESSDEFINITION字段用于表示子流程模板的ID,ISASYNC表示节点是否支持异步...

    vue-task-node:vue-task-node 是一个基于Vue的任务节点图绘制插件(vue-task-node is a Vue based task node mapping plug-in)

    vue-task-node 是一个基于Vue的任务节点图绘制插件(vue-task-node is a Vue based task node mapping plug-in) 在线Demo 如有问题欢迎邮箱:envelope:: 一、安装 npm install vue-task-node -S 二、引入 import ...

    jbpm几个重要数据表的详细说明

    - 迁移元素位于节点内部时,表示从该节点出发的迁移路径。 - **jbpm_delegation**(流程委托表) - **中文名称**:流程委托表 - **数据表功能作用说明**: - 存储委托(`Delegation`)相关信息,用于实例化用户...

    JBPM数据库分析文档[定义].pdf

    3. **JBPM_TRANSITION**:这个表记录了流程中的迁移,即从一个节点到另一个节点的路径。 - **ID_**: 迁移的唯一标识符。 - **NAME_**: 迁移的名称。 - **PROCESSDEFINITION_**: 迁移所在的流程模版ID。 - **FROM...

    jbpm表结构及字段说明

    - **FK_NODE_PROCDEF**: 每个流程模板下可以包含多个节点(NODE)。 - **FK_MODDEF_PROCDEF**: 表示流程模板可能存在于多个模块中。 - **FK_DELEGATION_PRCD**: 描述流程模板中可能存在的流程代理。 2. **JBPM_...

    JBPM新手学习笔记(强烈推荐)

    在示例中,报销审批流程的XML文件定义了开始节点(start)、结束节点(end)以及两个任务节点(tasknode),分别代表部门主管和总经理的审批环节。 2. **JBPM Designer**:JBPM提供了一个集成开发环境,即JBPM ...

    jbpm数据库文档及表之间的关联

    - `FK_TASK_TASKNODE` 和 `FK_TASK_STARTST`:一个节点可以有多个任务,开始节点可对应多个任务。 - `FK_LOG_SOURCENODE` 和 `FK_LOG_DESTNODE`:在日志记录中,节点作为转换的起点或终点。 - `FK_NODE_ACTIONACTION...

    JBPM实践之:并发子流程的实现.doc

    由于我们设置了TaskNode的信号为"last-wait",因此只有当所有子流程都完成,主流程的任务实例都被结束,TaskNode才会发送信号,使得主流程能够继续流转至下一个状态,即结束状态。 流程定义XML文件中的配置显示了...

    JBPM数据库表说明.doc

    - CLASS_:定义节点的类型,如StartState、EndState、TaskNode等。 - NAME_:节点的名称,便于识别。 - SUBPROCESSDEFINITION_:如果节点类型为ProcessState,表示子流程模版的ID。 - ISASYNC_:指示节点是否...

    JPDL3.1规范手册[良少]

    TaskNode 任务节点** - **定义**: 使用该阶段处理的任务的名字作为节点名称,而非被管理对象的状态。 - **应用场景**: 当节点代表具体的业务操作或任务时采用此命名方式,如“填写报告”、“审核报告”等。 **...

    JBPM数据库表说明

    `ID_`是节点的唯一标识,`CLASS_`指定了节点的类型,如StartState、EndState、TaskNode等。`NAME_`是节点的名称,便于理解流程结构。`SUBPROCESSD`用于表示子流程状态。`ACTION_`字段关联了`JBPM_ACTION`表中的动作...

    jBPM3 2 3数据库表说明 pdf

    - `K`: 任务节点,由`org.jbpm.graph.node.TaskNode`实现。 - `N`: 普通节点,由`org.jbpm.graph.def.Node`实现。 - `R`: 起始状态节点,由`org.jbpm.graph.node.StartState`实现。 - `S`: 状态节点,由`org....

    JBPM数据库分析文档[收集].pdf

    - **CLASS_**: 描述节点的类型,如StartState、EndState、TaskNode等,这些类定义了节点的行为。 - **NAME_**: 节点的名称,便于理解和追踪流程。 - **SUBPROCESSDEFINITION_**: 如果节点是子流程,此字段存储子...

    jbpm数据库表详解

    - CLASS_:节点的类型,如StartState、TaskNode、Decision等。 - NAME_:节点的名称。 - SUBPROCESSDEFINITION_:子流程模版的ID(仅当节点类型为ProcessState时使用)。 - ISASYNC_:标志节点是否支持异步执行...

    JBPM数据库表说明[参照].pdf

    3. **JBPM_TRANSITION**: 这个表描述了流程中的迁移,即从一个节点到另一个节点的转换。`FROM`和`TO`字段分别表示迁移的起点和终点,`FROMINDEX`可能用于记录在特定类型的节点(如SuperState)中的顺序。 4. **JBPM...

Global site tag (gtag.js) - Google Analytics