Activiti工作流的入门使用

一、Activiti基本概念

流程定义:就是流程图(bpmn文件)

流程实例:流程定义的每个具体实现

流程定义与流程实例的关系就像类和对象的关系,一个类可以有多个对象,一个流程定义可以有多个流程实例。

bpmn:流程图,下图就是一个bpmn文件生成的图片

 

 

二、Acitiviti插件的安装以及创建流程定义(idea中)

1、idea中工作流插件的安装

两种安装方式:通过idea的Plugins安装actiBPM插件(需要连接外网)或者直接在idea官网直接下载然后导入。

1.1、在idea的Plugins中下载(若一直无法下载,则通过第二种方法下载):

 

1.2、登录idea插件官网搜索下载:http://plugins.jetbrains.com/,然后idea导入

 

2、idea中创建流程定义(也就是流程图)

 

然后就可以画图了,但是画图之后,没有连接图标怎么办呢

把鼠标放在开头的那个图标上,此时光标的形状改变了 拖到另一个上面,连接成功了。

怎么连接成功的呢?  把鼠标放到图标的正中心,然后会看到光标变成了“扇子类型”的样子(黑白相间)。只要看到变成这个样子,就可以拖动到另一个图标中,进行连接了

 

画完图后,但是并没有生成png图片,这个时候重命名刚才创建的文件,把后缀改成xml然后右键

然后保存到与刚才创建文件的一个文件夹内就可以了

 

 

 

保存图片后,发现图片中文乱码,解决方法:

找到IDEA的安装目录,找到bin目录比如我的路径:D:\JetBrains\IntelliJ IDEA 2017.3\bin找到这两个文件

 

具体要修改哪个文件,由你安装的IDEA的版本来决定,如果你安装了64位版本的IDEA,那么就修改

 

这个文件,反之亦然,两个都修改也可以,

具体修改的方法是在文件后面追加一条命令: -Dfile.encoding=UTF-8 

 

一定注意,不要有空格,否则重启IDEA时会打不开,然后 重启IDEA,把原来的png图片删掉,再重新生成,即可解决乱码问题

 

解决问题后,把xml文件重新改成bpmn格式,和png图片一起压缩成zip包进行部署

  • SpringBoot集成Activiti

3.1、添加activiti依赖

<dependency>

<groupId>org.activiti</groupId>

<artifactId>activiti-spring-boot-starter</artifactId>

<version>7.0.0.Beta2</version>

</dependency>

3.2添加 SpringSecurity 安全框架整合配置

因为 Activiti7 与 SpringBoot 整合后,默认情况下,集成了 SpringSecurity 安全框架,这样我们就要去 准备 SpringSecurity 整合进来的相关用户权限配置信息。

可以查看一下整合 SpringBoot 的依赖包,发现同时也将 SpringSecurity 的依赖包也添加进项目中了,

如下:

3.3 添加 SecurityUtil 类

这个类可以从我们下载的 Activiti7 官方提供的 Example 中找到(https://github.com/Activiti/activiti-examples)。

为了能够快速实现 SpringSecurity 安全框架的配置,所添加的一个组件。

3.4 添加 DemoApplicationConfig 类

在 Activiti7 官方下载的 Example 中找到 DemoApplicationConfig 类,它的作用是为了实现 SpringSecurity 框架的用户权限的配置,这样我们就可以在系统中使用用户权限信息。本次项目中基 本是在文件中定义出来的用户信息,当然也可以是数据库中查询的用户权限信息。

 

3.5 使用 SpringBoot 整合 Junit 方式测试新特性

 

通过上面的类,我们可以实现 SpringBoot 与 Junit 整合测试 Activiti7 所需的各种 API,之后我们就可以实现各种测试了。

老版本的Activiti使用ProcessEngineConfiguration、ProcessEngine、Service接口来实现对流程定义的部署,但是与springboot集成的版本只有两个操作类ProcessRuntime、TaskRuntime,这两个来负责流程定义的部署和操作。

ProcessEngineConfiguration类:主要作用是加载activiti.cfg.xml配置文件;

ProcessEngine类:帮助我们快速得到各个Service接口,并且可以生成activiti的工作环境(25张表的生成);

Service接口(RepositoryService、RuntimeService、TaskService、HistoryService):可以快速实现对25张表的操作。

3.6查看流程定义信息

 

通过 ProcessRuntime 的方法,我们可以查看已经部署的流程定义信息。通过加入 Pageable.of()方法可以实现分页查询效果。

3.7启动流程实例

现在要启动流程实例,我们可以使用 ProcessRuntime 的 start()方法就可以实现流程实例的启动

3.8查询并完成任务 

使用 TaskRuntime 接口的 tasks()方法实现任务的查询。

使用 TaskRuntime 接口的 claim()方法实现任务拾取。

使用 TaskRuntime 接口的 complete()方法实现任务的完成​。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章