2008-12-8 李军
[1] jbpm-starters-kit-3.1.4
[2]MyEclipse5.1.x
[3]J2SE SDK 1.5.x
有在My Eclipse上进行J2EE开发的经验
总体上介绍jBPM开发,以图例为主,辅以文字。
下图是流程的开发过程
图1 流程定义项目开发过程
首先我们制作流程定义文件(和修改配置信息),然后我们写java代码,最后通过JUnit,图一绿色部份,进行测试,若没问题则OK, 否则,根据情况返回上一步。
所以先来介绍图一蓝色部份,流程定义文件的制作。下图是流程定义文件的视图方式。
图二 图程定义文件视图部份局部面
参考上图,我们可以把流程定义文件,看成是一个有向图的描述文件。主要有结点和单向箭头组成。jBPM特殊的是,它只能有一个起始结点和一个终止结点。
结点代表数据的处理过程。箭头代表执行流的方向。
结点可以激发进入结点事件、离开结点事件。方向箭头只激发一个action事件。我们可
心根据流程定义文件,编写java代码来对应各个结点和方向箭头的事件处理代码。
jBPM提供了多种类型的结点。主要分为两种,一种需要参于者的结点(Start-state、End-state、Task-node三种类型),一种是不需要参于者的结点(node、decision二种类型)。
需要参于者的结点:Start-state和End-state结点仅用于代表开始、终止结点,最常用的是task-node结点,它是需要参于者参于数据处理的结点。具体使用请参考,参考资料[1]
不但可以为进入离开结点编写事件处理代码,还可以为该节点编写分配参于者(Assignment)代码。
不需要参于者的结点:Node结点它的出度一般为一,较常用的是decision类型结点,它的出度大于1,用事先写好的代码,来判断执行流的方向。
我们再来看图一 红色部份框框,主要用来编写适用于流程定义的java代码。它的编写就像你在struts框架(或类似J2EE其它开发框架)上填充代码。必须遵循一定的规范。
你要编写的Java代码主要分成两部份,第一部份是action代码,用于事件处理。第二部份是Assignment代码,用于分配当前结点的参于者。
它们必须继承某个接口,实现某个接口的方法,在指定的方法体内填入数据处理代码。
最后就是测试,我们可以使用JUnit测试,也可以让jBPM结合struts2框架来做测试。只要不忘记把jBPM放入某个框架时,把jar文件也拷贝过去。
建议的jBPM学习顺序是:
Step1: 粗略看下参考资料[1]
Step2:做一下参考资料[2]、[3]中的示例
Step3: 按以下顺序阅读、修改我留下的四个示例:vacate示例、Fork join示例、User Model示例和countersign示例。
Vacate示例内容:
常用结点的使用,如何进行分支切换。
Fork join示例:
Fork和join结点如何使用的简单示例。还包括swimlane的简单使用。
User Model示例:
用户模型如何同jBPM结合
Countersign示例:
jBPM监控,会签、如何根据Actor ID获取任务列表,持久化操作。
[1] jBPM中文用户指南.chm
[2] 《jBPM入门学习Hello World》
http://www.zxbc.cn/html/javajc/0511064135264.html
[3]《jBPM开发入门指南(2)》
http://www.blogjava.net/chengang/archive/2008/10/30/65132.html