Activiti6.0学习实践(1)-基础和部署

      工作流是现在信息化建设过程中经常用于解决业务流程管理问题的工具,因此工作流是一个比较专业化的话题。当前流行的工作流主要有JBPM和activiti。本系列学习实践的目的就是掌握activiti的部署、开发和应用。


目录

1、工作流

2、工作流引擎选型

3、工作流引擎部署

3.1 准备工作

3.2 部署

3.4 启动

4、建立一个简单的工作流示例

4.1目标

4.2设计流程参与者

4.3 设计流程

4.4 创建流程应用

4.5 流程应用的实操

5、问题总结

5.1 更换为mysql数据库启动异常

5.2 创建用户无法登陆

5.3  中文乱码问题


1、工作流

       什么是工作流呢?采集百度百科的说法:工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。

从上面我们关注几个重点:

  1. 业务规则的抽象
  2. 协同工作
  3. 自动传递文档、信息或者任务

上面几个方面的重点内容我想已经很清晰的描述工作流的本质了

2、工作流引擎选型

当前工作流主要有 jbpm和 activiti。

下图是二者之间的主要区别:

Activiti6.0学习实践(1)-基础和部署

再用搜索引擎的搜索指数看一下,发现activiti明细比jbpm高:

Activiti6.0学习实践(1)-基础和部署

这也是对工作流进行学习首选activiti的原因。

3、工作流引擎部署

下面我们正式进入到activiti工作流学习的环节。

3.1 准备工作

我们可以通过工作流引擎activiti的部署来初步了解一下activiti。这个软件的下载地址为:https://www.activiti.org/。要将这个工作流引擎用起来,我们需要准备如下环境:

  1. 服务器:
  2. Java环境: jdk1.8
  3. Servlet容器:tomcat 8.0
  4. 软件:Activiti6.0 压缩包

上面的内容也比较常见,这里说一下最后一个activiti压缩包如何获取。在官网点击“try now”后,找到如下页面

Activiti6.0学习实践(1)-基础和部署

最新的是Activiti7.0, 因此我们需要从Older Versions找到Activiti6.0。点击淡绿色的 6.x Download,进行下载,下载链接https://github.com/Activiti/Activiti/releases/download/activiti-6.0.0/activiti-6.0.0.zip,你也可以直接下载,下载完成后是一个压缩文件。

解压这个文件后,可以看到如下的文件目录

Activiti6.0学习实践(1)-基础和部署

进入wars目录,这里就是我们需要部署的内容了

Activiti6.0学习实践(1)-基础和部署

admin包是管理相关,app是应用, rest是接口。

如果你的系统是linux的,可以将这些war部署到linux下的tomcat,本文档以windwos为环境,所以后续没有特别说明,都是在window环境下配置和操作。

此外,activiti-app也有***,可以通过下面链接获取:

链接:https://pan.baidu.com/s/1Wj6U4xVJ5vrmQVI2o-Z5_Q

提取码:7779

主要是提供给网络不方便的小伙伴自取。

3.2 部署

将上面的三个war包,拷贝到tomcat下的webapps目录下

Activiti6.0学习实践(1)-基础和部署

拷贝三个war包到上面的目录中这样就完成了部署工作。

Activiti6.0学习实践(1)-基础和部署

      1. 数据库修改

由于activiti默认集成了嵌入式数据库h2,这个内存库,重启后会丢失内容,所有我采用的是mysql数据库,因此需要将数据库修改为mysql配置。

Activiti6.0学习实践(1)-基础和部署

将上面红框中内容,按自己的mysql配置进行修改,保存。启动后,工程会检查activiti对应的库表是否存在,如果不存在会创建相应的数据库表对象。

Activiti6.0学习实践(1)-基础和部署

3.4 启动

下面我们要进行activiti应用的启动,进入到apache-tomcat-8.5.34 -activiti\bin目录,双击脚本startup.bat

Activiti6.0学习实践(1)-基础和部署

这样就表示应用启动好了。我们通过下面的url来检验一下:http://localhost:8080/activiti-app

在浏览器中输入上面url,呈现如下的界面

Activiti6.0学习实践(1)-基础和部署

输入账号和密码: admin/test 点击signin,能看到下面页面,就说明部署成功了。

Activiti6.0学习实践(1)-基础和部署

