【工作流Activiti】Activiti的使用

news/2025/2/6 1:56:46/

1、数据库支持


Activiti 运行必须要有数据库的支持,支持的数据库有:mysql、oracle、postgres、mssql、db2、h2

2、Activiti环境


我们直接在当前项目:guigu-oa-parent做Activiti入门讲解

2.1、引入依赖
<!--引入activiti的springboot启动器 -->
<dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter</artifactId><version>7.1.0.M6</version><exclusions>
<!--除去mybatis依赖:如果你的项目中无mybatis或者mybatisPlus依赖可不加--><exclusion><artifactId>mybatis</artifactId><groupId>org.mybatis</groupId></exclusion></exclusions>
</dependency>


说明:Activiti7与SpringBoot整合后,默认集成了SpringSecurity安全框架,Activiti框架会检查用户是否存在,否则会出现异常。

2.2、添加配置

数据源项目已经添加,只需要如下配置即可

spring:    activiti:#    false:默认,数据库表不变,但是如果版本不对或者缺失表会抛出异常(生产使用)#    true:表不存在,自动创建(开发使用)#    create_drop: 启动时创建,关闭时删除表(测试使用)#    drop_create: 启动时删除表,在创建表 (不需要手动关闭引擎)database-schema-update: true#监测历史表是否存在,activities7默认不开启历史表db-history-used: true#none:不保存任何历史数据,流程中这是最高效的#activity:只保存流程实例和流程行为#audit:除了activity,还保存全部的流程任务以及其属性,audit为history默认值#full:除了audit、还保存其他全部流程相关的细节数据,包括一些流程参数history-level: full#校验流程文件,默认校验resources下的process 文件夹的流程文件check-process-definitions: true

2.3、启动项目

启动项目,即可生成项目数据库表

2.4、数据库表介绍

Activiti 的运行支持必须要有这 25 张表的支持,主要是在业务流程运行过程中,记录参与流程的用户主体,用户组信息,以及流程的定义,流程执行时的信息,和流程的历史信息等等

1、 表的命名规则和作用

观察创建的表,我们发现 Activiti 的表都以 act_ 开头,紧接着是表示表的用途的两个字母标识,也和 Activiti 所提供的服务的 API 对应:

ACT_RE:RE 表示 repository,这个前缀的表包含了流程定义和流程静态资源 (图片、规则、等等)
ACT_RU:RU 表示 runtime,这些表运行时,会包含流程实例、任务、变量、异步任务等流程业务进行中的数据。Activiti 只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。这样表就可以一直保持很小的体积,并且速度很快
ACT_HI:HI 表示 history,这些表包含一些历史数据,比如历史流程实例、变量、任务等等
ACT_GE:GE 表示 general,通用数据
2、Activiti 数据表介绍

3、Activiti常用Service服务接口


简单介绍一下各个 Service 的实现类:

RepositoryService
Activiti 的资源管理类,该服务负责部署流程定义,管理流程资源。在使用 Activiti 时,一开始需要先完成流程部署,即将使用建模工具设计的业务流程图通过 RepositoryService 进行部署

RuntimeService
Activiti 的流程运行管理类,用于开始一个新的流程实例,获取关于流程执行的相关信息。流程定义用于确定一个流程中的结构和各个节点间行为,而流程实例则是对应的流程定义的一个执行,可以理解为 Java 中类和对象的关系

TaskService
Activiti 的任务管理类,用于处理业务运行中的各种任务,例如查询分给用户或组的任务、创建新的任务、分配任务、确定和完成一个任务

HistoryService
Activiti 的历史管理类,可以查询历史信息。执行流程时,引擎会保存很多数据,比如流程实例启动时间、任务的参与者、完成任务的时间、每个流程实例的执行路径等等。这个服务主要通过查询功能来获得这些数据

ManagementService
Activiti 的引擎管理类,提供了对 Activiti 流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于 Activiti 系统的日常维护

