流程设计在BPM中占很重要的地位,本文演示如何使用 BPMN2 Modeler 创建一个BPMN流程,并运行该流程,如前面 jBPM 6 开发 eclipse 插件安装中介绍的,插件安装完成BPMN2 Modeler已经安装,更多关于BPMN2 Modeler参照:
1。打开eclipse,选择要保存流程的目录,New -> Other -> jBPM -> BPMN2 Process -> Next,输入流程的名字,点击 Finish,创建初始化流程,只包含一个开始节点事件,如下图所示:
2. 将鼠标移动到开始节点之上,或出现相关的提示,点击这些快速提示图标,可以快速创建流程,如下为快速提示图标样式:
从上到下,我们依次介绍这些快捷图标:
双击 Start节点,或在Properties部分可编辑节点,我们首先Description部分修改节点名为Start,选择Script Task可以进行编辑Script ,可选择的Script 包括MVEL和java,我们次数选择java,编辑Script如下:
如上所示,我们定义的Script 为java如下:
long id = kcontext.getProcessInstance().getId(); String name = (String)kcontext.getVariable("recipient"); String log = "process " + id + " started by " + name; System.out.println(log);即当流程运行到此节点执行如上的java代码端,如上代码端从流程中获取变量recipient及流程ID,输出日子。
4. 添加新的User Task节点,User Task是指流程必须有认为参与才能继续进行,同样双击节点,或在Properties部分可编辑节点,我们首先Description部分修改节点名为StartApproval by PM,如下日图所示:
Properties -> User Task -> Actors,添加一个Actor john,即john为执行该User Task的用户,如下图所示:
同样 Properties -> User Task -> On Exit Script 处添加退出执行的Script,如下:
如上,当User Task(Approval by PM)节点被john执行后节点退出时执行如上Script中的java代码,该代码端是通过ProcessContext获取到当前流程的ID,输出日志“john approved process ...”。
5. 完全类似于上面步骤4,添加“Approval by HR” User Task节点,设计actor名字为mary,及流程需要mary来执行,流行执行结束时同样执行Java 代码,输出相关的日志,相关的Script如下:
long id = kcontext.getProcessInstance().getId(); String log = "mary approved process " + id; System.out.println(log);流程设计到此大致构造如下:
6. 完全类似于第3步添加End节点,该节点为Script节点,即此当节点执行时,相关Script java 代码如下:
long id = kcontext.getProcessInstance().getId(); String log = "process " + id + " finished"; System.out.println(log);到目前流程如下:
7. 与开始节点相对应,我们添加一个结束节点,流程执行到该节点表示流程执行结束,最终流程如下图所示:
使用代码(https://github.com/kylinsoong/jbpm-6-examples/blob/master/rewards/src/main/java/org/jbpm/demo/rewards/ProcessMain.java)可以运行如上设计的流程,流程执行会有如下输出:
process 31 started by kylin john approved process 31 mary approved process 31 process 31 finished