【工作流Activiti】Activiti的使用

2023-12-19

1、数据库支持


Activiti 运行必须要有数据库的支持,支持的数据库有:mysql、oracle、postgres、mssql、db2、h2

2、Activiti环境


我们直接在当前项目:guigu-oa-parent做Activiti入门讲解

2.1、引入依赖
<!--引入activiti的springboot启动器 -->
<dependency>
    <groupId>org.activiti</groupId>
    <artifactId>activiti-spring-boot-starter</artifactId>
    <version>7.1.0.M6</version>
    <exclusions>
<!--除去mybatis依赖:如果你的项目中无mybatis或者mybatisPlus依赖可不加-->
        <exclusion>
            <artifactId>mybatis</artifactId>
            <groupId>org.mybatis</groupId>
        </exclusion>
    </exclusions>
</dependency>


说明:Activiti7与SpringBoot整合后,默认集成了SpringSecurity安全框架,Activiti框架会检查用户是否存在,否则会出现异常。

2.2、添加配置

数据源项目已经添加,只需要如下配置即可

spring:    
    activiti:
      #    false:默认,数据库表不变,但是如果版本不对或者缺失表会抛出异常(生产使用)
      #    true:表不存在,自动创建(开发使用)
      #    create_drop: 启动时创建,关闭时删除表(测试使用)
      #    drop_create: 启动时删除表,在创建表 (不需要手动关闭引擎)
      database-schema-update: true
      #监测历史表是否存在,activities7默认不开启历史表
      db-history-used: true
      #none:不保存任何历史数据,流程中这是最高效的
      #activity:只保存流程实例和流程行为
      #audit:除了activity,还保存全部的流程任务以及其属性,audit为history默认值
      #full:除了audit、还保存其他全部流程相关的细节数据,包括一些流程参数
      history-level: full
      #校验流程文件,默认校验resources下的process 文件夹的流程文件
      check-process-definitions: true

2.3、启动项目

启动项目,即可生成项目数据库表

2.4、数据库表介绍

Activiti 的运行支持必须要有这 25 张表的支持,主要是在业务流程运行过程中,记录参与流程的用户主体,用户组信息,以及流程的定义,流程执行时的信息,和流程的历史信息等等

1、 表的命名规则和作用

观察创建的表,我们发现 Activiti 的表都以 act_ 开头,紧接着是表示表的用途的两个字母标识,也和 Activiti 所提供的服务的 API 对应:

ACT_RE:RE 表示 repository,这个前缀的表包含了流程定义和流程静态资源 (图片、规则、等等)
ACT_RU:RU 表示 runtime,这些表运行时,会包含流程实例、任务、变量、异步任务等流程业务进行中的数据。Activiti 只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。这样表就可以一直保持很小的体积,并且速度很快
ACT_HI:HI 表示 history,这些表包含一些历史数据,比如历史流程实例、变量、任务等等
ACT_GE:GE 表示 general,通用数据
2、Activiti 数据表介绍

3、Activiti常用Service服务接口


简单介绍一下各个 Service 的实现类:

RepositoryService
Activiti 的资源管理类,该服务负责部署流程定义,管理流程资源。在使用 Activiti 时,一开始需要先完成流程部署,即将使用建模工具设计的业务流程图通过 RepositoryService 进行部署

RuntimeService
Activiti 的流程运行管理类,用于开始一个新的流程实例,获取关于流程执行的相关信息。流程定义用于确定一个流程中的结构和各个节点间行为,而流程实例则是对应的流程定义的一个执行,可以理解为 Java 中类和对象的关系

TaskService
Activiti 的任务管理类,用于处理业务运行中的各种任务,例如查询分给用户或组的任务、创建新的任务、分配任务、确定和完成一个任务

HistoryService
Activiti 的历史管理类,可以查询历史信息。执行流程时,引擎会保存很多数据,比如流程实例启动时间、任务的参与者、完成任务的时间、每个流程实例的执行路径等等。这个服务主要通过查询功能来获得这些数据

ManagementService
Activiti 的引擎管理类,提供了对 Activiti 流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于 Activiti 系统的日常维护

4、流程设计工具


IDEA版本小于等于2019,可使用Activiti插件actiBPM,大于该版本的IDEA可使用Activiti BPMN visualizer插件绘制流程设计。

今天我们主角是:Activiti Modeler

