Activiti7 工作流引擎学习

目录

一. 什么是 Activiti 工作流引擎

二. Activiti 流程创建步骤

三. Activiti 数据库表含义

四. BPMN 建模语言

五. Activiti 使用步骤

六. 流程定义与流程实例

一. 什么是 Activiti 工作流引擎

        Activiti 是一个开源的工作流引擎,用于业务流程管理(BPM)。它允许开发者以 BPMN 2.0 标准定义业务流程,通过 Activiti 的 API 将流程定义内容存储起来,并在 Activiti 执行过程中可以查询定义的内容。Activiti 执行把流程定义内容存储在数据库中,使得业务系统中的复杂业务流程可以被 Activiti 管理,从而提高系统的健壮性和减少系统开发维护成本。

二. Activiti 流程创建步骤

  1. 流程定义:使用 Activiti 的流程建模工具(如 Activiti Designer)定义业务流程,并生成 BPMN 文件。
  2. 流程部署:将 BPMN 文件部署到 Activiti 引擎中,Activiti 会将流程定义内容存储在数据库中。
  3. 流程实例:启动一个流程实例表示开始一次业务流程的运行,每个流程实例的执行互相不影响。
  4. 任务管理:用户可以通过 Activiti 查询待办任务并办理任务。
  5. 流程结束:当任务办理完成且没有下一个任务节点时,流程实例完成。

三. Activiti 数据库表含义

        Activiti 支持多种数据库,如 MySQL、Oracle、PostgreSQL 等。它通过创建多个表来存储流程定义、流程实例、任务、历史数据等信息。这些表通常以 ACT_ 为前缀,并且分为几个类别(25张表)

  • ACT_RE_*存储流程定义和流程静态资源
  • ACT_RU_*存储流程实例、任务、变量等运行时数据
  • ACT_HI_*存储历史数据
  • ACT_GE_*通用数据

四. BPMN 建模语言

        BPMN(Business Process Model and Notation)是一种业务流程建模符号,它是一种图形化的语言,用于设计、执行、监控、改进和讨论业务流程。BPMN 2.0 是当前的国际标准,由 OMG(Object Management Group)组织维护。

        整个BPMN是用一组符号来描述业务流程中发生的各种事件的。BPMN通过在这些符号事件之间连线来描述一个完整的务流程。

如图所示

一个简单的请假流程图

五. Activiti 使用步骤

通常使用Activiti时包含以下几个步骤:

  1. 定义流程:使用Activiti的建模工具定义业务流程.bpmn文件。
  2. 部署流程定义:使用Activiti提供的API把流程定义内容存储起来,在Acitivti执行过程汇总可以査询定义的内容,Activit是通过数据库来存储业务流程的。
  3. 启动流程实例:流程实例也叫Processinstance。启动一个流程实例表示开始一次业务流程的运作。例如员工提交请假申请后,就可以开启一个流程实例,从而推动后续的审批等操作。
  4. 用户查询待办任务(task):因为现在系统的业务流程都交给了activiti管理,通过activiti就可以查询当前流程执行到哪个步骤。当前用户需要办理哪些任务也就同样可以由activiti帮我们管理,开发人员不需要自己编写sql语句进行査询了。
  5. 用户办理任务:用户查询到自己的待办任务后,就可以办理某个业务,如果这个业务办理完成还需要其他用户办理,就可以由activiti帮我们把工作流程往后面的步骤推动。
  6. 流程结束:当任务办理完成没有下一个任务节点后,这个流程实例就执行完成了。

六. 流程定义与流程实例

        流程定义 ProcessDefinition 和流程实例 Processinstance是Activiti中非常重要的两个概念,他们的关系其实类似于JAVA中类和对象的概埝。
        流程定义ProcessDefinition是以BPMN文件定义的一个工作流程,是一组工作规范。例如我们之前定义的请假流程。流程实例Processinstance则是指一个具体的业务流程。例如某个员工发起一次请假,就会实例化一个请假的流程实例,并且每个不同的流程实例之间是互不影响的。
在后台的表结构中,有很多张表都包含了流程定义ProcessDefinetion和流程实例Processinstance的字段。流程定义的字段通常是PROC DEF ID,而流程实例的字段通常是PROC INST ID。

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

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

相关文章

第二弹:面向对象编程中的类与对象

文章目录 面向对象编程中的类与对象1. 类与对象的定义1.1 类和对象的概念1.2 类的基本定义 2. 类的封装2.1 类的封装语法2.2 类成员访问权限2.3 struct和class的区别2.4 类封装与成员函数定义分离 3. 类对象的创建与销毁3.1 静态与动态对象的创建3.2 对象的销毁 4. 构造函数和析…

深入解析 ConcurrentHashMap:从 JDK 1.7 到 JDK 1.8

✨探索Java基础 ConcurrentHashMap✨ 引言 ConcurrentHashMap 是 Java 中一个线程安全的高效 Map 集合。它在多线程环境下提供了高性能的数据访问和修改能力。本文将详细探讨 ConcurrentHashMap 在 JDK 1.7 和 JDK 1.8 中的不同实现方式,以及它们各自的优缺点。 …

(笔记)第三期书生·浦语大模型实战营(十一卷王场)--书生入门岛通关第2关Python 基础知识

学员闯关手册:https://aicarrier.feishu.cn/wiki/ZcgkwqteZi9s4ZkYr0Gcayg1n1g?open_in_browsertrue 课程视频:https://www.bilibili.com/video/BV1mS421X7h4/ 课程文档:https://github.com/InternLM/Tutorial/tree/camp3/docs/L0/Python 关…

