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.mzph.cn/pingmian/9971.shtml

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

相关文章

java发送请求-二次开发-get请求json

这里有2个判断 如果param为空则对url发送请求 再继续判断有值时&#xff0c;接口参数时json还是namevalue格式 因为json是带{,所以可以先写为param包含{}, 反之就是请求格式是url&#xff1f;param 请求json要带参数&#xff0c;所以需要使用setEntity方法&#xff0c; 最…

泰迪智能科技携手新乡学院开展“泰迪智能双创工作室”共建交流会

为深化校企合作&#xff0c;实现应用型人才培养目标。5月8日&#xff0c;广东泰迪智能科技股份有限公司河南分公司市场总监张京瑞到访新乡学院数学与统计学院参观交流&#xff0c;数学与统计学院院长赵国喜、副院长皮磊、张秦&#xff0c;教研室主任许寿方、姚广出席本次交流会…

arp icmp 等报文格式

ARP报文格式 ARP是一个独立的三层协议&#xff0c;所以ARP报文在向数据链路层传输时不需要经过IP协议的封装&#xff0c;而是直接生成自己的报文&#xff0c;其中包括ARP报头&#xff0c;到数据链路层后再由对应的数据链路层协议&#xff08;如以太网协议&#xff09;进行封装…

【Qt 学习笔记】Qt常用控件 | 多元素控件 | Table Widget的说明及介绍

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 多元素控件 | Table Widget的说明及介绍 文章编号&#…

美港通正规炒股市场美股证券市场地产股的春天 来了吗?

查查配地产股的春天 来了吗? 美港通证券以其专业的服务和较低的管理费用在市场中受到不少关注。该平台提供了实盘交易、止盈止损、仓位控制等功能,旨在为投资者提供更为全面的投资体验。 昨天房地产行业的大事可真不少!早间,杭州宣布全面取消住房限购,不再审核购房资格。杭州…

Git详解之五:分布式Git

为了便于项目中的所有开发者分享代码&#xff0c;我们准备好了一台服务器存放远程 Git 仓库。经过前面几章的学习&#xff0c;我们已经学会了一些基本的本地工作流程中所需用到的命令。接下来&#xff0c;我们要学习下如何利用 Git 来组织和完成分布式工作流程。 特别是&#…

OpenCV使用 Kinect 和其他兼容 OpenNI 的深度传感器(75)

返回:OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:使用 OpenCV 创建视频(74) 下一篇 :OpenCV使用 Orbbec Astra 3D 相机(76) 目的&#xff1a;​ 通过 VideoCapture 类支持与 OpenNI 兼容的深度传感器&#xff08;Kinect、XtionPRO 等&#xff09;。…

【影片欣赏】【指环王】【魔戒:国王归来 The Lord of the Rings: The Return of the King】

往期魔戒博客见&#xff1a; 【影片欣赏】【指环王】【魔戒&#xff1a;护戒使者 The Lord of the Rings: The Fellowship of the Ring】 【影片欣赏】【指环王】【魔戒&#xff1a;双塔奇谋 The Lord of the Rings: The Two Towers】 2004年发行&#xff0c;Special Extend…

K8s源码分析(二)-K8s调度队列介绍

本文首发在个人博客上&#xff0c;欢迎来踩&#xff01; 本次分析参考的K8s版本是 文章目录 调度队列简介调度队列源代码分析队列初始化QueuedPodInfo元素介绍ActiveQ源代码介绍UnschedulableQ源代码介绍**BackoffQ**源代码介绍队列弹出待调度的Pod队列增加新的待调度的Podpod调…

IP定位技术在打击网络犯罪中的作用

随着互联网的普及和信息技术的发展&#xff0c;网络犯罪日益猖獗&#xff0c;给社会治安和个人财产安全带来了严重威胁。而IP定位技术的应用为打击网络犯罪提供了一种有效手段。IP数据云将探讨IP定位技术在打击网络犯罪中的作用及其意义。 1. IP定位技术的原理 IP&#xff08…