Activiti Modeler 是 Activiti 官方提供的一款在线流程设计的前端插件,开发人员可以方便在线进行流程设计,保存流程模型,部署至流程定义等等,后续我们的项目也是集成Activiti Modeler绘制流程定义。

4.1、下载activiti-explorer

官网下载:Get started | Activiti

4.2、解压获取部署包

解压activiti-5.22.0.zip,在activiti-5.22.0\wars目录下获取activiti-explorer.war

4.3、部署activiti-explorer.war

将activiti-explorer.war放到tomcat部署目录,启动tomcat

4.4、访问activiti-explorer

http://localhost:8080/activiti-explorer

默认登录账号:kermit kermit

上面有很多功能,我们关注流程设计即可,如下图:

点击上图:流程 --> 新建模型 --> 输入模型名称(请假)--> 创建

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【工作流Activiti】Activiti的使用 的相关文章

  • SPNEGO 密码身份验证问题

    我已将我的应用程序配置为通过 SPNEGO 与 Websphere 使用 Kerberos 身份验证 这是详细信息 krb5 conf libdefaults default realm ABC MYCOMPANY COM default
  • java.lang.VerifyError:JVMVRFY012堆栈形状不一致;

    在 WAS 8 5 5 中部署 Maven 项目时出现以下错误 我在WAS中安装了JDK 1 6和1 7 错误500 org springframework web util NestedServletException 处理程序处理失败
  • 将构造函数作为参数传递给方法

    我是java新手 开始研究构造函数 我看到一些构造函数作为参数传递给方法的示例 请告诉我当构造函数作为参数传递给方法时会发生什么 或者建议我一些链接 我可以在其中获得有关使用构造函数的足够知识 根据您需要传递构造函数的目的 您可以考虑传递供
  • 在 Java 正则表达式中获取多个模式的重叠匹配

    我有同样的问题这个链接 https stackoverflow com questions 18751486 matching one string multiple times using regex in java 但有多种模式 我的正
  • 使类只能从特定类实例化

    假设我有 3 节课class1 class2 and class3 我怎样才能拥有它class1只能通过实例化class2 class1 object new class1 但不是 class3 或任何其他类 我认为它应该与修饰符一起使用
  • 最快的高斯模糊实现

    如何以最快的速度实施高斯模糊 http en wikipedia org wiki Gaussian blur算法 我要用Java来实现它 所以GPU http en wikipedia org wiki Graphics processi
  • 查询 MongoDB 集合中的字段。

    我正在尝试查询 mongodb 集合中的特定字段 这是我的代码和输出 Mongo m new Mongo DB db m getDB mydb DBCollection coll db getCollection student addin
  • 迭代函数可以调用自身吗?

    当观看下面的 MIT 6 001 课程视频时 讲师在 28 00 将此算法标记为迭代 但是 在 30 27 他说这个算法和实际的 递归 算法都是递归的 该函数正在使用基本情况调用自身 那么这次迭代情况如何 private int itera
  • 记录共享和映射的诊断上下文

    据我所知 其他人做了什么来解决 Commons Logging 项目 针对 NET 和 Java 不支持映射或嵌套诊断上下文这一事实 执行摘要 我们选择直接使用实现者日志框架 在我们的例子中为 log4j 长答案 您是否需要一个抽象日志框架
  • 以有效的方式从 Map 中删除多个键?

    我有一个Map
  • 在grails控制器中识别ajax请求或浏览器请求

    我正在开发一个使用大量ajax的grails应用程序 如果请求是ajax调用 那么它应该给出响应 这部分正在工作 但是如果我在浏览器中输入URL 它应该带我到主页 索引页面而不是请求的页面 下面是ajax调用的示例gsp代码
  • 在尝试使用 GPS 之前如何检查 GPS 是否已启用

    我有以下代码 但效果不好 因为有时 GPS 需要很长时间 我该如何执行以下操作 检查GPS是否启用 如果启用了 GPS 请使用 GPS 否则请使用网络提供商 如果 GPS 时间超过 30 秒 请使用网络 我可以使用时间或 Thread sl
  • 拆分/标记化/扫描字符串并注意引号

    Java中是否有默认 简单的方法来分割字符串 但要注意引号或其他符号 例如 给定以下文本 There s a man that live next door in my neighborhood and he gets me down Ob
  • C 与 C++ 中的 JNI 调用不同?

    所以我有以下使用 Java 本机接口的 C 代码 但是我想将其转换为 C 但不知道如何转换 include
  • 如何减去两个 XmlGregorianCalendar 对象来创建一个 Duration 对象?

    我想计算两个时间之间的差值XmlGregorianCalendar对象 从而创建一个Duration object 但我还没有找到执行减法的干净方法 你会怎么做 那应该是 DatatypeFactory newDuration xgc2 t
  • javax.media.jai 类的公共下载?

    这是一个非常简单的问题 我一直在寻找可以下载 javax media jai 库的地方 我找到了 jai imageio 库 但是我发现的所有其他 jai 内容要么已经过时 2008 年及之前 然后我遇到了登录屏幕 是否有 javax me
  • 如何制作一个makefile只用于编译一些java文件?

    我有三个java文件 名为A java B java C java A将创建对象B B将创建对象C 但我以前从未构建过makefile 有谁可以帮我构建一个 makefile 来编译这三个 java 文件吗 我应该使用什么工具来制作 mak
  • spring data jpa复合键重复键记录插入导致更新

    我有一个具有复合键的实体 我试图通过使用 spring data jpa 存储库到 mysql 数据库来持久化它 如下所示 Embeddable public class MobileVerificationKey implements S
  • 如何使用自定义 JDK 构建 Jenkins 项目?

    我有一个常规的 Jenkins 实例 运行一些多分支管道 该实例在 JDK 11 上运行 因为 Jenkins 并不真正支持更高版本 没关系 但不好的是 我的所有管道似乎也都受到 Java 11 的限制 Jenkins 仅使用它自己也使用的
  • mybatis:使用带有 XML 配置的映射器接口作为全局参数

    我喜欢使用 XML 表示法来指定全局参数 例如连接字符串 我也喜欢 Mapper 注释 当我尝试将两者结合起来时 我得到这个例外 https stackoverflow com questions 4263832 type interfac

