现在的位置: 首页 > 综合 > 正文

jBPM研究情况报告

2012年12月02日 ⁄ 综合 ⁄ 共 2130字 ⁄ 字号 评论关闭
 

JBoss jBPM 是一个灵活的,易扩展的工作流管理系统。JBoss jBPM有一套直观的流程建模语言,这套语言能用任务(task),异步通信的等待状态(wait state ),定时器(timer),自动化的动作(automated action)等来图形化的表示业务流程。把这些操作集成在一起,JBoss jBPM拥有强大的,易扩展的控制流程机制。
JBoss jBPM对外依赖程度很小,你完全可以像用java的类库一样用它。并且它也可以被部署在高性能的J2EE集群应用服务器上。
JBoss jBPM能通过配置运行在任何数据库上,并且能被部署在任何的应用服务器上。
流程建模语言jPDL
jBPM业务程序定义语言jBPM Process Definition Language (JPDL),是jBPM使用的一套面向图表的流程建模语言。是一种特定领域语言(DSL)。
它是对WFMC(工作流管理联盟)提出的XML Processing Description Language (XPDL)语言的扩展,增加了一些jBPM自己的元素。
它的特点是,有几种状态节点。
1,State等待状态。进入这种状态,整个业务程序实例的执行就会中断。直到系统外参与者发起继续执行的命令,业务程序实例的执行才能够继续下去。
2,Node节点状态。这种状态和State相反。当业务程序实例执行到这个节点,不会停止执行。而是会继续往下执行。如果存在该节点存在多个离开转向。那么,就会执行其中的第一个离开转向。
在Node状态中,不需要外部参与者的参与,业务流程的这个部分是自动的、即时完成的。
3,Decision决定状态。Decision和Node一样,都是即时状态,而不是等待状态。Decision的多个离开转向transition中可以设置条件。业务程序实例执行到Decision状态时,会依次计算所有的离开转向的条件,遇到条件为真的转向时,就会立即执行这个转向。
如果没有为转向设置条件,那么这个转向的条件值就是true。
Decision是功能最强大的即时状态。
4,TaskNode任务节点。TaskNode和State一样,都是等待状态。TaskNode是功能最强大的等待状态。jBPM为TaskNode提供了强大的支持机制。所以,强烈建议用户使用TaskNode来处理等待状态!
TaskNode节点内,可以有多个Task任务。任务是由外部参与者负责处理的等待状态。任务需要由外部参与者结束。
默认条件下,一个任务节点的所有任务实例都结束之后,业务程序实例的执行才能继续下去。但是,你也可以设置成从不继续,或者立刻继续执行。或者第一个任务完成后就执行,等等。
也可以由外部参与者在结束任务实例时指定执行哪一个转向Transition,继续流程。
另外,注意:除了TaskNode节点能够包含Task外,Start-State也可以包含任务。但是它只能包含一个任务。这个任务的用途是,让业务程序实例的发起者创建管理的资源等任务。
在jBPM提供的Web管理应用程序中,使用了一种Web开发技术,这种技术我没有见过。它提供了一个管理业务程序实例,特别是管理任务的强大功能。
只要一个业务程序定义的Start-state中包含Task定义,那么就可以在Web程序中创建这个业务程序定义的一个实例。
这个Web程序还能够根据业务程序定义,自动创建对应任务实例变量的表单和对应离开转向的按钮。
这个Web程序尽管非常强大,但是,它使用的是一种我所不熟悉的非主流的技术。所以,在自己的应用程序中,最好自己写前台表示层,而不是使用它的技术。
 
jBPM的构造技术
jBPM是一个业务程序管理引擎,是一个工作流引擎。它实现了对jPDL的支持。它还实现了对BPEL的支持。关于jBPM对BPEL的支持,我还没有研究。
作为一个工作流引擎,就必须要处理“等待状态”。jBPM整合了Hibernate技术处理数据库,它创建了一系列的数据库表,持久化工作流引擎所需的“等待状态”。因此,jBPM支持所有Hibernate支持的数据库。
jBPM还能够把Java对象持久化到数据库中。它能够把Hibernate支持的Java类的对象保存到数据库中,还能够把实现了Serializable接口的类的对象持久化到数据库中!具体的实现机制不详!
另外,jBPM还使用了JBoss Seam这个IOC容器。JBoss Seam非常类似于Spring,能够管理Java类的对象。对于JBoss Seam,我没有研究。
 
目前的工作和未来的研究
目前,我对jPDL有了很多的了解,但是对于复杂的任务管理和身份验证管理,研究还不够。
1.需要研究出怎样用Struts开发出一套获取用户任务列表的页面。
2.任务的管理需要身份管理。jBPM提供了一套身份管理的机制。但是,显然我们不能把应用程序的身份管理交给jBPM的身份管理模块来维护。我们需要把jBPM的身份管理模块去除,把jBPM的任务和自己应用程序的身份数据库整合起来。
3.jPDL适合于Java。BPEL适合于WebServices。需要研究jBPM对BPEL的支持。
4.JBoss Seam容器在jBPM中有广泛的应用,也必须加以了解。

 

抱歉!评论已关闭.