`

JBPM3 JBPM4

    博客分类:
  • Jbpm
阅读更多

JBPM是一个优秀的开源工作流框架,核心引擎算法源自PetriNet理论,并深度了集成了Hibernate作为引擎的持久框架。

2006年底,我开始关注JBPM,并准备作实际应用,但是当时关于JBPM的中文资料比较少,于是打算翻译JBPM官方的user guide,翻译初稿在07年上半年完成,对应的版本是V3.1.2,打算在年底利用假期完善后发出来。不过JBPM后来发布了3.2版,其文档也做了相应更新,增加了一些章节,后来工作较忙,没有继续翻译,于是也就一直没有发布。

后续JBPM又发布了3.3版,不过文档并没有更新,仍然采用3.2.3的版本,虽然小版本变化不大,但是这样的做法还是不值得提倡。可以说,,缺少优秀、全面的文档,一直是包括JBPM在内的,不少开源框架的通病;而像SpringHibernate这样框架能够成为主流,跟丰富的配套文档、教程、以及市售的铺天盖地的书籍是分不开的。虽然JBPM应用广泛,但文档太少、市场上相关书籍缺失,是限制其继续向前发展的一个不小的障碍。在翻译JBPM文档的同时,我也对其源代码进行了分析,其中就发现有一些功能,代码里已经实现,但文档中却并未提及。

20097月,JBPM正式发布了的4.0,与3.X相比,整个项目几乎重写:新的流程定义语言、新的引擎实现、新颖的PVM概念、新的配置方式、全新的开发接口、全新的数据库结构。。。。。。放眼看去,几乎JBPM4JBPM3压根就没什么关系。另外,文档方面似乎也终于得到了更大的支持,新的官方文档分成了两部分:userguidedevguide,前者关注如何直接上手、接口使用以及流程开发,后者关注对整个架构的设计、更高级复杂的扩展开发。

8月发布的最新4.1版的devguide里,说到了开发JBPM4的两个目标:

1、 改进可支持性:通过持续集成,对所支持的产品环境、配置提供更好、更长期的支持保证。

2、 降低门槛,提升应用率:区分公共基础型应用和高级定制化应用两种应用模式,让前者上手更快,后者也能减少开发难度。

其实,如果从这两个目的出发,可以发现,JBPM4的变化的确是遵从了这两点,而且进一步深入的分析可以得出这样的结论:尽管整个项目几乎重写,但JBPM的核心机制没有变,即本质未变。下面是devguide中列出的JBPM3JBPM4的一些变更对照表。

通用名称的变化

JBPM3

JBPM4

备注

Node(节点)

Activity(活动)

根执行(root execution)和流程实例(proces instance)已经是同一个对象了;而在JBPM3里,在流程实例里有一个指向根令牌(root token)的指针。而且,跟JBPM3不同的是,即使逻辑上只有一条执行路径,在JBPM4中,该执行也可以创建一个子执行,并把自己停下来,而让子执行继续。

Token(令牌)

Execution(执行)

Action(动作)

EventListener(事件监听器)

JPDL XML的变化

JBPM3

JBPM4

process-defintion

process

event type=”...”

on event=”...”

action

event-listener

node

custom

process-state

sub-process

super-state

group(尚在考虑)

(事件机制的)默认变化

JBPM3

JBPM4

默认情况下,事件传播会触发外部流程元素的动作

默认情况下,事件传播只调用在该元素上订阅了的事件监听器,而不会调用外部元素的监听器

从这些变更表中,再结合新的JBPM4.1发布包的内容,可以发现,从JBPM3JBPM4,真正的变化仅仅是:

1、 流程定义语言的模型没有改变,只是部分元素的命名发生变化

2、 流程执行引擎的算法没有改变,只是对原有引擎进行了优化,去掉了冗余的root tokenJBPM4出来后,包括在JavaEye里,有不少的文档探讨了JBPM引擎的变化,有的文章分析说其核心引擎的调度机制完全不同了,这是不对的,因为还是Token机制,只是换了个名字(Execution),加上一定的优化(或称简化)。

3、 流程引擎的事件机制没有改变,只是改变了默认的事件触发范围

4、 整个数据库结构完全改变,甚至前缀变成了JBPM4,目的是希望能够跟JBPM3的表不发生冲突,甚至能够两个版本并行运行。其实数据库结构的巨大变化,是第2点变化、以及其他冗余消除的自然结果

5、 接口的变化,文档的调整和重写,只是为了更好的针对公共普通型应用和高级定制型应用,降低二者的开发难度。

这里提到的第2点和第4点,我有深刻的体会,因为在当时应用JBPM3的过程中,在分析JBPM3引擎的时候,也逐渐意识到其引擎存在的几个类似问题:

1、 root token其实是冗余,完全可以合并到流程实例里

2、 module instance 也是冗余的

3、 流程定义相关的表也是冗余的

4、 没有历史表

5、 。。。

分享到:
评论

相关推荐

    jbpm jbpm3 jbpm4 用户和开发指南+教程+最佳实践全套

    jbpm3和jbpm4是该系统的两个重要版本,提供了丰富的功能来支持流程定义、执行、监控和优化。 jbpm3作为早期版本,其用户文档详细介绍了如何配置、部署和使用jbpm系统。"JBPM3.1Help(中文).chm"可能包含了关于jbpm3...

    jbpm4jbpm5

    3. **jbpm5用户手册**: jBPM5_用户手册-中文版为开发者提供了jbpm5的详细操作指南,包括新特性和改进。jbpm5相较于jbpm4有显著提升,例如支持bpmn2.0标准,提供了更强大的图形化建模工具,以及更完善的API和事件...

    jbpm4源码jbpm4源码jbpm4源码

    jbpm4是一款基于Java的企业级工作流管理系统,它提供了流程定义、执行、监控以及管理的一整套解决方案。源码分析是深入理解一个软件系统架构、设计模式和实现细节的重要途径。下面将对jbpm4的核心知识点进行详细阐述...

    jbpm3中文文档.rar

    4. **任务管理**:jbpm3提供了一个任务服务,用于处理任务的创建、分配、完成和撤销。它支持用户界面与任务服务的交互,使得用户可以方便地查看和处理待办事项。 5. **规则集成**:jbpm3能够与规则引擎(如Drools)...

    jBPM3的学习心得

    **jBPM3学习心得** jBPM3是一款开源的工作流管理系统,主要用于处理业务流程的自动化和管理。它提供了一套完整的解决方案,包括流程建模、执行和监控,旨在帮助企业提高工作效率,规范业务流程,并实现流程的灵活...

    jbpm中文指南(包括3和4的)

    4. **持久化**:jbpm3支持JPA(Java Persistence API)进行持久化,可以将流程实例和相关数据存储到数据库中,方便后续查询和恢复。 5. **API与服务**:jbpm3提供了丰富的Java API,以及基于HTTP的服务接口,允许...

    jBPM3 2 3数据库表说明 pdf

    ### jBPM3.2.3数据库表结构详解 #### 一、概述 jBPM (Java Business Process Model) 是一款开源的工作流引擎,用于管理业务流程。它提供了丰富的API来构建复杂的工作流程,并能够与Java应用程序无缝集成。本文将...

    jBPM3.2.rar_JBPM3.2_jbpm_jbpm 3.2_jbpm3_jbpm3.2教程

    3. **jbPM库**:下载jbPM 3.2的库文件,包括jar包和其他依赖,这些可以通过Maven的pom.xml文件或Ant的build.xml文件来管理。 4. **数据库连接**:jbPM需要一个数据库来存储流程实例、任务等信息,你可以选择MySQL、...

    jbpm3基本资料和代码总结

    **jbpm3基本资料与代码总结** jbpm(Java Business Process Management)是一个开源的工作流管理系统,专注于业务流程的建模、执行和管理。jbpm3是该系统的第三个主要版本,它提供了一整套工具和API,帮助开发者...

    JBPM3学习笔记

    4. **持久化(Persistence)**:JBPM3使用Hibernate进行数据持久化,确保流程实例在服务器重启后可以恢复。 **三、JBPM3的主要功能** 1. **流程建模**:JBPM3提供了一个基于Eclipse的图形化建模工具,用户可以通过...

    jbpm4案例源码

    这个"jbpm4案例源码"包含了jbpm4系统的核心组件和示例代码,帮助开发者深入理解jbpm4的工作原理和实践应用。《jBPM4工作流应用开发指南.pdf》这本书则进一步阐述了如何利用jbpm4来构建工作流应用。 jbpm4的核心功能...

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    传智播客汤阳光JBPM3源码

    4. **持久化**:JBPM3使用Hibernate作为默认的持久化框架,确保流程实例、任务实例等数据在数据库中的存储和检索,以实现流程的持久性。 5. **任务管理**:JBPM3提供了任务服务,允许用户查询、接收和完成任务。这...

    jBPM4工作流应用开发指南.pdf

    jBPM4作为该系列的一个版本,提供了一套完整的流程管理和执行框架,允许开发者构建灵活的工作流应用,以实现业务流程自动化。本指南由胡奇编写,旨在为开发者提供一个全面的参考,帮助他们快速学习和掌握使用jBPM4...

    jbpm3使用帮助,一本比较使用帮助

    4. **流程部署**:理解流程部署的过程,包括如何将设计好的流程模型转换为可执行的流程定义,并将其部署到jbpm3服务器。 5. **流程执行与控制**:学习启动流程实例、干预流程执行(如挂起、恢复、终止流程)、以及...

    jbpm3.rar_JBP_jbpm_jbpm3

    4. **事件处理**:jbpm3支持流程中的事件处理,如监听器和信号,允许在流程执行过程中响应特定事件。 5. **规则集成**:与Drools规则引擎紧密集成,能够在流程执行中应用业务规则。 6. **监控和报表**:提供工具来...

    jBPM4完整例子

    3. **流程建模**:使用jBPM4的流程建模工具,如eclipse的jbpm plugin,创建请假流程模型,定义各个活动(如申请、审批等)及它们之间的流转规则。 4. **部署流程**:将建好的流程模型部署到jBPM4的工作流引擎中,使...

    jbpm4web-JBPM4的一个web版本的Demo

    【jbpm4web - JBPM4的Web版Demo详解】 JBPM4是一个开源的工作流管理系统,它提供了强大的业务流程管理(BPM)功能,包括流程设计、执行、监控和优化。"jbpm4web"是基于JBPM4开发的一个Web版本的示例项目,旨在帮助...

    jbpm3表结构

    jbpm3表结构及关系图

Global site tag (gtag.js) - Google Analytics