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.rhkb.cn/news/437362.html

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

相关文章

将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出

请设计一个算法,将给定的表达式树(二叉树)转换为等价的中缀表达式(通过括号反映操作符的计算次序)并输出。例如,当下列两棵表达式树作为算法输入时: 输出的中缀表达式分别为 (ab)∗(c∗(−d)) 和…

推送k8s镜像到阿里云服务器

1、服务打包 2、打包后进入Dockerfile的同级目录 运行 docker build -t 镜像名:镜像版本 . (这个点是当前目录的意思,不能忽略)例如 docker build -t trac:v1.0.4 .3、上传镜像到阿里云镜像服务 注意选择区域 例如: docker tag 70743d9bdba3 registr…

[C++] 剖析AVL树功能的实现原理

文章目录 引言AVL树的关键性质为什么选择AVL树? AVL树的结构节点对象的类 AVL树的插入检查是否为空树并处理根节点查询插入位置(非递归)插入节点并连接父节点更新平衡因子(在失去平衡的条件下进行旋转) 旋转旋转的原则…

计组复习笔记

计组笔记 汇编部分 通用寄存器(General Registers): AX (Accumulator): 用于累加运算,也是乘法和除法的默认寄存器。BX (Base Register): 可以用作一个基址寄存器,通常用于存放数据的基地址。CX (Counter Register): 通常用于循环…

【零散技术】Odoo PDF 打印问题问题合集

序言:时间是我们最宝贵的财富,珍惜手上的每个时分 Odoo PDF打印 是一个必备功能,但是总会遇到一些奇奇怪怪的问题,此帖仅做记录,方便查阅。 目录 1、样式丢失 2、部分结构丢失 3、没有中文字体 1、样式丢失 这种情况一般是由于 …

Redis: Sorted Set 底层算法的简单分析

概述 我们先看下 Shorted Set 有序集合的内部数据结构所谓有序集合,比如有个容器,容器里边都已经排好序了,那无非就是快速的查找和插入不管你是查找还是插入,肯定要确定那个位置最简单的办法就是从最开头开始,挨个比较…

查找与排序-插入排序

排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序…

2024年10月2日历史上的今天大事件早读

1683年10月2日 清朝康熙帝统一台湾 1869年10月2日 印度民族解放运动领袖甘地诞辰 1890年10月2日 中共创始人之一李达诞生 1895年10月2日 天津中西学堂(天津大学前身)开学 1901年10月2日 郑士良等发起惠州起义 1909年10月2日 京张铁路正式通车 1920…

LeetCode[中等] 238. 除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂…

java常用框架结构

1. Spring框架 特色:Spring框架就像是一个万能工具箱,提供了丰富的功能来满足开发者的各种需求。它支持面向切面编程(AOP)、依赖注入(DI)等特性,使得代码更加模块化和可维护。Spring还提供了对数…

calibre-web的翻译translations

calibre-web的翻译translations Windows安装calibre-web,Python-CSDN博客文章浏览阅读539次,点赞10次,收藏11次。pip install calibreweb报错:error: Microsoft Visual C 14.0 or greater is required. Get it with "Microso…

【QT 开发日志】QT 基础控件详解:按钮、文本框与标签的使用

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 博主简介 博主致力于嵌入式、Python、人工智能、C/C领域和各种前沿技术的优质博客分享,用最优质的内容带来最舒适的…

【C语言】数组(下)

6、二维数组的创建 6.1二维数组的概念 通过数组(上)介绍,我们学习了一维数组,数组的元素都是内置类型的,如果我们把一维数组作为数组的元素,这时就是二维数组,以此类推,如果把二维…

鸿蒙开发(NEXT/API 12)【状态查询与订阅】手机侧应用开发

注意 该接口的调用需要在开发者联盟申请设备基础信息权限与穿戴用户状态权限,穿戴用户状态权限还需获得用户授权。 实时查询穿戴设备可用空间、电量状态。订阅穿戴设备连接状态、低电量告警、用户心率告警。查询和订阅穿戴设备充电状态、佩戴状态、设备模式。 使…

《蓝桥杯算法入门》(C/C++、Java、Python三个版本)24年10月出版

推荐:《算法竞赛》,算法竞赛大全书,网购:京东 天猫  当当 文章目录 《蓝桥杯算法入门》内容简介本书读者对象作者简介联系与交流《蓝桥杯算法入门 C/C》版目录 《蓝桥杯算法入门 Java》版目录 《蓝桥杯算法入门 Python》版目录 …

调用飞书接口导入供应商bug

1、业务背景 财务这边大部分系统都是供应商项目,由于供应商的研发人员没有飞书项目的权限,涉及到供应商系统需求 财务这边都是通过多维表格进行bug的生命周期管理如图: 但多维表格没有跟飞书项目直接关联,测试组做bug统计的时候无…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30目录1. Proof Automation with Large Language Models概览:论文研究背景:技术挑战:如何破局…

成都睿明智科技有限公司赋能商家高效变现

在这个日新月异的数字时代,抖音电商正以不可阻挡之势崛起,成为众多品牌与商家竞相角逐的新战场。在这片充满机遇与挑战的蓝海中,成都睿明智科技有限公司如同一颗璀璨新星,凭借其专业的服务、创新的策略和敏锐的市场洞察&#xff0…

关联式容器:map和set

引言: 在计算机科学中,我们经常需要处理一系列具有关键字的元素,并希望对这些元素进行高效的查找、插入和删除操作。为了满足这些需求,我们可以使用BSTree来实现。BSTree作为一种基础的数据结构,它不仅能够帮助我们快…

基于 C# 的文本文件的编码识别

基于 C# 的文本文件的编码识别 前言一、有 BOM 文件头二、无 BOM 文件头三、简体中文汉字编码四、C# 程序对编码的识别1、文件选择按钮代码:2、获取文件编码,有 BOM 的文件识别3、获取文件编码,UTF8 无 BOM 文件的识别4、获取文件编码&#x…