如何使用ssm实现基于JSP的高校听课评价系统

TOC ssm753基于JSP的高校听课评价系统jsp 绪论 1.1 研究背景 现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生活不仅变得更加地便利化,也让时…

【LeetCode: 1870. 准时到达的列车最小时速 | 二分】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

各种饺子的做法

【羊肉馅水饺】 材料:羊肉1000克、洋葱2个、香油3汤匙、盐适量、姜2片、料酒1汤匙、白胡椒粉、十三香1茶匙、 做法: 1.把羊肉剁成肉馅,羊肉选用带一些肥肉的,味道比较香,如果羊肉比较瘦,可以放一些猪的肥肉一起剁成馅…

电商店铺多开自动回复软件

在电商平台上开设多个店铺,即店铺多开,是一种扩展业务和增加销售额的策略。然而,店铺多开需要谨慎规划和执行,以避免违反平台规定和管理上的混乱。以下是如何实现店铺多开的详细步骤和注意事项。 1. 确定多开目标 在决定多开店铺…

4个顶级的大模型推理引擎

LLM 在文本生成应用中表现出色,例如具有高理解度和流畅度的聊天和代码完成模型。然而,它们的庞大规模也给推理带来了挑战。基本推理速度很慢,因为 LLM 会逐个生成文本标记,需要对每个下一个标记进行重复调用。随着输入序列的增长&…

【CKA】七、七层负载-Ingress应用

7、七层负载-Ingress应用 1. 考题内容: 2. 答题思路: 1、要先查到集群中使用的ingressclass 2、编写yaml 我考的题只是把 hi 服务换成了 hello,其他都一模一样 3. 官网地址: https://kubernetes.io/zh-cn/docs/concepts/serv…

Pytorch实现RNN实验

一、实验要求 用 Pytorch 模块的 RNN 实现生成唐诗。要求给定一个字能够生成一首唐诗。 二、实验目的 理解循环神经网络(RNN)的基本原理:通过构建一个基于RNN的诗歌生成模型,学会RNN是如何处理序列数据的,以及如何在…

LabVIEW提高开发效率技巧----快速实现原型和测试

在LabVIEW开发中,DAQ助手(DAQ Assistant)和Express VI为快速构建原型和测试功能提供了极大的便利,特别适合于简单系统的开发和早期验证阶段。 DAQ助手:是一种可视化配置工具,通过图形界面轻松设置和管理数据…

HISTCITE分析进阶

不可否认histcite是一个很好的文献分析的工具,他能很好的找到最重要的那几篇文章,同时也能找到研究的发文趋势、研究机构和著名的研究学者等。但是它是一个很老的软件,因而很多东西都没能跟上下载的分析。我在使用过程中,尝试做一些改变使其更好用,同时也做一些记录。 1.…

C语言数组和指针笔试题(四)

目录 二维数组例题一例题二例题三例题四例题五例题六例题七例题八例题九例题十例题十一 结果 感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 🐒🐒🐒个人主页 🥸🥸🥸C语言 🐿️…

vulnhub-Matrix 1靶机

vulnhub:https://www.vulnhub.com/entry/matrix-1,259/ 导入靶机,扫描IP 靶机在192.168.81.6,扫描端口 存在三个端口,有两个都是http服务,访问 80端口的网页没什么信息,31337的网页元素里有注释 ZWNobyAi…

加密与安全_HTOP 一次性密码生成算法

文章目录 HOTP 的基础原理HOTP 的工作流程HOTP 的应用场景HOTP 的安全性安全性增强措施Code生成HOTP可配置项校验HOTP可拓展功能计数器(counter)计数器在客户端和服务端的作用计数器的同步机制客户端和服务端中的计数器表现服务端如何处理计数器不同步计…

dubbo微服务

一.启动nacos和redis 1.虚拟机查看是否开启nacos和redis docker ps2.查看是否安装nacos和redis docker ps -a3.启动nacos和redis docker start nacos docker start redis-6379 docker ps二.创建三个idea的maven项目 1.第一个项目dubboapidemo 2.1.1向pom.xml里添加依赖 …

MES(软件)系统是什么?MES系统为何如此重要呢?

一、MES系统的定义与功能 MES系统是一套面向制造企业车间执行层的生产信息化管理系统,它涵盖了多种功能模块,包括但不限于: 订单管理:处理客户订单,确保生产需求与市场需求相匹配。生产调度:根据订单和生…

快乐数——双指针算法

题目链接 快乐数https://leetcode.cn/problems/happy-number/description/ 题目要求 样例 算法原理 根据上述的题目分析,我们可以知道,当重复执行 x 的时候,数据会陷入到⼀个”循环“之中。 而”快慢指针“有⼀个特性,就是在⼀个…

英文网站建设意义

英文网站建设是一项至关重要的任务,对于企业和个人而言都具有巨大的战略意义。一个精心设计的英文网站不仅可以提升品牌形象,还能够为用户提供良好的体验,从而增加流量、促进业务发展。在进行英文网站建设时,有几个关键方面需要特…

[MAUI]数据绑定和MVVM:MVVM的属性验证

一、MVVM的属性验证案例 Toolkit.Mvvm框架中的ObservableValidator类,提供了属性验证功能,可以使用我们熟悉的验证特性对属性的值进行验证,并将错误属性提取和反馈给UI层。以下案例实现对UI层的姓名和年龄两个输入框,进行表单提交验证。实现效果如下所示 View<ContentP…