JBoss 系列七十四:使用 BPMN2 Modeler 创建 jBPM 6 流程

概述

流程设计在BPM中占很重要的地位,本文演示如何使用 BPMN2 Modeler 创建一个BPMN流程,并运行该流程,如前面 jBPM 6 开发 eclipse 插件安装中介绍的,插件安装完成BPMN2 Modeler已经安装,更多关于BPMN2 Modeler参照:

  • http://www.eclipse.org/bpmn2-modeler/
  • https://github.com/eclipse/bpmn2-modeler

创建一个流程

1。打开eclipse,选择要保存流程的目录,New -> Other -> jBPM -> BPMN2 Process -> Next,输入流程的名字,点击 Finish,创建初始化流程,只包含一个开始节点事件,如下图所示:

JBoss 系列七十四:使用 BPMN2 Modeler 创建 jBPM 6 流程_第1张图片

2. 将鼠标移动到开始节点之上,或出现相关的提示,点击这些快速提示图标,可以快速创建流程,如下为快速提示图标样式:

JBoss 系列七十四:使用 BPMN2 Modeler 创建 jBPM 6 流程_第2张图片

从上到下,我们依次介绍这些快捷图标:

  • 删除当前节点
  • 显示当前节点属性
  • 添加新节点,可快速添加的包括任务(User Task, Rules Task, Send Task, etc),子流程等
  • 添加Gateway,Gateway包括聚合的,分散的,平行的,时间驱动的等
  • 添加一个事件,最常用的快捷方式,它可添加流程中间事件,结束事件等
  • 添加一个连接,连接到流程下一个节点
3. 使用添加节点方式添加一个Script Task,命名为Start, 如下:


双击 Start节点,或在Properties部分可编辑节点,我们首先Description部分修改节点名为Start,选择Script Task可以进行编辑Script ,可选择的Script 包括MVEL和java,我们次数选择java,编辑Script如下:

JBoss 系列七十四:使用 BPMN2 Modeler 创建 jBPM 6 流程_第3张图片

如上所示,我们定义的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,如下:

JBoss 系列七十四:使用 BPMN2 Modeler 创建 jBPM 6 流程_第4张图片

如上,当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



你可能感兴趣的:(jboss,jbpm,jbpm,BPM,6,modeler,BPMN2)