`
hudixin1987
  • 浏览: 16114 次
  • 性别: Icon_minigender_1
  • 来自: 天津
文章分类
社区版块
存档分类
最新评论

jbpm流程回退详解

 
阅读更多

在我们做流程项目时,总会有一种情况是流程已经跑到后面了,但客户要求我要从某某任务开始重走,而且还是要求从什么地方都可以重走.如果你要是按jbpm的思路做,就要到处划线,最后流程图是乱七八糟,(当然你客户不看流程图就没问题,呵呵).
很多了解jbpm工作原理的人都知道要想让流程回到以前的一个任务重新开始,需要控制任务开启与关闭,还有就是要控制令牌的指向的节点.其实在实际应用中要跟复杂一些比如,要将流程回退到一个分支中,或从一个分支回到到分支开始之前任务上.从子流程回退到主流程中,从子流程回到前面的一个子流程中......(&%#$*? 更复杂的我就不说,用的比较少了).对于以上情况我们会逐个讨论.

今天可以先讨论一下最简单的情况,先做个假设有流程 a-->b-->c-->d-->e.当前流程已经跑到d,如果要回到b重新跑怎么做那.步骤就是我们上面提到:

一,关闭任务b后创建的并且没有关闭的任务(与任务b同在一个节点上没有完成的任务除外)

二,开启任务b.

三,将令牌指向任务b所在的节点.

如何开关一个任务 :任务实例TaskInstance有三个重要的属性end(任务结束时间),isOpen(任务是否开启),isSignalling(任务是否可流转).控制这3个属性就可以控制任务实例.如果要开启一个任务,就让end=null.isOpen=true,isSignalling=true.如果要关闭一个任务就是end=new Date().isOpen=false,isSignalling=false.另外还有一个属性isCancelled,如果你关闭的任务作废了,不需要作为历史任务保留,就让isCancelled=true;

这些TaskInstance 类是不提供方法来设置的

我们就需要手动的通过sql语句来更新这个任务

update JBPM_TASKINSTANCE set ISOPEN_=1,ISSIGNALLING_=1,END_= null where ......

如何控制令牌的指向 :当前令牌保存的是任务d所在节点的节点Id,因为你要从任务b开始重新走流程,所以应该将任务b所在节点的id装入令牌中:

Node node = taskInstance.getTask().getTaskNode();//取任务b所在节点
if (node == null) {
node = taskInstance.getTask().getStartState();//有可能是要退到头的
}
taskInstance.getToken().setNode(node);

这样就ok了,不过这样只能处理简单的回退,当涉及到分支,子流程事时不成的(这个下次再说),开启和关闭任务的3个属性有的是没有set方法的,需要写sql,hql.

最后说一下我这里回退的业务逻辑,回退操作每次只能开启一个历史任务,该任务之后创建的任务全部作废(end=null.isOpen=true,isSignalling=true,isCancelled=true),但如果有属同一节点上的任务且未完成.就不作废了.

同上jbpm 也是不提供直接调用的方法所以 还是要通过sql语句来完成

update JBPM_TOKEN set NODE_ =? where ID_ = ?

分享到:
评论

相关推荐

    JBPM采购申请系统——08_JBPM流程节点.7z

    JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM...

    揭秘jbpm流程引擎内核设计思想及构架.doc

    jbpm流程引擎内核的设计思想和结构是jbpm流程引擎的核心部分,掌握了jbpm流程引擎内核的设计思想和结构,才能真正理解jbpm流程引擎的工作原理,并且能够更好地应用jbpm流程引擎来解决实际问题。 流程引擎内核的设计...

    JBPM流程引擎资料

    JBPM是业务流程管理(BPM)领域的一个灵活且强大的开源工作流引擎,它主要用于建模、执行和监控业务流程。文档《JBPM流程引擎资料》详细介绍了如何利用JBPM开发流程应用,涵盖了从框架构造到节点处理的方方面面。 ...

    JBPM流程引擎设计 工作流资料

    JBPM(Java Business Process Management)是一款开源的工作流管理系统,它为业务流程的建模、部署、执行和监控提供了全面的解决方案。JBPM流程引擎设计是IT领域中的一个重要知识点,尤其对于那些希望理解和实施企业...

    揭秘jbpm流程引擎内核.pdf

    **jbpm流程引擎内核详解** jbpm,全称Java Business Process Management,是一款开源的工作流管理系统,用于构建灵活且可扩展的业务流程应用。它基于模型驱动的设计理念,提供了强大的流程建模、执行和监控能力,是...

    JBPM流程监控的实现过程

    ### JBPM流程监控的实现过程详解 JBPM作为一款由JBOSS公司推出的开源工作流管理工具,以其强大的功能和灵活性赢得了众多开发者的青睐。尽管如此,JBPM原生并未直接提供流程监控功能的API,这无疑给那些希望在企业...

    JBPM4.4实现一种无需指定上一节点(previous activity)的流程驳回(回退)

    标题中的“JBPM4.4实现一种无需指定上一节点(previous activity)的流程驳回(回退)”是指在使用JBPM(Java Business Process Management)4.4版本时,设计了一个特殊的流程控制机制,允许用户在执行流程过程中进行回...

    jbpm流程设计器

    jbpm流程设计器是一款强大的工具,专门用于设计和构建jbpm工作流。jbpm(Java Business Process Management)是一个开源的企业级工作流管理系统,它允许开发者通过定义业务流程来自动化企业的业务操作。jbpm流程设计...

    jBPM工作流详解

    **jBPM工作流详解** jBPM,全称Java Business Process Management,是Red Hat公司开发的一款开源的工作流管理系统,它提供了对业务流程的建模、执行和监控能力。jBPM不仅支持传统的工作流标准,如BPMN 2.0,还集成...

    jbpm数据库表字段详解

    jbpm数据库表字段详解 jbpm是基于工作流管理系统的开源软件,它提供了强大的工作流引擎,可以自动执行业务流程,并提供了灵活的配置和扩展机制。jbpm的数据库表字段是jbpm系统的核心组件之一,它存储了工作流的所有...

    JBPM 流程 监控 的实现

    JBPM(Java Business Process Management)是由JBOSS公司开发的一款开源的工作流管理系统,它提供了全面的业务流程自动化和管理解决方案。作为一个强大的BPM平台,JBPM不仅支持工作流的建模、部署、执行,还提供了...

    MyEclipse6.0下Jbpm流程设计器

    【MyEclipse6.0下Jbpm流程设计器】是一个专为MyEclipse6.0集成的业务流程管理(Business Process Management,BPM)工具,主要用于设计和管理Jbpm流程。Jbpm是一个开源的工作流和业务流程管理平台,它提供了一套完整...

    揭秘jbpm流程引擎内核设计思想及构架.docx

    "揭秘jbpm流程引擎内核设计思想及构架" jbpm流程引擎内核是指流程引擎的最微小结构,仅包含最基本的对象和服务,以及用于解决流程运行问题的调度机制和执行机制。jbpm流程引擎内核的设计思想是基于微内核的流程引擎...

    jbpm流程引擎框架源码

    jbpm流程引擎框架源码,一套流行的流程引擎框架代码

    jbpm4.4 请假的例子,包含Jar包,实现回退功能可以运行

    【JBPM4.4 请假流程实例详解】 JBPM(JBoss Business Process Management)是一款开源的工作流管理系统,它提供了一套完整的业务流程管理解决方案,包括流程设计、部署、执行、监控以及优化等功能。在JBPM4.4版本中...

    JBPM流程框架源码

    **JBPM流程框架源码详解** JBPM,全称Java Business Process Management,是一个开源的工作流管理系统,用于构建和管理业务流程。它提供了丰富的API、工作流建模工具以及执行引擎,使得开发者能够轻松地实现复杂...

    JBPM案例详解(全)

    【JBPM案例详解(全)】 JBPM,全称Java Business Process Management,是一个开源的工作流管理系统,用于管理和执行业务流程。它提供了强大的流程定义、执行、监控和优化功能,广泛应用于企业的业务流程自动化中。本...

    jbpm数据库表结构详解

    1. **JBPM4_DEPLOYMENT**:这是流程定义表,记录了部署到jbpm中的所有流程定义。DBID字段作为主键标识每个流程模版,NAME_CLOB字段存储流程模版的名称,TIMESTAMP字段记录部署的时间戳,STATE字段表示流程模版的可用...

    JBPM流程代码演示

    【JBPM流程代码演示】是关于使用JBPM(Java Business Process Management)框架进行流程管理的实践教程。JBPM是一个开源的工作流管理系统,它允许开发者设计、执行和管理业务流程。本教程通过一系列代码示例,旨在...

    jbpm流程部署文件

    【jbpm流程部署文件】详解 jbpm(Java Business Process Management)是一种开源的工作流管理系统,用于实现业务流程自动化。在jbpm中,流程部署是将流程定义文件转换为可执行的流程实例的关键步骤。以下是对jbpm...

Global site tag (gtag.js) - Google Analytics