JBoss jBPM2.0工作流引擎完全解密

Posted on 2007-03-19 09:29 黎民 阅读(3596) 评论(0)  编辑  收藏

Jbpm 介绍

1,  项目介绍

项目是 2003 1 月由 Tom Baeyens sourceforge 创建。 Tom Baeyens JSR207 Process Definition for Java )的专家组成员

项目的 URL http://jbpm.org/

项目 2004 10 月加入 jboss 组织,项目更名为 JBoss jBPM

2,  jbpm 工作流系统介绍

jbpm 是轻量级,可扩展的工作流管理系统。 Jbpm 的业务流程的定义是用 jPdl Process definition language )来描述的。系统的原理是:由流程管理员装入流程,用户或者系统执行流程中的步骤, jbpm 引擎负责维护流程的状态,日志以及执行流程中定义的自动动作。用用例图描述如下 :
 1.bmp

3,  项目部署( Tomcat+SQLServer

a)         环境

JBoss jBPM 2.0, Tomcat 4.1.31, SQLServer 2000 ant 1.5.4

b)        步骤

1,  解压 jboss-jbpm-2.0.zip ,路径为 [jbpm_home]

2,  添加 jdbc driver [jbpm_home]/lib/hibernate

3,  [jbpm_home]/.classpath 文件中添加 jdbc driver

4,  [jbpm_home]/ web/src/jbpm.war/WEB-INF/classes/jbpm.properties 文件中 hibernate 使用 SQLServer jdbc 配置

5,  重新编译和打包 , [jbpm_home] 目录中执行 ant

6,  发布流程 , 修改 [jbpm_home]/build.xml 文件,在 38 行修改为     <ant antfile="web/build.xml" target="deploy.process.archives" inheritall="false" />

7,  [jbpm_home] 目录中执行 ant , 现在数据库已经建立,并且流程已经初始化,这里有个 bug 需要修改,把数据库中创建的表 JBPM_FILE bytes 的类型修改为 image

8,  部署 web 应用 , 拷贝 [jbpm_home]/web/target/jbpm.war [tomcat_home]/webapps

9,  启动 tomcat

10,              拷贝 commons-digester.jar, commons-fileupload.jar, jakarta-oro.jar, 文件到 [tomcat_home]/webapps/jbpm/WEB-INF/lib 目录

11,              打开浏览器 输入地址 http://localhost:8080/jbpm

12,  恭喜部署成功

4,  jPdl 介绍

 

jPdl 描述的是流程的过程,是通过状态表示,流程由

<!ELEMENT start-state ( description?, transition+ ) >

<!ELEMENT state ( description?, assignment?, action*, transition+ ) >

<!ELEMENT process-state ( description?, delegation, action*, transition+ ) >

<!ELEMENT decision ( description?, delegation, action*, transition+ ) >

<!ELEMENT fork ( description?, delegation?, action*, transition+ ) >

<!ELEMENT join ( description?, delegation?, action*, transition ) >

<!ELEMENT end-state EMPTY >

几个元素组成。流程的走向由 transition 元素指定。

Start-state 就是开始节点

State 就是流程的活动

Process-state 就是子流成

Decision 是判断节点

Fork 是分支节点

Join 是联合节点(注意 fork join 必须成对出现)

End-state 是结束节点

 

State 中定义参与者, state 是流程的主要环节,必须要人机参与处理,调用 ExecutionService . endOfState () 来结束活动,使 jBPM 引擎流转。 action 是用来扩展的, action 的定义如下

 

<!ELEMENT action ( delegation ) >

<!ATTLIST action event-type (process-start|process-end|state-enter|state-leave|state-after-assignment|milestone-enter|milestone-leave|decision-enter|decision-leave|process-state-enter|process-state-leave|fork-enter|fork-every-leave|join-every-enter|join-leave|transition) #IMPLIED>

 

<!ELEMENT delegation ( #PCDATA ) >

<!ATTLIST delegation class CDATA #REQUIRED>

 

state Action 支持 state-enter state-leave state-after-assignment 事件,可以对每个事件处理不同业务。实现 Action 必须实现接口 org.jbpm.delegation. ActionHandler.

 process-state, decision, fork, join Action 一样都可以支持事件机制

process,fork,decision,join jBPM 引擎自动完成的,完成执行的操作就是节点的 delegation 里面注册的类 . 如果没有就是用系统默认的。

 

5,  工作流引擎与应用的接口原理

 

应用调用 ExecutionService. StartProcessInstance() 启动流程,引擎产生任务。等待任务的所有者调用 ExecutionService. endOfState () 指令来完成任务。当 endOfState 指令被调用后,引擎就进行运算产生的新的任务,然后继续等待 endOfState 指令的调用直到流程结束。

引擎只对 State 产生任务,对其他的节点比如: process-state,fork,decision,join 都不产生任务。只对他们进行运算,执行每个节点的 Delegation Action.

 

6,  JBPM 工作流引擎的优点

a)         轻巧,使用 Hibernate 实现

b)        扩展性好,支持各种事件和节点的扩展,

c)        工作流原理和实现简单,代码容易维护

d)        支持变量

e)         支持子流成

f)         参与者与应用集成非常简单

g)        项目加入 jboss 组织,成长乐观

7,  JBPM 工作流引擎的弱点

a)         流程图形画定义工具太弱

b)        没有图形画的流程监控工具

c)        join/fork 必须成对定义

d)        复杂的流程定义需要自己实现接口


只有注册用户登录后才能发表评论。


网站导航:
 

posts - 57, comments - 3, trackbacks - 0, articles - 1

Copyright © 黎民