activiti 工作流基本使用

Activiti 介绍

Activiti 是一个开源架构的工作流引擎,基于bpmn2.0 标准进行流程定义。其前身是JBPM,Activiti 通过嵌入到业务系统开发中进行使用。

官方是这样介绍 activiti的:

Activiti 是领先的轻量级、以 Java 为中心的开源 BPMN 引擎,支持现实世界的流程自动化需求。Activiti Cloud现在是新一代业务自动化平台,提供一组旨在在分布式基础架构上运行的云原生构建块。

Activiti的服务接口

Activiti 提供了 7 个服务接口,都通过 ProcessEngine 来获取,并且支持链式编程风格:

服务接口说明
RepositoryService提供一系列管理流程部署和流程定义的API。
RuntimeService在流程运行时对流程实例进行管理与控制
TaskService对流程任务进行管理,例如任务提醒、任务完成和创建任务等
IdentityService提供对流程角色数据进行管理的API,这些角色数据包括用户组、用户及它们之间的关系。
ManagementService提供对流程引擎进行管理和维护的服务。
HistoryService对流程的历史数据进行操作,包括查询、删除这些历史数据。
FormService表单服务,管理流程和任务相关的表单

Activiti 实战

该次的目的,主要是完成一个请假流程,请假流程如图所示:

引入依赖

因为5.x版本和7.x版本相差较大,这次分享的是5.x版本,其次因为5.x版本简单点

<dependency><groupId>org.activiti</groupId><artifactId>activiti-spring-boot-starter-basic</artifactId><version>5.23.0</version>
</dependency>

1 2 3 4 5

配置文件

注意两个配置项:database-schema-update、check-process-definitions

数据库表的更新或创建

database-schema-update 设置为TRUE,将会创建所需要的数据库表,首次建议设置为TRUE

生成的数据库表总共有28张,分为了5类

数据表说明
act_ge_ 通用数据表ge是general的缩写
act_hi_ 历史数据表hi是history的缩写,对应HistoryService接口
act_id_ 身份数据表id是identity的缩写,对应IdentityService接口
act_re_ 流程存储表re是repository的缩写,对应RepositoryService接口,存储流程部署和流程定义等静态数据
act_ru_ 运行时数据表ru是runtime的缩写,对应RuntimeService接口和TaskService接口,存储流程实例和用户任务等动态数据

流程的部署

自动部署

check-process-definitions: 设置为true,将会部署process/下所有流程,首次建议设置为TRUE

手动部署

需要自己写代码实现,通过读取资源文件进行部署:

  1. png文件和bpmn文件
  2. 通过 inputstream完成部署
  3. 通过读取zip文件流进行部署
  4. 通过读取bytes进行部署

整体的配置以及说明

  activiti:#    flase:       默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常。(生产环境常用)#    true:        activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建。(开发时常用)#    create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)。(单元测试常用)#    drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)。# todo 首次设置为true,将会创建所需要的表database-schema-update: false  #数据库更新策略# 自动部署验证设置:true-开启(默认)、false-关闭# todo 首次设置为true,将会部署process/下所有流程check-process-definitions: false#    指定activiti流程描述文件的前缀(即路径)process-definition-location-prefix: classpath*:process/# suffix 是一个String数组,表示描述文件的默认后缀名,默认以上两种。# process-definition-location-suffixes:# - **.bpmn# - **.bpmn20.xml#保存历史数据级别设置为full最高级别,便于历史数据的追溯#    none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。#    activity:级别高于none,保存流程实例与流程行为,其他数据不保存。#    audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。#    full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。history-level: full

idea 使用 BPMN 流程图

下载插件 

命名格式为 xxx.bpmn20.xml 即可在idea查看编辑流程

比较容易混淆的ID

ID说明
processDefinitionId是流程定义Id,在部署完成之后会产生;
processInstanceId是流程实例Id,启动流程的时候生成,可以通过流程定义Id来启动流程实例;
executionId

当流程中没有分支时,Execution等同于ProcessInstance,甚至连ID也相同;

当流程中存在分支(fork, parallel gateway),则在分支口会形成子Execution,在下一个gateway才会合并(joined)

activityId当前运行活动标识ID

学习案例:RuoYi-activiti: 基于Activiti6.0,集流程设计、流程部署、流程执行、任务办理、流程监控于一体的开源工作流开发平台。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/687563.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24数维杯ABC题思路已更新!!!!

