activiti 工作流基本使用

news2024/11/18 1:43:44

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.coloradmin.cn/o/1662539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【百家稷学】大语言模型核心算法原理与综合实践(北京信息科技大学实训)...

继续咱们百家稷学专题&#xff0c;本次是有三AI在北京信息科技大学进行的培训。百家稷学专题的目标&#xff0c;是走进100所高校和企业进行学习与分享。 分享主题 本次分享是在北京信息科技大学&#xff0c;面向全校学生报名&#xff0c;主题是《大语言模型核心算法原理与综合实…

HaDoop Hive

目录 1.VMware 的配置 2.JDK的部署 3.防火墙&#xff0c;SElinux&#xff0c;时间同步设置 4.云平台 5.阿里云 6.UCloud 7.Hadoop理论 7.1 Hadoop理论 7.2 VMware Hadoop实践 7.3集群部署常见问题解决 7.4 云服务器上 Hadoop实践 7.5 HDFS 的 shell 7.6…

Vitis HLS 学习笔记--理解串流Stream(3)

目录 1. 简介 2. 综合报告的差别 2.1 包含 do-while 2.2 不包含 do-while 2.3 报告差异分析 3. 总结 1. 简介 针对《Vitis HLS 学习笔记--理解串流Stream(2)-CSDN博客》博文的内容&#xff0c;做进一步说明。 2. 综合报告的差别 2.1 包含 do-while Performance & …

Gltf.Export不可用解决办法

报错信息 在代码里面如果我们希望在runtime的时候导出GLTF&#xff0c;我们可以使用到FastGltf的export功能&#xff0c;但是当我们在代码里面使用的时候&#xff0c;却发现报错&#xff1a; error CS0234: The type or namespace name Export does not exist in the namespac…

Kafka应用Demo:生产者自定义消息分区方法

背景 没有设置消息键时Kafka默认的分区算法是轮循&#xff0c;设置了消息键将按消息键的hashcode计算分区值。这种方法可以保证未设置消息键时各分区负载均衡。也可以保证设置消息键后的消息放到同一个分区发送&#xff0c;以保证消息按顺序消费。 但在某些业务场景下&#xff…

闭散列哈希表

一、什么是 哈希 &#xff1f; 1.1 哈希概念 与 哈希冲突 在正式介绍闭散列哈希之前&#xff0c;我们需要明确 哈希 的概念。 哈希 &#xff1a;构造一种数据存储结构&#xff0c;通过函数 HashFunc() &#xff0c;使 元素的存储位置 与 其对应的键值 建立一一映射关系&…

Qt Excel读写 - QXlsx读取Excel文件显示到QTableWidget

Qt Excel读写 - QXlsx读取Excel文件显示到QTableWidget 引言一、设计思路二、核心源码三、其他参考链接 引言 QXlsx官方显示的例子中&#xff0c;有一个XlsxFactory可以Load xlsx file and display on Qt widgets.但是其包含商业许可…自己写了一个简化版本&#xff1a;可以读取…

深度学习--生成对抗网络GAN

GAN简介 让我们先来简单了解一下GAN GAN的全称是Generative Adversarial Networks&#xff0c;中文称为“生成对抗网络”&#xff0c;是一种在深度学习领域广泛使用的无监督学习方法。 GAN主要由两部分组成&#xff1a;生成器和判别器。生成器的目标是尽可能地生成真实的样本数…

深度学习之前馈神经网络

1.导入常用工具包 #在终端中输入以下命令就可以安装工具包 pip install numpy pip install pandas Pip install matplotlib注&#xff1a; numpy是科学计算基础包 pandas能方便处理结构化数据和函数 matplotlib主要用于绘制图表。 #导包的代码&#xff1a; import numpy as n…

java对象互换工具类