这个页面是activiti的面板,看到这个说明activiti部署成功。

由于都是英文界面,所以可以去下载一个汉化包(前面提供过百度盘),替换app包的内容。下面是替换汉化包后的activiti-app启动后内容界面:

Activiti6.0学习实践(1)-基础和部署

 

4、建立一个简单的工作流示例

4.1目标

设计一个简单的二级审批流程:

开始-》员工填写请假单-》部门领导审批-》人力审批-》结束

这个简单的流程里面,体现了二级审批,即部门领导审批,人力审批

4.2设计流程参与者

上面这个流程有几个参与者:员工,就是流程的发起人 user_dev; 部门领导: user_tl;人力审批: hr_tl;

我们打开activiti的操作界面:

Activiti6.0学习实践(1)-基础和部署

选择用户面板:

Activiti6.0学习实践(1)-基础和部署

然后,点击创建用户,创建下面几个用户:

user_dev, user_tl,hr_tl

创建好后如下所示:

Activiti6.0学习实践(1)-基础和部署

说明:电子邮件项目是必填项,如果不设置,会导致无法用新创建的用户登录系统。

点击页面上的Activiti6.0学习实践(1)-基础和部署 可以返回到主界面。

4.3 设计流程

    在完成了上面参与者的创建后,我们开始进行二级审批流程的设计。设计之前,我们需要明白这里的流程设计其实是流程模板设计。比如说,我们要建立一个二级审批流程模板,这个模板适用于多个二级审批应用,比如请假申请、出差申请、调休申请等等,这些日常公司中常用的流程都是二级审批,所以都可以在一个通用的二级审批模板上来建立各种应用。当然有人会说不同的申请,填写的内容(我们一般称为表单)不同,这个后面再说。

Activiti6.0学习实践(1)-基础和部署

然后,我们选择创建流程

Activiti6.0学习实践(1)-基础和部署
在创建流程的界面上,我们先为流程起一个名字:二级审批流程。

Activiti6.0学习实践(1)-基础和部署

点击创建新模型后,在展开的页面就可以进行流程的设计。尤其关注下图中标注红色的部分是经常要创建的活动/任务。

Activiti6.0学习实践(1)-基础和部署

通过拖拉左边的组件,我们创建开始、两个用户活动、结束这些组件,并把他们连接起来(点击某个组件,可以在弹出的操作内容中选择箭头连接这些组件)。然后我们选择用户活动,将用户活动的指派人进行设置。

Activiti6.0学习实践(1)-基础和部署

然后,我们进行任务派遣,这个活动是部门领导对员工的请假单进行审批,所以我们可以这样选:

Activiti6.0学习实践(1)-基础和部署

下面对第二个用户活动进行任务派遣,通过这派遣将流程和用户关联起来。

Activiti6.0学习实践(1)-基础和部署

上面的任务分配给单个用户,或者候选用户都只是选择的方式,完成后我们可以在流程面板看到发布的这个流程。

Activiti6.0学习实践(1)-基础和部署

4.4 创建流程应用

流程创建好了后,可以进行流程应用的开发。上面的流程可以理解为流程模板,而应用是流程模板一个具体的应用。比如上面的二级审批流程,可以用于请假流程应用,也可以用于出差流程应用等等。

Activiti6.0学习实践(1)-基础和部署

创建后,我们还需要为这个应用选择流程模型,从应用面板上,看到我们创建的请假模块应用,点击红框进行应用和流程的设定。

Activiti6.0学习实践(1)-基础和部署

点击上图中的按钮后,对应用的基本内容进行操作:

Activiti6.0学习实践(1)-基础和部署

在编辑模型部分,选中适合的流程模型后,出现下图中的+号

Activiti6.0学习实践(1)-基础和部署

关闭后,看到流程应用和流程模型关联起来了。

Activiti6.0学习实践(1)-基础和部署

注意,这个时候要点击保存,把下面图中的小勾打上,进行流程应用的发布,这样就可以进行实际的应用了。

Activiti6.0学习实践(1)-基础和部署

4.5 流程应用的实操

我们进入到系统主界面,可以看到流程应用-请假模块已经发布了:

Activiti6.0学习实践(1)-基础和部署