随机推荐

  • CODESYS的Robotics_PickAndPlace_without_Depictor例程解释

    1 简介 在CODESYS的例程中 有一个例程演示了如何控制delta机械手从一个移动的转盘中拾取一个工件 ring 圆环 然后放到移动的传送带上的托盘 cone 圆锥 中 这个例程在 C Program Files x86 CODESYS
  • 深度学习14—注意力机制与自注意力机制

    注 以下均为个人学习笔记 发布只为方便学习阅读 若觉侵权 请联系删除 1 李沐老师课堂学习理解笔记 1 1 随意线索和不随意线索 1 2 注意力机制 通过注意力池化层来有偏向性的选择某些输入 1 3 注意力池化层 1 3 1 非参数化注意力
  • 手写识别软件哪个好?来试试下面这几款吧

    听说你对手写文字识别软件很感兴趣啊 你就是那个总是在笔记本上写密密麻麻的字 然后又懒得一个个去打字的家伙吧 别担心 这个世界已经听到你的呼唤 手写文字识别技术就是为了解放你的双手费尽心思开发的 现在 让我来告诉你手写文字识别最简单的方法有哪
  • 基于SpringBoot的房屋租赁系统 附源码

    基于SpringBoot的房屋租赁系统 附源码 文章目录 基于SpringBoot的房屋租赁系统 附源码 一 引言 二 系统设计 三 技术架构 四 功能实现 五 界面展示 六 源码获取 一 引言 本文介绍了一个基于SpringBo
  • 【转载】【Unity】WebSocket通信

    1 前言 Unity客户端常用的与服务器通信的方式有socket http webSocket 本文主要实现一个简单的WebSocket通信案例 包含客户端 服务器 实现了两端的通信以及客户端向服务器发送关闭连接请求的功能 实现上没有使用U
  • Qt Quick 工程创建

    一 简介 Qt Quick是Qt框架中的一个模块 用于创建现代 响应式的用户界面 它基于QML Qt Meta Object Language 语言和Qt Quick Controls库 提供了一种声明性的方式来构建用户界面 Qt Quic
  • [APM32F4]基于APM32F411控制的一个软开关电路设计分享

    1 前言 说明 本文介绍的软开关电路 并不是 开关电源 里面的软开关概念 而是系统供电的开关 结合MCU等控制芯片 控制系统供电的开启或关断 在某些电子产品的场合 我们经常会需要用到按键长按进行开机 然后按键长按进行关机 或者按键长按之后有
  • 图像配准 CVPRW21 - 深度特征匹配 DFM

    本文转自 图像配准 CVPRW21 深度特征匹配 DFM 深度学习图像配准 CSDN博客 github地址 https github com ufukefe DFM 相识 图像配准 Image Registration 是计算机视觉领域中的
  • 性能测试:如何使用window系统资源监控!

    系统资源监控通常分为两类系统 window和类unix unix linux aix window系统资源监控 window系统资源监控有两种方法 一是使用loadrunner工具进行监控 二是使用windows自带的性能工具perfmon
  • 用一个简单的例子教你如何 自定义ASP.NET Core 中间件(二)

    上一章已经说过了 中间件是一种装配到应用管道以处理请求和响应的软件 每个组件 选择是否将请求传递到管道中的下一个组件 可在管道中的下一个组件前后执行工作 请求委托用于生成请求管道 请求委托处理每个 HTTP 请求 一句话总结 中间件是比筛选
  • git断开原来远程仓库连接并连接新的远程仓库

    背景 先开发了基础框架 后续实际项目基于基础框架开发 需要拉去基础框架 如果直接开发还是在基础框架上进行的 这是不允许的 就需要修改远程地址连接 1 查看远程连接 会返回当前的远程连接地址 git remote v 2 断开与远程仓库的连接
  • SHT10温湿度传感器——STM32驱动

    实验效果 硬件外观 接线 3 3V供电 IIC通讯 代码获取 查看下方 END
  • Java版工程行业管理系统源码-专业的工程管理软件- 工程项目各模块及其功能点清单

    鸿鹄工程项目管理系统 Spring Cloud Spring Boot Mybatis Vue ElementUI 前后端分离构建工程项目管理系统 项目背景 随着公司的快速发展 企业人员和经营规模不断壮大 为了提高工程管理效率 减轻劳动强度
  • Python编程:从入门到实践(基础知识)

    第一章 起步 计算机执行源程序的两种方式 编译 一次性执行源代码 生成目标代码 解释 随时需要执行源代码 源代码 采用某种编程语言编写的计算机程序 目标代码 计算机可执行 101010 编程语言分为两类 静态语言 使用编译执行的编程语言 C
  • DEVOPS 持续部署的例子:IMVU

    持续部署的例子 IMVU IMVU是一家社交娱乐公司 它的产品允许用户以一种3D阿凡达式的体验互相连接起来 本节内容改编自一位IMVU工程师所写的博客 IMVU采用了持续集成 开发人员尽早提交并经常提交 每次提交都触发测试套件的执行 IMV
  • 面向对象编程---基于java控制台的高校教材管理系统课设

    功能要求 1 实现出版社 教材类型的管理 2 实现教材的订购管理 3 实现教材的入库管理 4 创建规则 实现教材的书号必须满足以ISBN开头 后跟10个数字 比如ISBN7302120363 5 创建触发器 实现教材入库和出库时自动修改库存
  • 为什么云监控、云产品流量监控中的流量数据和DDoS防护的流量监控数据有差异?

    一般情况下 DDoS防护的流量监控数据大于您在云监控或具体云产品数据页面看到的流量数据 示例 假设您的ECS实例遭受了DDoS攻击 触发流量清洗 您收到DDoS原生防护基础版的清洗通知 触发清洗时的流量为2 5 Gbps 但是 您在云监控中
  • 总结 BurpSuite 插件 HaE 与 Authz 用法!!!

    HaE与Authz均为BurpSuite插件生态的一员 两者搭配可以避免 越权 未授权 两类漏洞的重复测试行为 适用于业务繁杂 系统模块功能多的场景 两个插件都可以在store里安装 安装完后 点击Filter Settings勾选Show
  • 【工作流Activiti】了解工作流

    1 什么是工作流 工作流 Workflow 就是通过计算机对业务流程自动化执行管理 它主要解决的是 使在多个参与者之间按照某种预定义的规则自动进行传递文档 信息或任务的过程 从而实现某个预期的业务目标 或者促使此目标的实现 通俗来讲 就是业
  • 【工作流Activiti】Activiti的使用

    1 数据库支持 Activiti 运行必须要有数据库的支持 支持的数据库有 mysql oracle postgres mssql db2 h2 2 Activiti环境 我们直接在当前项目 guigu oa parent做Activiti