1:将Object类型转成json字符串 /*** 将对象转为字符串* param obj* return*/public static String toString(Object obj) {if(obj null) {return null;}if ("".equals(obj.toString())) {return null;}if (obj instanceof String) {return obj.toString();}try {Ob…

c#教程——索引器

前言&#xff1a; 索引器&#xff08;Indexer&#xff09;可以像操作数组一样来访问对象的元素。它允许你使用索引来访问对象中的元素&#xff0c;就像使用数组索引一样。在C#中&#xff0c;索引器的定义方式类似于属性&#xff0c;但具有类似数组的访问方式。 索引器&#x…

2010-2030年GHS-POP数据集下载

扫描文末二维码&#xff0c;关注微信公众号&#xff1a;ThsPool 后台回复 g008&#xff0c;领取 2010-2030年100m分辨率GHS-POP 数据集 &#x1f4ca; GHS Population Grid (R2023)&#xff1a;全球人口分布的精准视图与深度应用 &#x1f310; 在全球化和快速城市化的今天&am…

2024-05-10 Ubuntu上面使用libyuv,用于转换、缩放、旋转和其他操作YUV图像数据,测试实例使用I420ToRGB24

一、简介&#xff1a;libyuv 最初是由Google开发的&#xff0c;主要是为了支持WebRTC项目中的视频处理需求。用于处理YUV格式图像数据的开源库。它提供了一系列的函数&#xff0c;用于转换、缩放、旋转和其他操作YUV图像数据。 二、执行下面的命令下载和安装libyuv。 git clo…

【全开源】JAVA台球助教台球教练多端系统源码支持微信小程序+微信公众号+H5+APP

功能介绍 球厅端&#xff1a;球厅认证、教练人数、教练的位置记录、助教申请、我的项目、签到记录、我的钱包、数据统计 教练端&#xff1a;我的页面&#xff0c;数据统计、订单详情、保证金、实名认证、服务管理、紧急求助、签到功能 用户端&#xff1a;精准分类、我的助教…

FonePaw Data Recovery for Mac:轻松恢复丢失数据

FonePaw Data Recovery for Mac是一款功能强大的数据恢复软件&#xff0c;专为Mac用户设计&#xff0c;帮助用户轻松恢复因各种原因丢失的数据。该软件支持从硬盘驱动器、存储卡、闪存驱动器等存储介质中恢复丢失或删除的文件&#xff0c;包括照片、视频、文档、电子邮件、音频…

2024最新版付费进群系统源码全开源

源码说明&#xff1a; 下 载 地 址 &#xff1a; runruncode.com/php/19758.html 2024最新修复版独立付费进群系统源码全开源&#xff0c;基于ThinkPHP框架开发。 1、修复SQL表 2、修复支付文件 3、修复支付图标不显示 4、修复定位、分销逻辑、抽成逻辑 5、新增支持源支…

AVL树的旋转

目录 1.平衡因子 2.旋转 a.节点定义 b.插入 插入 平衡因子更新 旋转 左单旋 右单旋 右左双旋 左右双旋 3.AVL树的验证 1.平衡因子 我们知道搜索二叉树有缺陷&#xff0c;就是不平衡&#xff0c;比如下面的树 什么是搜索树的平衡&#xff1f;就是每个节点的左右子树的…

Web实时通信的学习之旅:轮询、WebSocket、SSE的区别以及优缺点

文章目录 一、通信机制1、轮询1.1、短轮询1.2、长轮询 2、Websocket3、Server-Sent Events 二、区别1、连接方式2、协议3、兼容性4、安全性5、优缺点5.1、WebSocket 的优点&#xff1a;5.2、WebSocket 的缺点&#xff1a;5.3、SSE 的优点&#xff1a;5.4、SSE 的缺点&#xff1…

刷代码随想录有感(62):修建二叉搜索树

题干&#xff1a; 代码&#xff1a; class Solution { public:TreeNode* traversal(TreeNode* root, int low, int high){if(root NULL)return NULL;if(root->val < low)return traversal(root->right, low, high);if(root->val > high)return traversal(ro…

新版文件同步工具(Python编写,其中同时加入了多进程计算MD5、多线程复制大文件、多协程复制小文件、彩色输出消息、日志功能)

两个月前&#xff0c;接到一个粉丝的要求&#xff0c;说希望在我之前编写的一个python编写的文件同步脚本(Python编写的简易文件同步工具(已解决大文件同步时内存溢出问题)https://blog.csdn.net/donglxd/article/details/131225175)上加入多线程复制文件的功能&#xff0c;前段…