一、什么是工作流?
工作流:指业务过程的部分或整体在计算机应用环境下的自动化。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分,后者是普遍研究一个群体如何在计算机的帮助下实现协同工作的。
工作流主要解决的主要问题是:为了实现某个业务,利用计算机在多个参与者之间按照预定规则自动传递文档,信息或任务。
工作流管理联盟(WFMC)对工作流给出定义为:工作流是指一类能够完全自动执行的经营过程,根据一系列过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。
Activiti
Activiti也是一种工作流引擎,activiti可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN进行定义,业务流程按照预先定义的流程执行,实现了系统的流程由activiti进行管理,减少业务系统变更进行系统升级改造的工作量,从而提高系统的健壮性,同时减少系统开发维护成本。
BPMN(Business Process Model AndNotation)- 业务流程模型和符号 是由BPMI开发的一套标准的业务建模符号,使用BPMN提供的符号可以创建业务流程。
二、使用步骤
1、部署activiti
Activiti是一个工作流引擎(其实就是一堆jar包API),业务系统访问(操作)activiti的接口,就可以方便的操作流程相关数据,这样就可以把工作流环境与业务系统的环境集成在一起。
2、流程定义
.bpmn文件就是业务流程定义文件,通过xml定义业务流程
3、流程定义部署
activiti部署业务流程定义(.bpmn文件)
activiti执行把流程定义内容存储在数据库中
4、启动一个流程实例
5、用户查询代办任务(task)
6、用户办理任务
7、流程结束
一、导入依赖
<!-- 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>
调用activiti的工具类,生成activiti需要的数据库表。
直接使用activiti提供的工具类processEngines,会默认读取classpath下的activiti.cfg.xml文件,读取其中数据库配置,创建processEngine,在创建ProcessEngine时会自动创建表。
二、生成acitivti需要的数据库表
//创建
ProcessEngine processEngine=configuration.buildProcessEngine();
processEngine.close();
三、xml文件配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/contex
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 默认id对应的值 为processEngineConfiguration -->
<!-- processEngine Activiti的流程引擎 -->
<bean id="processEngineConfiguration"
class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration">
<property name="jdbcDriver" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql:///activiti"/>
<property name="jdbcUsername" value="root"/>
<property name="jdbcPassword" value="root"/>
<!-- activiti数据库表处理策略 -->
<property name="databaseSchemaUpdate" value="true"/>
</bean>
</beans>
四、表结构介绍
act_re:“RE”表示repository。这个前缀的表包含了流程定义和流程静态资源(图片,规则,等等);
act_ru:“RU”表示runtime,这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据,Activiti只在流程实例执行过程中保存这些数据,结束时会删除记录。
act_hi:“HI”表示history,这些表包含历史数据,比如历史流程实例,变量,任务等
act-Ge:“GE”表示general,通用数据,用于不同场景下;
五、相关表
act_evt_log
act_ge_bytearray:通用的流程定义和流程资源,用来保存部署文件的大文本数据
保存流程定义图片和xml。Serializable(序列化)的变量,即保存多有二进制数据,特别注意类路径部署时候,不要把svn等隐藏文件或者其他流程无关的文件也一起部署在该表中,会造成一些错误(可能导致流程定义无法删除)。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mgy3UMB3-1671076756330)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202091034497.png)]](https://img-blog.csdnimg.cn/74fe828547e74dee8c66c1eab2609031.png)
act_ge_property:系统相关属性。属性关系表。存储这个流程引擎级别的数据。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LLwDrVjx-1671076756331)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202091440069.png)]](https://img-blog.csdnimg.cn/e6e26b34a3c14e6e86ac2069436ed5ee.png)
act_hi_actinst:历史节点表,历史活动信息。这里记录流程流转过的所有节点,与hi_taskinst不同的是,taskinst只记录usertask内容。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KmM4T5c4-1671076756332)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202092153054.png)]](https://img-blog.csdnimg.cn/31cf9fe9d2d340058aa33b6767e4176b.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nWEdN9sS-1671076756332)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202092217404.png)]](https://img-blog.csdnimg.cn/3c3c0b8928dc40698499fc97af33208f.png)
act_hi_attachment:历史的流程附件信息
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NHnEZPAI-1671076756332)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202092513019.png)]](https://img-blog.csdnimg.cn/ec56da87bd89495e809318a780e0963c.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MfIu2JFt-1671076756333)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202092531321.png)]](https://img-blog.csdnimg.cn/bb3d96693c67402392b944508a90538d.png)
act_hi_comment:历史审批意见表
用于保存流程审核的批注信息。一般我们审批任务时,都会填写审批意见、审批时间、审批人等信息
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qgCEnzTF-1671076756333)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202092916698.png)]](https://img-blog.csdnimg.cn/a23bbe5b3feb4375b9634f6201c1edcd.png)
type_:意见类型记录,为comment时为处理意见,类型:event(事件),comment(意见)
action:行为类型,为addcomment时,为处理意见
message:处理意见,用于存放流程产生的信息,比如审批意见
full_msg:全部信息。
act_hi_detail:历史详细信息
act_hi_identitylink:历史流程人员表,任务参与者数据表,主要存储历史节点参与者的信息。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d9u09VC0-1671076756333)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202094004778.png)]](https://img-blog.csdnimg.cn/0ad12578c224469587d14998093f6666.png)
act_hi_procinst:历史流程实例信息(核心表)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-liLiBqBR-1671076756334)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202094452814.png)]](https://img-blog.csdnimg.cn/98fbe71eaabe420bb42df6e5b55a9034.png)
act_hi_taskinst:历史任务流程实例信息
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wFw9L8HM-1671076756334)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202094524994.png)]](https://img-blog.csdnimg.cn/d5c2be5d376a4764ae88d477f59ac882.png)
act_hi_varinst:历史流程运行中的变量信息
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xqJhff0H-1671076756334)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202095002924.png)]](https://img-blog.csdnimg.cn/92b43286595d4fc5b29fb6b34eaf5977.png)
act_id_group:用户组表,用来存储用户组信息
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xVQUzGXC-1671076756335)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202095236896.png)]](https://img-blog.csdnimg.cn/57b5354345cd42e2bfbefdc632203e02.png)
act_id_info:用户扩展信息表
act_id_membership:用户用户组关联表,用来保存用户的分组信息
act_id_user:用户信息表
act_procdef_info:
act_re_deployment:部署信息表,用来存储部署时需要持久化保存下来的信息
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WFh7ljXR-1671076756335)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202095910263.png)]](https://img-blog.csdnimg.cn/8489f803ef2743b2a47b8bc057e44b17.png)
act_re_model:流程设计模型表,创建流程的设计模型时,保存在该数据表中。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LE0vYLqi-1671076756335)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202100410558.png)]](https://img-blog.csdnimg.cn/42736507d2484a679944fbd948e0a63b.png)
act_re_procdef:流程定义:解析表,
流程解析表,解析成功了,在该表中保存一条记录。业务流程定义数据表。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OlJwlGUZ-1671076756336)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202102624657.png)]](https://img-blog.csdnimg.cn/3435163923034cbbb9de0881b74399c3.png)
act_ru_deadletter_job
act_ru_event-subscr:运行时事件
act_ru_execution:运行时流程创建实例,核心,我的代办任务查询表
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGbxyHW9-1671076756336)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202103500771.png)]](https://img-blog.csdnimg.cn/b7932afc498c4ddf868c398e0c10c72b.png)
act_ru_identitylink:运行时用户身份联系,主要存储当前节点参与者的信息,任务参与者数据表。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SdGmYp7t-1671076756336)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202103625887.png)]](https://img-blog.csdnimg.cn/7b129744a65c403e93ad40ad8d1d832b.png)
act_ru_job:运行中的任务,运行时定时任务数据表
act_ru_task:运行时任务数据表,(执行中实时任务)代办任务查询表
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M7FNWJdi-1671076756336)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202104541399.png)]](https://img-blog.csdnimg.cn/2533a6a3df38435aa68685036da84ffb.png)
act_ru_timer_job
act_ru_variable:运行时流程变量数据表
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m6kRti0u-1671076756337)(C:\Users\28344\AppData\Roaming\Typora\typora-user-images\image-20221202104812010.png)]](https://img-blog.csdnimg.cn/2755b0baf7c2449f95a50fc92d07f4dd.png)
六、流程引擎配置类
流程的引擎配置类:(ProcessEngineConfiguration),通过ProcessEngineConfiguration可以创建工作流引擎ProcessEngine,常见的方法如下两种:
1、StandaloneProcessEngineConfiguration
使用StandaloneProcessEngineConfigurationActiviti可以单独运行,来创建ProcessEngine,Activiti会自己处理事务。配置文件方式:通常在activiti.cfg.xml配置文件中定义一个id为 processEngineConfiguration 的bean,见环境搭建模块,就是使用这种方式进行配置的。
2、SpringProcessEngineConfiguration
通过org.activiti.spring.SpringProcessEngineConfiguration 与Spring整合。
七、Service服务接口
| service名称 | service作用 | 功能描述 |
|---|---|---|
| RepositoryService | activiti的资源管理类 | activiti的资源管理类,提供了管理和控制流程发布包和流程定义的操作。使用工作流建模工具设计的业务流程图需要使用此service将流程定义文件的内容部署到计算机 |
| RuntimeService | activiti的流程运行管理类 | Activiti的流程运行管理类,可以从这个类中获取很多关于流程执行相关的信息 |
| TaskService | activiti的任务管理类 | Activiti的任务管理类,可以这个类中获取任务的信息 |
| HistoryService | activiti的历史管理类 | activiti的历史管理类,可以查询历史信息,执行流程时,引擎会保存很多数据,比如获取实例启动时间,任务的参与者,完成任务的时间,每个实例的执行路径,这个服务主要通过查询功能来获得这些数据。 |
| ManagerService | activiti的引擎管理类 | activiti的引擎管理类,提供了对activiti流程引擎的管理和维护功能,这些功能不能在工作驱动的应用程序中使用,主要对于activiti系统的日常维护。 |




![【GO】 K8s 管理系统项目[API部分--Deployment]](https://img-blog.csdnimg.cn/c25de7f500664a7a82e9c567a04c2d57.png)



![[附源码]Node.js计算机毕业设计服装创意定制管理系统Express](https://img-blog.csdnimg.cn/8b11594b51f14a1e87280eefef888051.png)