4、流程设计工具


IDEA版本小于等于2019,可使用Activiti插件actiBPM,大于该版本的IDEA可使用Activiti BPMN visualizer插件绘制流程设计。

今天我们主角是:Activiti Modeler

Activiti Modeler 是 Activiti 官方提供的一款在线流程设计的前端插件,开发人员可以方便在线进行流程设计,保存流程模型,部署至流程定义等等,后续我们的项目也是集成Activiti Modeler绘制流程定义。

4.1、下载activiti-explorer

官网下载:Get started | Activiti

4.2、解压获取部署包

解压activiti-5.22.0.zip,在activiti-5.22.0\wars目录下获取activiti-explorer.war

4.3、部署activiti-explorer.war

将activiti-explorer.war放到tomcat部署目录,启动tomcat

4.4、访问activiti-explorer

http://localhost:8080/activiti-explorer

默认登录账号:kermit kermit

上面有很多功能,我们关注流程设计即可,如下图:

点击上图:流程 --> 新建模型 --> 输入模型名称(请假)--> 创建


 


http://www.ppmy.cn/news/1274966.html

相关文章

详解 Jeecg-boot 框架如何配置 elasticsearch

目录 一、下载安装 Elasticsearch 1、 地址&#xff1a;https://www.elastic.co/cn/downloads/elasticsearch 2、下载完成后&#xff0c;解压缩&#xff0c;进入config目录更改配置文件 3、 修改配置完成后&#xff0c;前往bin目录启动el 4、访问&#xff1a;localhost:92…

【经典LeetCode算法题目专栏分类】【第6期】二分查找系列:x的平方根、有效完全平方数、搜索二位矩阵、寻找旋转排序数组最小值

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; X的平方根 class Soluti…

面试算法61:和最小的k个数对

题目 给定两个递增排序的整数数组&#xff0c;从两个数组中各取一个数字u和v组成一个数对&#xff08;u&#xff0c;v&#xff09;&#xff0c;请找出和最小的k个数对。例如&#xff0c;输入两个数组[1&#xff0c;5&#xff0c;13&#xff0c;21]和[2&#xff0c;4&#xff0…

发布点云的c++代码实现

发布点云的C代码通常涉及使用特定的库或框架来处理点云数据&#xff0c;并通过一定的机制&#xff08;如消息传递系统&#xff09;将点云数据发送到其他软件组件或系统。以下是一个简单的示例&#xff0c;展示了如何使用PCL&#xff08;Point Cloud Library&#xff09;库和ROS…

正确的姿势完成Http请求

正确的姿势完成Http请求 URL有什么讲究1 URL中的特殊字符 URL有什么讲究 1 URL中的特殊字符 https://xxx/time?time2023-12-04 15:13:21上述请求会报错&#xff1a;java.io.IOException: Server returned HTTP response code: 400 for URL: 这是因为在URL中&#xff0c;空格…

如何压缩视频发邮件?帮你整理了几个必备的!

不同邮件附件上限大小有所不同&#xff0c;QQ邮箱的附件大小限制为2GB&#xff0c;这意味着用户可以发送最大为2GB的视频文件&#xff1b;Gmail邮箱的附件大小限制为25MB&#xff1b;163邮箱的附件大小限制为2GB&#xff0c;但是为了保证文件传输的成功率&#xff0c;建议最好不…

49.字母异位词分组

给你一个字符串数组&#xff0c;请你将字母异位词组合在一起。可以按任意顺序返回结果列表。 字母异位词是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,“tan”],[“…

HTML选择题试题——附答案

单选题 HTML的缩写是什么&#xff1f; A) Hyper Tool Markup LanguageB) Hyperlinks and Text Markup LanguageC) Hyper Text Markup LanguageD) Home Tool Markup Language 下列哪个标签用于定义文档的主体内容&#xff1f; A) <head>B) <body>C) <title>D)…