JAVA-工作流-DAY01-Activiti7入门Demo
一、Activiti概述
1. Activiti介绍
Activiti是一个工作流引擎,可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程执行,从而实现系统的流程由activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,提高系统的健壮性,减少系统的开发维护成本。
2. Activiti基本关系介绍
2.1 Activiti基本流程
2.1.1 Activiti基本关系类图
注:在新版本中,IdentityService,FormService两个Serivce都已经删除了。
2.1.2 Activiti执行原理
通过读取activiti.cfg.xml配置文件读取数据库信息,创建相应的工作流引擎实例(ProcessEngine),在相应数据库里创建activiti执行所需的数据表(共25张)。通过ProcessEngine下的各类service实现对流程数据表的操作,完成工作流程。
2.1.3 Service总览
2.1.4 Activiti工作流程
1.定义流程,按照BPMN的规范,使用流程定义工具,用流程符号把整个流程描述出来
2.部署流程,把画好的流程定义文件,加载到数据库中,生成表的数据
3.启动流程,使用java代码来操作数据库表中的内容
2.1.5 BPMN介绍及常见流程符号
BPMN(Business Process Model And Notation)-业务流程模型和符号,是由BPMI(BusinessProcess Management Initiative)开发的一套标准的业务流程建模符号。
2.1.5.1 事件符号 Event
2.1.5.2 活动符号 Activity
活动是工作或任务的一个通用术语。一个活动可以是一个任务,还可以是一个当前流程的子处理流程; 其次,你还
可以为活动指定不同的类型。常见活动如下:
2.1.5.3 网关符号 GateWay
1.排他网关 (x) ——只有一条路径会被选择。流程执行到该网关时,按照输出流的顺序逐个计算,当条件的计算结果为true时,继续执行当前网关的输出流;如果多条线路计算结果都是 true,则会执行第一个值为 true 的线路。如果所有网关计算结果没有true,则引擎会抛出异常。排他网关需要和条件顺序流结合使用,default 属性指定默认顺序流,当所有的条件不满足时会执行默认顺序流。
2.并行网关 (+) ——所有路径会被同时选择。
拆分 —— 并行执行所有输出顺序流,为每一条顺序流创建一个并行执行线路。
合并 —— 所有从并行网关拆分并执行完成的线路均在此等候,直到所有的线路都执行完成才继续向下执行。
3.包容网关 (+) —— 可以同时执行多条线路,也可以在网关上设置条件
拆分 —— 计算每条线路上的表达式,当表达式计算结果为true时,创建一个并行线路并继续执行
合并 —— 所有从并行网关拆分并执行完成的线路均在此等候,直到所有的线路都执行完成才继续向下执行。
4.事件网关 (+)
—— 专门为中间捕获事件设置的,允许设置多个输出流指向多个不同的中间捕获事件。当流程执行到事件网关后,流程处于等待状态,需要等待抛出事件才能将等待状态转换为活动状态。
2.1.5.4 流向符号 Flow
2.2 Activiti数据表介绍
详细属性见:https://blog.csdn.net/x_u_xiang/article/details/113391431
2.2.1通用数据表(act_ge_…)
2.2.2 流程定义表(act_re_…)
2.2.3 运行实例表(act_ru_…)
2.2.4 历史流程表(act_hi_…)
2.2.5 其它表
3. Activiti使用步骤
3.1部署Activiti
即业务系统集成Activiti。
3.2流程定义
使用流程建模工具(IDEA:actiBPM)定义业务流程(.bpmn文件),.bpmn通过编辑文件打开就是xml文件,流程原理就是通过读取xml文件实现流程控制。
3.3流程定义部署
即使用Activiti提供的API把定义的流程永久化存储起来(Activiti把流程存储在数据库中)。
3.4启动流程实例
流程实例也叫:ProcessInstance。
启动一个流程实例标识开始一次业务流程的运转。
3.5用户查询待办任务(Task)
通过Activiti查询用户名下的任务状况。
3.6用户办理任务
用户办理名下的任务。
3.7流程结束
当任务没有下一个任务节点了,流程实例执行结束。
二、Activiti入门demo
1.开发环境
(1)JDK1.8及以上
(2)Mysql5及以上
(3)Tomcat8.5及以上
(4)java开发工具
(5)Activiti7.0.0Beta1 默认支持Spring5
2.数据库准备
activiti支持的数据库(图中版本为支持的最低版本):
3. activiti7入门demo搭建
3.1 创建maven项目,引入依赖,编写log4j配置文件
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.itheima</groupId>
<artifactId>activiti01</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- activiti 的相关包 mysql的驱动包 mybatis log4j 数据库链接池-->
<properties>
<slf4j.version>1.6.6</slf4j.version>
<log4j.version>1.2.12</log4j.version>
<activiti.version>7.0.0.Beta1</activiti.version>
</properties>
<dependencies>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-engine</artifactId>
<version>${
activiti.version}</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring</artifactId>
<version>${
activiti.version}</version>
</dependency>
<!-- bpmn 模型处理 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-model</artifactId>
<version>${
activiti.version}</version>
</dependency>
<!-- bpmn 转换 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-converter</artifactId>
<version>${
activiti.version}</version>
</dependency>
<!-- bpmn json数据转换 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-json-converter</artifactId>
<version>${
activiti.version}</version>
</dependency>
<!-- bpmn 布局 -->
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-bpmn-layout</artifactId>
<version>${
activiti.version}</version>
</dependency>
<!-- activiti 云支持 -->
<dependency>
<groupId>org.activiti.cloud</groupId>
<artifactId>activiti-cloud-services-api</artifactId>
<version>${
activiti.version}</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.40</version>
</dependency