在我们做流程项目时,总会有一种情况是流程已经跑到后面了,但客户要求我要从某某任务开始重走,而且还是要求从什么地方都可以重走.如果你要是按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;
如何控制令牌的指向
:当前令牌保存的是任务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),但如果有属同一节点上的任务且未完成.就不作废了.
今天就说到这吧,下次讨论一下含分支的处理逻辑.
分享到:
相关推荐
标题中的“JBPM4.4实现一种无需指定上一节点(previous activity)的流程驳回(回退)”是指在使用JBPM(Java Business Process Management)4.4版本时,设计了一个特殊的流程控制机制,允许用户在执行流程过程中进行回...
JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM采购申请系统——08_JBPM流程节点.7z JBPM...
JBPM是业务流程管理(BPM)领域的一个灵活且强大的开源工作流引擎,它主要用于建模、执行和监控业务流程。文档《JBPM流程引擎资料》详细介绍了如何利用JBPM开发流程应用,涵盖了从框架构造到节点处理的方方面面。 ...
jbpm流程引擎内核的设计思想和结构是jbpm流程引擎的核心部分,掌握了jbpm流程引擎内核的设计思想和结构,才能真正理解jbpm流程引擎的工作原理,并且能够更好地应用jbpm流程引擎来解决实际问题。 流程引擎内核的设计...
JBPM(Java Business Process Management)是一款开源的工作流管理系统,它为业务流程的建模、部署、执行和监控提供了全面的解决方案。JBPM流程引擎设计是IT领域中的一个重要知识点,尤其对于那些希望理解和实施企业...
JBPM(Java Business Process Management)是由JBOSS公司开发的一款开源的工作流管理系统,它提供了全面的业务流程自动化和管理解决方案。作为一个强大的BPM平台,JBPM不仅支持工作流的建模、部署、执行,还提供了...
开发者可以通过它了解如何设计和实现一个实际的业务流程,同时掌握回退功能的实现方法。 总之,JBPM4.4的请假流程实例是一个全面展示流程管理能力的案例,它涵盖了从流程设计、部署到运行的全过程,并特别强调了回...
jbpm流程设计器是一款强大的工具,专门用于设计和构建jbpm工作流。jbpm(Java Business Process Management)是一个开源的企业级工作流管理系统,它允许开发者通过定义业务流程来自动化企业的业务操作。jbpm流程设计...
虽然JBPM本身未直接提供流程监控功能,但借助其提供的API和底层数据库结构,通过手工编码的方式完全可以实现这一需求。通过上述步骤,不仅可以监控已发布的流程定义,还能详细了解每个流程实例的状态和进度,从而...
3. **任务管理**:jbpm提供了一个任务服务,用于管理流程中的任务分配和完成。任务可以分配给特定的角色或个人,并支持任务的委托、优先级设置、评论和附件等功能。 4. **持久化存储**:jbpm使用Hibernate进行数据...
在JOffice2中,JBPM4是一个强大的工作流引擎,用于管理和执行业务流程。本文将深入探讨如何在JOffice2中实现JBPM4任务的回退功能,这在处理复杂流程时尤其重要,允许用户纠正错误或根据需要调整流程方向。 任务回退...
JBPM是一个开源的工作流管理系统,它允许开发者设计、执行和管理业务流程。本教程通过一系列代码示例,旨在帮助理解如何在Java应用程序中集成并运行JBPM流程。 在提供的文件列表中,我们可以看到以下几个关键文件:...
【MyEclipse6.0下Jbpm流程设计器】是一个专为MyEclipse6.0集成的业务流程管理(Business Process Management,BPM)工具,主要用于设计和管理Jbpm流程。Jbpm是一个开源的工作流和业务流程管理平台,它提供了一套完整...
KieService 是 JBPM6 中的一个重要的 API,用于获取流程管理策略和资源加载源选取。KieContainer 是一个资源库和会话接口封装,提供了 KieBase、KieSession 和 StatelessKieSession 等接口。 JBPM7 基础开发是基于...
JBPM,全称Java Business Process Management,是一个开源的工作流管理系统,用于构建和管理业务流程。它提供了丰富的API、工作流建模工具以及执行引擎,使得开发者能够轻松地实现复杂业务流程的自动化。在本资料中...
jbpm流程引擎框架源码,一套流行的流程引擎框架代码
jbpm4是一款强大的工作流管理系统,它提供了流程定义、流程实例管理、任务处理以及流程监控等一系列功能。在“jbpm4流程提交及执行完整代码”这个压缩包中,包含了实现jbpm4流程提交和执行所需的若干关键文件。下面...
JBPM4.4是JBoss Business Process Management (BPM)平台的一个版本,它是一个开源的企业级BPM解决方案,用于设计、执行和管理业务流程。在这个完整的审批流程工程中,我们看到它采用Maven进行项目构建和依赖管理,...
《深入浅出jBPM 5,6章》是一本专为理解jBPM这一流程管理系统而精心编写的书籍。jBPM是一个开源的工作流管理系统,它提供了业务流程建模、执行、监控和优化的全面解决方案。这本书的第5章和第6章尤其关键,它们涵盖...
JBPM(Java Business Process Management)是一款开源的工作流和业务流程管理系统,用于设计、执行和监控业务流程。它与Eclipse的集成使得开发者可以在Eclipse环境中进行流程定义和调试,大大提升了工作效率。JBPM...