下面我们进行流程的实际操作验证,通过以下几个步骤来熟悉activiti的流程执行过程:

  1. 用user_dev登陆,进行请假
  2. 用user_tl登陆,审批流程
  3. 用hr_tl登陆,二级审批
  4. 用户查看到自己流程的状态

第一步:用user_dev用户登录

Activiti6.0学习实践(1)-基础和部署

我们看到这里已经有一个请假模块,如果看不到请检查上一步应用创建并保存时是否勾选了发布。下面我们要发起一个活动(具体的一个流程实例)

Activiti6.0学习实践(1)-基础和部署

注意:不是选中第一个,第一个是创建一个临时协作任务。第二个新的进程并跟踪进程才是根据流程进行工作流协作。

点击开始一个新进程后,在界面上选中二级审批流程,本例中只有一个流程,所以默认选中,在右边的“开始流程”按钮上点击:

Activiti6.0学习实践(1)-基础和部署

点击开始后,流程引擎启动了,我们可以看到这个流程进程已经启动:

Activiti6.0学习实践(1)-基础和部署

红框中内容表示对应的流程已经启动,并派发到部门领导处进行审批。红色箭头指向的按钮,点开后展示流程进行过程:
Activiti6.0学习实践(1)-基础和部署

注意上图中颜色代表的意义:蓝色表示完成的活动,绿色表示当前处于的活动,灰色表示还没有开始的活动。

第二步:user_tl登陆

根据我们的设计的规则,这个用户登录后,会在请假模块看到一条自己需要处理的待办,我们来看看是否如此:

Activiti6.0学习实践(1)-基础和部署

我们可以进行审批(这是添加一个注释),然后点击完成。完成后,在任务列表中已经看不到要处理的任务,在进程中看到这个活动的流程:

Activiti6.0学习实践(1)-基础和部署

而此时显示图表表示流程进入到hr审批阶段。

Activiti6.0学习实践(1)-基础和部署

第三步:hr_tl登陆

Hr登陆后,在任务列表中看到待办任务列表中有一条记录,可以进行审批。

Activiti6.0学习实践(1)-基础和部署

而用user_dev账号登陆,可以看到活动的流程目前流转到hr审批

Activiti6.0学习实践(1)-基础和部署

当hr审批完成后,同样任务列表中消失,由于这个审批任务完成了,所以在进程中是看不到这个流程的,同理用user_dev,user_tl登陆一样看不到这个完成的流程了。

第4步:通过activiti-admin查看完成的流程

Activiti-admin是工作流的管理功能模块,通过下面的url进入。首先打开http://localhost:8080/activiti-admin,使用账号 admin/admin登陆

Activiti6.0学习实践(1)-基础和部署

这里显示activiti-app的端口是9999,需要修改为正确的端口,通过右边的edit按钮进行修改。修改完成后,我们可以在deployments面板下看到我们发布部署的应用:请假模块

Activiti6.0学习实践(1)-基础和部署

在tasks面板下,我们可以看到流程最后结束的两个操作

Activiti6.0学习实践(1)-基础和部署

可以通过instances(实例)面板,来查看每个流程实例:

Activiti6.0学习实践(1)-基础和部署

红色箭头指向的是最后一个发起的请假流程。7528是这个流程实例ID,点击这条记录,可以看到这个流程下的各个任务(即参与协同的人完成的每个活动)。

Activiti6.0学习实践(1)-基础和部署

从上面可以看到这个流程实例进行的具体的2个活动

5、问题总结

5.1 更换为mysql数据库启动异常

问题:采用mysql数据库,启动应用,报告liquibase下创建对象exist存在,app或者admin应用启动异常

解决:由于默认采用H2数据库(一种内存数据库),系统重启后会丢失,因此修改为mysql可以保持数据持久化。注意admin和app两个应用数据库要建成不同库,否则会因为数据同步方面的设计导致应用启动异常

Activiti6.0学习实践(1)-基础和部署

5.2 创建用户无法登陆

问题:创建用户后,用新用户无法登陆

解决:用admin账号创建用户时信息要完整,比如要有email信息,创建时不填写是不会报异常的,因此创建了用户,无法用这些用户登录一般都是创建时信息不完整。

5.3  中文乱码问题

问题:Admin应用显示中文乱码

解决:在tomcat容器中可以进行中文配置:修改catlina.bat文件

Activiti6.0学习实践(1)-基础和部署

加入  UTF-8参数设置