国产操作系统上使用HHDESK桌面运维工具 _ 统信UOS _ 麒麟

原文链接&#xff1a;国产操作系统上使用HHDESK桌面运维工具 | 统信UOS | 麒麟 Hello&#xff0c;大家好啊&#xff01;在多功能软件的帮助下&#xff0c;日常的计算机操作可以变得更加高效便捷。今天&#xff0c;我要向大家介绍的是HHDESK&#xff0c;这是一款功能丰富的工具&…

点云工具 CloudCompare 查看三维模型

CloudCompare 是一款三维点云&#xff08;Point Cloud&#xff09;处理软件&#xff0c;可以方便地使用计算法向量、优化法向量、泊松构网、滤波等功能。 工具下载地址&#xff1a;nullCloudCompare website entry pagehttps://cloudcompare.org/ github地址&#xff1a; GitH…

【JavaEE网络】用Form与Ajax构建HTTP请求

目录 通过 form 表单构造 HTTP 请求form 发送 GET 请求form 发送 POST 请求 通过 ajax 构造 HTTP 请求发送 GET 请求发送 POST 请求发送 application/json 数据封装 ajax 方法 通过 form 表单构造 HTTP 请求 form (表单) 是 HTML 中的一个常用标签. 可以用于给服务器发送 GET …

权限束缚术--权限提升你需要知道这些

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文主要对渗透测试中权限提升的一些基础知识进行整理 并不包含权限提升的具体操作 适合要入门权限提升的朋友 提权的重要性 我们在渗透网站时&#xff0c;我们往往会拿到一些权限&#xff0c;但是我们的权限有…

Mybatis之ResultMap

前言 select语句查询得到的结果集是一张二维表&#xff0c;水平方向上看是一个个字段&#xff0c;垂直方向上看是一条条记录。而Java是面向对象的程序设计语言&#xff0c;对象是根据类定义创建的&#xff0c;类之间的引用关系可以认为是嵌套的结构。在JDBC编程中&#xff0c;…

上位机图像处理和嵌入式模块部署(树莓派4b和进程监控)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 虽然软件开发的时候&#xff0c;我们总是希望软件不要发生bug、不要有闪退、甚至于说不要有内存泄漏&#xff0c;但这也只是我们自己的一厢情愿而已…

Android解放双手的利器之ViewBinding

文章目录 1. 背景2. ViewBinding是什么3. 开启ViewBinding功能4. 生成绑定类5. 使用ViewBinding5.1Activity 中使用5.2 Fragment 中使用5.3 ViewHolder 中使用 6. ViewBinding的优点7. 与 dataBinding 对比 1. 背景 写代码最繁琐的是什么&#xff1f;重复的机械操作。我们刚接…

JAVA 项目<果园之窗>_完结

目录 1、前言&#xff1a;2、视频展示&#xff1a;3、环境配置&#xff1a;4、工程代码&#xff1a;5、原理&#xff1a;6、原理补充&#xff1a;7、综上&#xff1a; 1、前言&#xff1a; 因为没有足够的时间这个项目用的是别人搭好的框架&#xff0c;在此基础上做调整并根据前…

【机器学习】线性回归:以房价预测为例

线性回归&#xff1a;揭秘房价预测的黑科技 一、引言二、线性回归概述三、房价预测实例数据收集与预处理特征选择与建模模型评估与优化 四、总结与展望 一、引言 在数字化时代&#xff0c;数据科学已成为推动社会进步的重要引擎。其中&#xff0c;线性回归作为数据科学中的基础…

【研发日记】Matlab/Simulink避坑指南(十二)——Initialize Function执行Bug

文章目录 前言 背景介绍 问题描述 分析排查 解决方案 总结归纳 前言 见《研发日记&#xff0c;Matlab/Simulink避坑指南(七)——数据溢出钳位Bug》 见《研发日记&#xff0c;Matlab/Simulink避坑指南(八)——else if分支结构Bug》 见《研发日记&#xff0c;Matlab/Simuli…