创建流程
我们已经学习了jBPM的流程. 现在, 让我们开始创建一个新的流程. 既然已经存在一个web订单流程, 我们就再创建一个订单回复流程. 这个流程在买家返回”item”时开始, 然后接收订单. 之后原始订单可以更新, 也可以退款. 最后此流程结束.
JBoss jBPM有三种创建流程的方式:
用可视化的流程设计器绘制流程
用XML格式编写流程
通过Java业务逻辑动态地创建流程
本指南使用可视化流程设计器来绘制流程. 可视化流程设计器是Eclipse平台的JBoss IDE插件之一. 本指南假设机器上还没有安装Eclipse, 所以我们将下载带JBoss IDE插件的捆绑式Eclipse版本. 打开JBoss IDE下载页http://www.jboss.com/products/jbosside/downloads, 选择最新GA版本(当前稳定的最新版本是JBoss Eclipse IDE 1.6.0 .GA), 然后选择捆绑式zip版本(windows平台用户选择JBossIDE-1.6.0.GA-Bundle-win32.zip, linux用户选择JBossIDE-1.6.0.GA-Bundle-linux-gtk.tar.gz). 解压zip文件到硬盘. 现在单击eclipse安装目录下的eclipse.exe文件, 出现对话框询问工作区(workspace)所在文件夹, 见图26.
图26. 工作区选择对话框
我们创建的项目将存储在指定的文件夹内. 选择工作区地址, 单击OK. 出现JBoss IDE welcome对话框, 见图27.
图27. JBoss IDE welcome对话框
我们不需要转换(convert)已有的项目, 所以单击Cancel. 出现eclipse欢迎页, 见图28.
图28. Eclipse 欢迎页.
选择右上脚的肩头图标, 转到eclipse工作台(workbench)视图, 见图29.
图29. Eclipse工作台(workbench)视图.
下面, 我们开始创建一个流程项目和一个流程定义. 首先, 选择菜单栏中Fileànewàother, 弹出新建对话框, 见图30.
图30. 新建项目向导选择页.
选择”JBoss jBPM”文件夹下的”Process Project”, 单击Next. 出现新建流程项目(process Project)对话框, 见图31.
图31. 新建流程项目对话框.
输入项目名称, 此处指定” jBPMStartersProcess”, 选择Finish. 出现工作台视图, 见图32.
图32. jBPMStartersProcess项目的工作台.
在这个项目中已有一个定义好的流程, 流程定义文件processdefinition.xml在 processes/simple文件夹下. 现在, 我们在同一文件夹下创建一个新的流程, 右击processes/simple文件夹, 选择Newàother, 出现New对话框. 选择”JBoss jBPM”文件夹下的”Process Definition”. (注意, 不同版本的项目布局可能也不同, 所以截图可能跟本指南中的截图不一致.)
图23. 选择流程定义的新建项目向导对话框
单击Next, 出现创建流程定义对话框, 见图34.
图34. 新建流程定义对话框.
输入流程名” StartersProcess”, 单击Finish.
图35. 带可视化流程设计器的工作台
我们已经创建了一个空流程, 现在我们可以开始绘制流程了. 这个流程有:
一个开始状态
一个任务节点
一个分支(fork)
两个任务节点
一个连接(join)
一个结束状态
添加以上内容, 布局见图36.
图36. 新流程的节点布局.
下面我们添加变迁(transition). 单击”transition”按钮, 分别单击开始节点和结束节点, 以此类推, 绘制好变迁之后的流程图见图37.
图37. 绘制完变迁后的StartersProcess
现在, 我们来给某些节点和变迁重命名, 以使流程更具可读性. 单击节点选中它, 再单击一次, 就可以重命名此节点; 或者双击节点, 在弹出的对话框中也可以重命名节点; 或者在屏幕下方的属性(properties)窗口重新指定名称. 重命名之后的流程图见图38.
图38. 重命名节点和变迁之后的StartersProcess
接下来我们来添加任务. 右击” Ship Order Return”节点, 选择”add task”. 一个task将显示在右边”Outline”窗口, 见图39.
图39. 添加了一个task的Starters Process.
右击此task, 选择”properties”, 出现”properties”对话框来定制此task, 见图40.
图40. task general properties对话框.
在Name后的文本框中输入” Send Item”, 单击左边窗口的”Controller”, 出现图41所示对话框.
图41. Task controller对话框.
单击”Add”按钮, 第一列”name”值改为” tracking number”, 选中” read”,” write”和” required”, 见图42.
图42. Task Controller对话框.
单击”OK”结束定义此task. 现在我们重复刚才的过程创建其他流程task并给每个task指派流程变量. 右击” Receive Return”节点, 选择”Add Task”. 右击刚创建的task, 选择”properties”. Task重命名为” Receive Item”, 添加两个流程变量” tracking number”(只选中read)和” received date”(选中read,write和required), 如图43所示.
图43. “Receive Return” task的Controller对话框.
单击”OK”结束流程定义. 右击” Update Order”节点, 选择”Add Task”. 右击task, 选择” properties”. Task重命名为” Send Updated Order”, 添加流程变量”address”, 选中read,write和required, 如图44所示.
图44. “Send Updated Order”task 的Controller对话框.
单击”OK”完成task定义. 右击”Return Money”节点, 选择”Add Task”. 右击task, 选择”properties”. Task重命名为” Update Books”, 添加流程变量”amount”, 选中read, write和required, 如图45.
图45. “Updated Books” task 的Controller对话框.
单击”OK” 完成task. 现在所有task都在屏幕右边的outline窗口显示, 见图46.
图46. 定义了task的StartersProcess.
任务(task)已经定义, 接下来我们需要定义每一个任务应由谁来执行. 我们首先来创建甬道(swimlane), 然后指派任务给甬道. 单击流程图下方的”Swimlanes”页签, 工作台中将显示甬道页, 见图47.
图47. 甬道(Swimlanes)对话框.
单击”Add”创建一个新甬道, 见图48.
图48. 一个空甬道被创建.
输入甬道名字”Shipping”, “Assignment type”选择” Expression”, 出现一个” Expression”文本框. 输入” user(grover)”, 则此甬道指派给了grover, 见图49.
图49. 定义的Shipping甬道.
再单击”Add”, 定义”Sales”甬道并把甬道指派给“user(ernie)”, 见图50.
图50. 定义的Sales甬道.
再次单击”Add”, 定义” Accounting”甬道并把甬道指派给“user(bert)”, 见图51.
图51. 定义的Accounting甬道.
现在甬道定义完毕, task可以指派给甬道了. 右击” Receive Item”任务, 选择” properties”. 单击左边的”Assignment”, “assignment type”选择” Swimlane”, 然后选择” Shipping”甬道, 见图52.
图52. 为” Receive Item” task选择” Shipping” 甬道.
单击”OK”. 右击 “Send Updated Order” task, 选择” properties”. 单击左边的”Assignment”, “assignment type”选择” Swimlane”, 然后选择 ”Sales” 甬道, 见图53.
图53. 为” Send Updated Order” task选择” Sales” 甬道.
单击”OK”. 右击 “Updated Books” task, 选择” properties”. 单击左边的”Assignment”, “assignment type”选择” Swimlane”, 然后选择 ” Accounting” 甬道, 见图54.
图54. 为” Update Books” task选择” Accounting” 甬道.
单击”OK”. 现在我们添加了节点和变迁, 也添加了任务和甬道. 单击屏幕左上方工具栏中的”save”按钮保存流程定义. 接下来我们就可以把流程定义部署到JBoss jBPM中了.
把流程部署到JBoss jBPM
首先, 确定jBPM服务器已经运行. 然后单击屏幕下方的”Deployment”, 出现图55中的页面. 确定所有参数跟图55相同. 如果JBoss jBPM运行在其他机器上, Server Name 就不是”localhost”要改成那台机器的IP.
图 55. Deployment页.
单击”Deployment”页中的”Test Connection…” 显示如下图:
单击”Deployment”页中的”Deploy process archive…”, 弹出图56所示对话框.
图56. 部署成功对话框.
流程已经部署成功, 我们打开IE浏览器, 在地址栏中输入http://localhost:8080/jbpm, 以“cookie monster”身份登录, 现在”Create New Process Execution” 列表中已经有两个选项了, 如图57所示.
图57. 显示StartersProcess 任务的主页.
单击” Send Item”. 我们创建的流程定义和流程变量显示在页面中, 见图58.
图58. 显示tracking number 流程变量的StartersProcess 任务页.
现在, 你就可以自己继续执行流程了.
Congratulations! 通过本指南, 你已经:
下载并解压了JBoss jBPM Starter Kit
执行了JBoss jBPM 引擎
执行了Websale 示例流程
管理了正在执行的流程
创建了你自己的流程
部署了你自己的流程在JBoss jBPM上
这里是进一步学习JBoss jBPM的资料:
JBoss jBPM User Guide 3.1 http://docs.jboss.com/jbpm/v3/userguide/
JBoss jBPM Javadoc 3.1 http://docs.jboss.com/jbpm/v3/javadoc/
JBoss jBPM Process Designer Getting Started 3.0 http://docs.jboss.com/jbpm/v3/gpd/
JBoss jBPM Training http://www.jboss.com/services/training/jbpm
JBoss jBPM Book (Upcoming)