背景
在开源的工作流引擎中,activiti和jbpm应该是唯二的两个选择,相比jbpm,activiti应该算是晚辈,但有意思的是,在github上,activiti有5.6k的start,而jbpm却只有978,可见开发者们更依赖较为年轻的activiti,确实也是这样的,近几年在企业里面,activiti大有燎原之势,做流程的没有不知道activiti。看了网上activiti的教程,质量参差不齐,找不到一个完整的教程,想看个视频,动不动几十集的,因此打算自己整理一套完整的activiti教程,教程基于activiti6。背景交代完毕。
下载
可以从这里下载Activiti6资源包的zip文件,在这个页面还包含开发文档和JavaDoc,官方文档写的非常详细,而且篇幅不长,有条件的同学建议能够通读一遍。
安装
下载完的zip包名称为activiti-6.0.0.zip
,解压开文件如下:
. ├── activiti_readme.png ├── database │ ├── create │ ├── drop │ └── upgrade ├── libs │ ├── activiti-app-logic-6.0.0-sources.jar │ ├── activiti-app-logic-6.0.0.jar │ ├── activiti-app-rest-6.0.0-sources.jar │ ├── activiti-app-rest-6.0.0.jar │ ├── ...... ├── license.txt ├── notice.txt ├── readme.html └── wars ├── activiti-admin.war ├── activiti-app.war └── activiti-rest.war
- database存放数据库对象相关脚本,包含不同的数据库脚本
- libs包含activiti开发过程中需要用到的jar包和源码,不建议通过jar包直接引用,建议通过maven进行管理
- wars包含三个app,
activiti-app
实现了一个简单的activiti应用,包含流程建模,任务发起,待办审批等功能,但完成度只有demo水平,在使用过程中还发现了几个bug,不建议生产使用,主要用的是里面的流程建模工具,可以创建基于BPMN2.0
的流程模型并且导出。 activiti-admin
是管理员功能,可以查看当前流程实例运行情况。activiti-rest
包含
将wars文件夹下三个war文件复制到tomcat的webapps目录下,启动tomcat即可自动部署,首次部署需要初始化数据库,时间可能比较长,默认用的是自带的内存数据库h2,我们也会介绍如何修改为我们自己的数据库。
activiti-app
我们主要关注activiti-app
这个应用,这个应用包含流程建模和用户管理相关功能,我们需要在上面创建流程模型,并且导出bpmn文件,以便我们在代码中使用。
部署完毕后,打开http://localhost:8001/activiti-app,默认账号为 admin/test
,默认包含三个app
Kickstart app
包含四个功能,流程模型设计,表单设计,决策表设计,app管理Task App
有一个非常简陋的待办审批界面和流程发起界面。Identity management
用来管理用户和用户组
activity-admin
activity-admin
应用提供一些基本的流程运行时管理功能,可以查看当前运行的所有实例和任务,也可以上传流程文件
activity-rest
activity-rest
提供一些activiti rest api功能,不过需要通过 http basic认证进行调用。
三个应用如果需要连通,还需要做相关的配置,下一章节会介绍如何将三个应用连通。
流程模型创建
activiti支持BPMN 2.0的标准,所以理论上任何BPMN 2.0编辑器创建的模型都支持,不管是本地版本的还是在线版,在介绍activiti自带的建模工具之前,介绍几个可供选择的建模工具
- bpmn官放提供的开源建模工具bpmn-js,支持基本的模型设计,但缺少属性配置,不过可能是故意这样设计的,这个工具主要是给activiti开发者进行二次开发。
- yaoqiang用java开发的bpmn设计器,由于是java开发,所以支持跨平台。
actiBPM
,idea插件。
登录activiti-app,进入Kickstar App->CreateProcess创建新的流程模型,需要输入模型名称和模型主键,这个主键必须唯一,代码中发起流程需要用到。这里创建了只有一个UserTask的审批节点
可以修改UserTask的assignments
属性设置审批人,这里设置了管理员作为审批人。保存后退出编辑器界面,在查看页面可以对模型进行导出。
no comment untill now