24数维杯A题保姆级思路&#xff0b;配套代码&#xff0b;后续参考论文 简单麦麦https://www.jdmm.cc/file/2710639/ 24数维杯B题保姆级思路&#xff0b;可执行代码&#xff0b;后续参考论文 简单麦麦https://www.jdmm.cc/file/2710640/ 24数维杯C题保姆级思路&#xff0b;可执…

Kubernetes: 从零开始理解K8s架构

目录 一、简介 二、Kubernetes 架构原理 2.1 控制平面 2.2 Node 组件 2.3 Container Image 2.4 kubelet 2.5 Cluster 三、服务调用 四、总结 一、简介 Kubernetes 是一个开源的容器编排系统&#xff0c;用于自动化应用容器的部署、扩展和管理。它是Google基于Borg…

python中的数据可视化:二维直方图 hist2d()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 python中的数据可视化&#xff1a; 二维直方图 hist2d() 选择题 关于以下代码输出结果的说法中正确的是? import matplotlib.pyplot as plt import numpy as np x np.random.normal(0, 1, …

IQOO Neo7/7SE/PAD2解BL+完美root权限+LSPosed框架-可虚拟定位

QOO Neo7/Neo7SE/Pad/Pad2搭配的是天玑8200系列芯片&#xff0c;继810/920以后再次支持解锁BL&#xff0c;这给我们的玩机带来了很多可能。解锁BL有什么用途呢&#xff1f;最常见的就是获取root权限&#xff0c;刷入各种各种的magisk模块&#xff0c;使用自己喜欢的插件等&…

QT--5

1> 将网络聊天室重新实现一遍 服务器端 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ser new QTcpServer(this); }Widget::~Widget() {delete ui; }vo…

第七届精武杯部分wp

第一部分&#xff1a;计算机和手机取证 1.请综合分析计算机和手机检材&#xff0c;计算机最近一次登录的账户名是 答案&#xff1a;admin 创建虚拟机时直接给出了用户名 2. 请综合分析计算机和手机检材&#xff0c;计算机最近一次插入的USB存储设备串号是 答案&#xff1a…

【赠书活动第4期】《Rust编程与项目实战》

赠书活动 《Rust编程与项目实战》免费赠书 3 本&#xff0c; 收到赠书之后&#xff0c;写一篇 本书某一节内容 的学习博客文章。 可在本帖评论中表示参加&#xff0c;即可获得赠书&#xff0c;先到先得。学习心得博客链接&#xff0c;后面有空发上来。 赠书截止日期为送出3…

探寻高品质狗粮的性价比之选,福派斯鲜肉狗粮无疑是值得推荐的一款!

引言&#xff1a;在狗狗的健康成长道路上&#xff0c;狗粮作为其日常营养来源&#xff0c;其重要性不言而喻。然而&#xff0c;市面上狗粮品牌繁多&#xff0c;价格与质量各异&#xff0c;让养狗人士们在选择时颇为头疼。今天&#xff0c;我们将为大家深入剖析一款备受赞誉的狗…

ALV Color-颜色

目录 前言 实战 列颜色 行颜色 单元格颜色 前言 在ABAP ALV中&#xff0c;Color颜色设置是一种增强列表显示效果的重要手段&#xff0c;可以用来突出显示特定行、列或单元格&#xff0c;以吸引用户注意或传达数据的特定状态。 颜色设置中有优先级顺序&#xff0c;他们是单元格…

##13 如何在Python中优雅地使用异常处理

文章目录 引言1. 异常处理基础2. 处理多种异常3. 捕捉所有异常4. finally 语句5. 自定义异常结语参考链接 引言 在编程中&#xff0c;错误是在所难免的。Python提供了异常处理机制&#xff0c;允许程序在遇到错误时优雅地恢复。本文将介绍Python中异常处理的基本概念&#xff…

探索Baidu Comate智能编码助手的AI编程之旅

本文目录 目录 本文目录 前言 1.1 Baidu Comate智能编码助手概览 1.2 Baidu Comate适用场景 1.3 Baidu Comate安装步骤 1.4 代码编写与智能提示 1.5 试用感受分享 1.6 对Comate未来发展的期望 1.7 总结体验与收获 1.8 对AI编程未来的展望 前言 1.1Baidu Comate智…

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑低碳需求响应的碳捕集燃煤电厂配置-运行协同优化》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…