一、前言
Activiti是一个比较成熟的框架,但是网上的资料大多都是比较简单的教程,有很多自己想要的功能找不到相关文档,索性就自己写一个。
二、Activiti是干啥的
OA系统里面有一个审批的功能,大致内容就是一个人发起一个审批时间,然后后面按照设定好的流程,一级一级的进行审批。比如张三发起一个请假的申请,然后由张三的直属上级进行审批,通过后再由人事总监进行审批,最后整个流程才算结束。Activiti就是这个流程引擎,主要用来实现这个功能。
三、体验官方Demo
Activiti官网:https://www.activiti.org
源码:https://github.com/Activiti/Activiti
Activiti是基于Apache License 2.0的协议,也就是说完全开源,大家可以随便用。开始前需要先安装好JDK(1.7+),准备好Tomcat(基础内容,这里不再赘述)。
Activiti的版本已经出到7.x了,但是6.x的ui做的比较全面,这里就以6.x版本进行讲解。下载6.x的包
https://github.com/Activiti/Activiti/releases/download/activiti-6.0.0/activiti-6.0.0.zip
解压以后再wars文件夹下有3个war包,这个就是官方提供的Demo应用。官方很良心,连Demo应用都提供了,但是没告诉大家怎么用,也是绝了(也许是我没找到),折腾了好半天才走通流程。
我们把3个war包放到tomcat的webapp文件夹下,然后启动tomcat。
1、activiti-app
activiti-app是一个主要的demo,可以走完审批的全部流程,基本上可以体验完activiti的功能。
访问:http://localhost:8080/activiti-app/
输入账号密码:admin/test
1.1、新建账户
首先进入Identity management,新建账户user1和user2
1.2、新建表单
然后进入Kickstart App,新建表单
给表单命名
编辑表单,将左侧的组件拉到右边
编辑组件内容
编辑好表单以后点保存
1.3、新建流程
点击Process新建流程
给流程命名
进入流程编辑界面,默认会有一个空心圆圈,这个是流程的开始节点,我们可以从左侧拉取组件到右边,也可以点击空心圆圈出现的菜单里面选择下一个节点
点击第二个节点,设置处理这个节点的人员
设置为user1
给第二个节点设置表单
选择上一步新建的表单apply
同样的方式设置第三个节点的处理人为user2并且表单也是apply
保存并且退出
1.4、新建应用
点击Apps,新建应用
给应用命名
编辑模型
选择上一步新建的模型apply1,然后保存退出
选择新建的应用,点击发布(发布以后才能使用)
发布以后界面上会多一个应用
1.5、测试流程
登录账户user1,进入Task App
点击Process,开始流程
启动一个流程
点击Tasks可以看见发起的流程,填写申请内容以后点击完成
然后流程就走到下一个节点了,当前界面上就看不见了
如果想看,可以在筛选器里面调整参数,查看完成的任务
然后就可以看见完成的任务
点击Process,选择刚才的流程,点击Show diagram可以查看流程的进度情况
可以看到流程已经到审批的节点了
登录user2账户,进入Tasks App可以看到有待完成的任务,点击Complete就可以完成任务
一个简单的审批流程就完成了。
2、activiti-rest
activiti-rest是Activit的rest api,项目启动后访问
http://localhost:8080/activiti-rest/docs/
输入账号密码:kermit/kermit
可以看到Activiti提供的接口文档,但是你仔细查看会发现activiti-rest的接口文档和activiti-app的界面好像有点对不上,后来下载了Activiti 5.x的demo才知道,activiti-rest应该是和5.x的应用demo配套的,放到Activiti 6.x只是这些接口还能用,要使用接口文档也可以比较方便地进行使用。
3、activiti-admin
activiti-admin有点像springboot里面的admin,主要是做数据监控的,访问地址
http://localhost:8080/activiti-admin
输入账号密码:admin/admin
进来以后发现这里啥数据都没有,那是因为现在activiti-admin监控的服务地址是空的,点击Configuration,编辑Activit Rest endpoint
将端口改为8080
Deployment可以发布的流程
Definitions可以查看服务的Process Definitions
Instances是启动的实例
Tasks可以查看任务
Jobs目前数据还是空的
四、小结
有了这3个官方Demo以后,感觉对Activiti有了一定的了解,如果你觉得自己拿着接口文档以及activiti-app就可以自己搞一个OA系统了,那我只能说Too Young Too Simple!
下一章继续讲解Activiti