简单介绍jBPM与SSH的完整实例,如果是其它版本的框架也很容易做程序的迁移。
流程的定义
流程的定义建议使用jBPM提供的eclipse下的插件,图形化配置插件安装文件可以到jbpm-starters-kit-3.1.4\jbpm-designer\jbpm-gpd-feature\eclipse下找到,需注意版本。使用这种方式可以把定义的流程描述的三个文件压缩成zip包,统一的部署到数据库中,方便b/s系统中显示图片当前节点信息。
1插件安装
把jbpm-gpd-feature文件夹复制到C:\Program Files\MyEclipse-6.0M1\eclipse\plugins下,注意自己的ecplise路径。
在C:\Program Files\MyEclipse-6.0M1\eclipse\links文件夹下建立jbpm-gpd.link文件。内容如下:path=C:\\Program Files\\MyEclipse-6.0M1\\eclipse\\plugins\\jbpm-gpd-feature。
这样再重新启动eclipse就可以使用流程定义功能了。
2流程的定义
在Eclipse环境中选择file->new->other下的jboss jbpm->process definition流程定义。要在自己的项目文件中先指定文件要创建的文件夹。
这样会产生三个文件:gpd.xml、processdefinition.xml、processimage.jpg。
processdefinition.xml为描述流程定义文件,本例为:
- <?xml version="1.0" encoding="UTF-8"?>
- <process-definition name="文档测试流程">
- <start-state name="开始"> <transition name="提交张三审批" to="张三审批"></transition>
- </start-state>
- <task-node name="张三审批">
- <task name="审批1">
- <assignment actor-id="张三"/>
- </task>
- <transition name="提交李四审批" to="李四审批"></transition>
- </task-node>
- <task-node name="李四审批">
- <task name="审批2">
- <assignment actor-id="李四"/>
- </task>
- <transition name="提交王五审批" to="王五审批"></transition>
- </task-node>
- <task-node name="王五审批">
- <task name="审批3">
- <assignment actor-id="王五"/>
- </task>
- <transition name="结束流程" to="结束"></transition>
- </task-node>
- <end-state name="结束"></end-state>
- </process-definition>
processimage.jpg文件是定义流程产生的图片、gpd.xml文件是图形文件的座标说明。用于在b/s下显示流程流转的图片位置。
本例中的gpd.xml文件
- <?xml version="1.0" encoding="UTF-8"?>
- <process-diagram name="文档测试流程" width="801" height="477">
- <node name="开始" x="308" y="4" width="140" height="40">
- <transition name="提交张三审批">
- <label x="5" y="-10"/>
- </transition>
- </node>
- <node name="张三审批" x="310" y="90" width="140" height="40">
- <transition name="提交李四审批">
- <label x="5" y="-10"/>
- </transition>
- </node>
- <node name="李四审批" x="313" y="192" width="140" height="40">
- <transition name="提交王五审批">
- <label x="5" y="-10"/>
- </transition>
- </node>
- <node name="王五审批" x="308" y="307" width="140" height="40">
- <transition name="结束流程">
- <label x="5" y="-10"/>
- </transition>
- </node>
- <node name="结束" x="307" y="401" width="140" height="40"/>
- </process-diagram>