jBPM研究情况报告
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的构造技术
jBPM是一个业务程序管理引擎,是一个工作流引擎。它实现了对jPDL的支持。它还实现了对BPEL的支持。
作为一个工作流引擎,就必须要处理"等待状态"。jBPM整合了Hibernate技术处理数据库,它创建了一系列的数据库表,持久化工作流引擎所需的"等待状态"。因此,jBPM支持所有Hibernate支持的数据库。
jBPM还能够把Java对象持久化到数据库中。它能够把Hibernate支持的Java类的对象保存到数据库中,还能够把实现了Serializable接口的类的对象持久化到数据库中!