前面3节分别介绍了JDK、MySQL、Tomcat的安装与配置。本节将介绍Activiti的下载、安装与运行,让读者对Activiti有一个初步的了解。
本书使用Activiti 6.0.0版本,可从Activiti官方网站下载相应安装包。
将下载的activiti-6.0.0.zip文件解压,得到如图4.10所示的文件目录。
图4.10 activiti-6.0.0文件目录
从图4.10中可以看到3个文件夹:database、libs和wars,它们的用途分别如下。
● database:存放Activiti数据库表的创建、修改和升级SQL脚本,不同数据库有不同的SQL文件。目前Activiti支持DB2、Oracle、SQL Server、MySQL、PostgreSQL和H2等主流数据库。
● libs:存放Activiti发布的JAR包,包含JAR包和源码包。
● wars:存放Activiti官方提供的WAR包,包括activiti-app.war、activiti-admin.war和activiti-rest.war这3个WAR包。其中,activiti-app.war是一套完整的工作流应用,activiti-rest.war是一套提供RESTful API的应用,activiti-admin.war是管理Activiti相关流程的应用。
安装好JDK及Tomcat后,将Activiti的3个WAR包直接复制到Tomcat的webapps目录下并启动Tomcat,启动成功后即可通过浏览器访问Activiti了。其中,只有activiti-app和activiti-admin拥有工作界面。Activiti内置应用访问参数如表4.1所示。
表4.1 Activiti内置应用访问参数
Tomcat启动成功后,通过浏览器访问http://localhost:8080/activiti-app即可进入如图4.11所示的界面。
图4.11 activiti-app启动成功页面
输入用户名、密码,成功登录后,进入如图4.12所示的界面,该界面中有3个应用:Kickstart App、Task App和Identity management。其中,Kickstart App用于设计流程,Task App用于处理流程任务,Identity management用于管理用户和组。
图4.12 activiti-app登录成功页面
需要注意的是,由于Activiti提供的3个WAR包默认使用H2内存数据库,重启Tomcat服务器后存储数据会丢失。本节仅介绍Activiti官方示例的用法,第22章会详细介绍如何将H2数据库更换为MySQL数据库。
Activiti官方提供的activiti-app是一套较为完整的工作流应用,可以基于其体验Activiti的大部分功能。本节将以一个简单的报销流程制作为例,向读者展示activiti-app的功能,使读者对工作流引擎有初步的了解。
在本报销流程中,员工发起报销申请,由财务经理审批。其流程如图4.13所示。
图4.13 报销流程示例
由图4.13可知,报销流程包含员工报销申请和财务经理审批两个环节,因此需要创建两个用户:员工(staff)和经理(manager)。
使用admin账号登录activiti-app后,进入如图4.12所示的页面,单击Identity management应用图标,跳转到身份管理页面,单击Users标签页,切换到用户管理页面,如图4.14所示。
图4.14 用户管理页面
单击Create user按钮,进入创建新用户页面,输入用户名、密码等信息,如图4.15所示,单击Save按钮即可创建一个新用户。这里新建两个用户,用户名分别为employee和manager。
图4.15 创建新用户页面
提示: 创建用户时,Email等项虽然不是必填的,但为避免使用时出现各种未知异常,建议完整填写。
使用admin账号登录activiti-app,单击Kickstart App应用图标,跳转到流程模型管理页面,如图4.16所示。
图4.16 流程模型管理页面
单击Create Process按钮,跳转到新建流程模型界面,输入模型名称、模型关键字、模型描述等信息(如图4.17所示),单击Create new model按钮。
图4.17 新建流程模型界面
此时跳转到流程模型设计界面(图4.18),根据前面定义的报销流程,通过鼠标拖放可视化组件绘制流程模型。
图4.18 流程模型设计界面
从图4.18可知,该流程模型中定义了一个开始事件、两个用户任务和一个结束事件。接下来,将两个用户任务分别分配给employee和manager用户。在画布上单击第一个用户任务,在打开的属性面板上单击Assignment按钮,进入如图4.19所示的界面,将“员工报销申请”任务分配给“职员”用户(“职员”是用户的真实名称,其登录用户名为employee),单击Save按钮保存配置。采用同样的方法,将“财务经理审批”任务分配给“经理”用户。配置完成后,切换到流程模型设计界面,单击Save the model按钮(画布顶部工具栏左侧第一个按钮)保存流程模型。
图4.19 分配用户任务办理人页面
流程模型创建完成之后,就可以部署了。在activiti-app中,一个App可包含多个流程模型,因此在发布流程前,先新建一个App并为其设置流程模型。单击Apps标签,跳转到App管理页面,单击Creaea App按钮,进入新建App定义页,输入App定义名称、App定义关键字和App描述后,单击Create new app definition按钮即可新建一个App,如图4.20所示。App详情页面如图4.21所示。
图4.20 新建App定义页面
图4.21 App详情页面
接下来为其设置流程模型。单击Edit included models按钮,进入流程模型选择页面,如图4.22所示。选中流程模型之后,单击Close按钮完成配置。
图4.22 流程模型选择页面
此时即可发布App。单击Apps标签,在跳转到的页面中单击“报销app”图标,跳转到App详情页面,如图4.23所示,单击右上角的Publish按钮即可发布App。
图4.23 App详情页面
完成前面的操作之后,使用新建的employee用户登录Activiti,登录后可以看到“报销app”应用图标,如图4.24所示。
图4.24 “报销app”应用创建成功
单击“报销app”应用图标,在跳转到的页面中单击Processes标签,跳转到流程管理页面,单击Start a process按钮启动报销流程,如图4.25所示。
图4.25 启动报销流程
根据流程模型的定义可知,启动流程后,由employee用户完成第一个用户任务。单击Tasks标签,跳转到如图4.26所示的页面,在左侧任务列表中选中要办理的任务,单击右上角的Complete按钮即可完成当前用户任务。
employee完成任务后,由manager完成第二个用户任务。使用manager账号登录系统,进入“报销app”应用,单击Tasks标签,可以同样看到分配给manager用户的任务,以同样的方式完成任务后,报销流程结束。至此,一个简单的员工报销流程在activiti-app上运行成功。
图4.26 任务办理页面
除activiti-app WAR包外,Activiti中的activiti-admin WAR包在部署时也应放到Tomcat应用目录下。activiti-admin用于查看工作流引擎的主要数据,包括工作流引擎的部署信息、流程定义、任务等数据。使用前文提供的URL和用户名、密码登录activiti-admin应用。activiti-admin登录成功页面如图4.27所示。
图4.27 activiti-admin登录成功页面
页面顶部有Deployments、Definitions、Instances、Tasks、Jobs、Configuration这6个标签,默认激活Configuration标签页。Configuration用于配置管理对象信息,即activiti-app。activiti-admin服务器端口默认为9999,需要更改为Tomcat的8080。单击Edit Activiti REST endpoint按钮,进入如图4.28所示页面更改服务器端口并单击Save endpoint configuration按钮。
图4.28 更改activiti-admin服务器端口
更改配置后,可单击Check Activiti REST endpoint按钮,来测试是否可以连接activiti-app接口。连接成功后的提示信息如图4.29所示。
图4.29 连接成功后的提示信息
单击Instances标签,可以查看自己发起的报销流程实例列表,选择其中一个流程实例,可以查看该流程示例的全部信息,如图4.30所示。
图4.30 查看报销流程示例的全部信息
activiti-admin中的其他标签页这里不做介绍,读者可以自行体验。
activiti-admin应用中的数据都可以通过Activiti提供的接口获取,接口的使用将在本书后续章节讲述。