3.3基于Eclipse插件的流程设计器Activiti Designer
在客户的需求确定之后,由业务人员利用Activiti Modeler设计完业务流程,此时可以将设计结果导出为bpmn20.xml文件,之后由开发人员继续基于设计进一步添加涉及技术细节的配置,例如排他分支的条件、Java服务、任务监听器等。
3.3.1Activiti Designer特点
Java程序员每天工作使用的主要工具是IDE,而应用最广泛的IDE当然是Eclipse,任何开发人员都可以很容易地开发Eclipse的插件。Activiti目前提供了Eclipse的Activiti Designer插件,以后还会陆续推出其他IDE的插件,例如NetBeans、IntelliJ IDEA等。
Activiti Designer一般随着Activiti引擎一起发布,在Activiti引擎的新版本添加了对BPMN 2.0规范的支持和实现之后,Activiti Designer也同步更新了支持新规范的可视化流程设计。
相对于Activiti Modeler严格以BPMN 2.0规范为基础实现可视化设计,Activiti Designer提供了Activiti自行扩展的十几种配置(以后会陆续介绍),例如使用activiti:assginee简化UserTask的任务办理人属性,以及使用activiti:candidateGroup简化任务候选组等。
TDD(Test Driven Development,测试驱动开发)被广泛用于日常开发中。Activiti Designer当然也为TDD提供了良好的支持:开发人员可以基于流程定义文件(foo.bpmn)快速生成测试用例,在设计流程的时候把存在“坏味道”的业务流程停止。
3.3.2安装Activiti Designer
本书使用的Eclipse版本为4.2(代号Juno),Activiti Designer支持3.7(代号Indigo)以后的Eclipse版本。
建议读者采用Site方式安装Activiti Designer:单击菜单“Help”->“Install New Software”,打开如图3-24所示的对话框。然后单击“Add”按钮,在打开的对话框中填写以下内容,接着单击“OK”按钮确认添加Repository。
Name: Activiti BPMN 2.0 designer
Location: http://activiti.org/designer/update/
图3-24用Site方式添加Activiti Designer的Repository
3.3.3设计流程
1. 新建Activiti项目
单击“File”→“New”,选择图3-25中的“Activiti Project”项目,单击“Next”进行一些设置之后就可以创建一个Activiti项目。
图3-25新建Activiti Project向导
创建完项目后的目录结构如图3-26所示,其中展示的是一个名为“bpmn20-example”的项目,熟悉Maven的读者很快就看出这是Maven的标准目录结构。建议不熟悉Maven的读者参考Maven的文档了解相关知识。
新建的Activiti项目会自动在src/main/resources目录下创建diagrams包来存放新建的流程资源文件。在实际应用中往往习惯使用公司或组织域名倒序创建目录,如图3-26所示。
2. 新建请假流程
在“src/main/resources/me/kafeitu/activiti”目录上右击,选择“New”→“Other…”,打开如图片3-27所示的新建向导对话框,选择“Activiti Diagram”,单击“Next”按钮弹出如图3-28所示的对话框,其中默认的扩展名为.bpmn,也是众多设计器默认的扩展名。
在Activiti Designer 5.8及之前的版本中,在新建流程定义时默认的扩展名为.activiti,而不是现在看到的.bpmn;当打开foo.activiti文件设计好流程并保存时会自动在同一目录下生成同名的foo.bpmn20.xml和foo.png。
图3-27新建Activiti Diagram向导—选择新建类型
图3-28新建Activiti Diagram向导—设置文件名
单击图3-28中的“Next”按钮之后弹出如图3-29所示的选择模板对话框。为了方便快速创建流程,Activiti Designer内置了一些流程定义模板供开发人员选择。在创建流程之后开发人员可以根据自己的需求稍微调整即可。
图3-29新建Activiti Diagram向导—选择模板
在安装Activiti Designer之后,在任何目录都可以通过“New”创建流程定义,前面关于创建Activiti Project的介绍仅仅是为了向读者说明创建过程。
3. 设计请假流程
在新建流程之后要先设置流程属性,例如Id、Name等,设置请假流程的配置信息如图3-30所示。
下面介绍配置界面中的几个属性。
Id:流程的唯一标识,在2.4.2节中启动流程时指定的“leavehello”即此属性,建议使用纯英文标识。
Name:流程的名称,可以是任意字符。
Namespace:命名空间,一般使用公司名或组织域名+项目名称,可以更加细化到每个系统的模块,这样读者在实际项目中可以用此属性来归类流程,例如com/company/project/module,其中com/company是公司域名的倒序,project表示项目名称,module表示一个具体的模块;还可以使用另外一种描述方式,即通过http://www.compnay.com/project/module达到相同的目的。
Document:针对当前流程功能的简短文字描述。
图3-30设置流程属性
和Activiti Modeler设计流程的方式一样,从开始事件(Start Even)开始,在设计区域的右边栏中找到“Event”组的“StartEvent”,用鼠标将其拖动到左侧的空白区域,如图3-31所示。
图3-31中“Properties”下的Id、Name的含义和图3-30中的类似,只不过这里表示一个开始事件的属性。
在图3-31所示的工作区中,圆形图标即为开始事件,将鼠标移动到开始事件上之后和在使用Activiti Modeler时一样会浮动显示快捷方式菜单,例如可以通过单击左下的第二个图标创建一个任务(Task),如图3-32所示。
利用快捷菜单可以快速创建各种模型,当然也可以直接从右边栏的模型仓库中选择“Task”拖动到工作区。单击“Create user task”即可在开始事件的右边生成一个User Task并自动用顺序流(SequenceFlow)箭头连接,如图3-33所示。
图3-33通过快捷菜单创建User Task
在创建“领导审批”节点后单击刚刚新建的User Task就可以设置属性了,在图3-33中将Id、Name属性设置为“deptLeaderAudit”和“领导审批”,前者是Task在当前这个请假流程中的一个唯一标识。
设计“领导审批”任务在使用Activiti Modeler时已经结束了,在使用Activiti Designer时需要进一步设置任务的属性,例如任务的分配人。在图3-34中设置“领导审批”节点的分配人为“leader”。
图3-34设置User Task的任务分配人
读者可以自行依次完成剩余两个User Task的创建与设置,如图3-35所示。对于在设计过程中不容易理解的属性在以后的章节会陆续讲到,通过本章只要学会如何使用Activiti Designer设计简单流程即可。
图3-35使用Activiti Designer设计完成的请假流程
要在设计完流程后查看XML格式的文件内容,需要右击foo.bpmn文件选择“Open With”→“XML Editor”;要改用设计器打开要查看的文件,需要右击foo.bpmn文件选择“Open With”→“Activiti Digram Editor”。如图3-36所示,图中上半部分使用“Activiti Digram Editor”打开,下半部分使用“XML Editor”打开。