springboot整合activity7(一)

news2024/9/20 14:32:10

一、Spring Boot 集成 Activiti7(工作流)

此章节首先完成后端的activiti整合,生成工作流所需数据库表,数据库采用mysql。

二、依赖

<dependencies>
    <!-- 引入Activiti7 -->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter</artifactId>
        <version>7.1.0.M4</version>
        <exclusions>
            <exclusion>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.activiti.dependencies</groupId>
        <artifactId>activiti-dependencies</artifactId>
        <version>7.1.0.M4</version>
        <type>pom</type>
    </dependency>
    <!-- 生成流程图 -->
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-image-generator</artifactId>
        <version>7.1.0.M4</version>
    </dependency>
</dependencies>

首先排除掉mybatis依赖,因为使用的mybatis-plus依赖我们大部分都已引入,为了避免与activit7的maven依赖有冲突

三、配置文件修改

spring:

  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: "xxxxx"
    url: jdbc:mysql://localhost:3306/activity-demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true

  activiti:
    #1.flase:默认值。activiti在启动时,对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常
    #2.true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建
    #3.create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)
    #4.drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)
    database-schema-update: true
    #检测历史表是否存在 activiti7默认没有开启数据库历史记录 启动数据库历史记录
    db-history-used: true
    #记录历史等级 可配置的历史级别有none, activity, audit, full
    #none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
    #activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
    #audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
    #full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
    history-level: full
    #校验流程文件,true表示自动部署resources下的processes文件夹里的流程文件
    check-process-definitions: false
    # id值是否使用uuid,false表示使用数据库自增值
    use-strong-uuids: true

springBoot启动类修改

  1. 排除 springSecurity

    @SpringBootApplication(exclude = {SecurityAutoConfiguration.class,  ManagementWebSecurityAutoConfiguration.class })
    

    启动类修改,排除以上类,因为activiti7深度依赖springSecurity,而我们这里不需要,故排除。

  2. SpringSecurityConfig.java

    一个空的springSecrity配置文件,不加会报错

    @Configuration
    public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
    }
    
  3. 实现UserDetailsService接口

    @Slf4j
    @Component
    public class SelfUserDetailsServiceImpl  implements UserDetailsService {
     
        @Override
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
            List<GrantedAuthority> authorities= AuthorityUtils.commaSeparatedStringToAuthorityList("");
            return new User(username,"",authorities);
        }
    }
    

这里排除SpringSecurity的方法略显丑陋,如果有更好的排除SpringSecurity的方法可以教一下我

初始化数据表

运行springboot项目启动类,第一次运行,会检查数据库是否有工作流所需表,如果没有,会自动生成,生成的表都act_开头,一共25张表,这里做一下基础介绍。

在这里插入图片描述
工作流相关表分为4类

  1. act_ge开头,存放通用数据、一些流程文件等

  2. act_hi开头,存放工作流程中的历史数据,如历史任务信息,历史流程参数等

  3. act_re开头,存放工作流流程定义和发布的信息

  4. act_ru开头,存放工作流当前正在进行流程的信息,一个流程走完,ru表会删除相关内容,查询历史信息就是act_hi中获取

注意:7.1.0.M4 版本自动生成的表字段不全,所以还需运行如下SQL:

-- 修复Activiti7的M4版本缺失字段Bug
-- ----------------------------
alter table ACT_RE_DEPLOYMENT add column PROJECT_RELEASE_VERSION_ varchar(255) DEFAULT NULL;
alter table ACT_RE_DEPLOYMENT add column VERSION_ varchar(255) DEFAULT NULL;

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

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

相关文章

080:vue+mapbox中interpolate 的详细解释

在Mapbox GL JS中,你可以使用样式表达式来实现数据驱动的样式,其中interpolate表达式是用于创建平滑过渡的一种方式。当你需要根据某个属性的值来动态地设置样式时,比如颜色、宽度或其他样式属性,interpolate表达式就非常有用。 文章目录 示例效果配置方式示例源代码(共14…

Manim的一个用于数学动画的 Python 库中渲染代码的功能。

Code 函数是 Manim&#xff08;一个强大的数学动画库&#xff09;中的一个重要工具&#xff0c;旨在将代码片段以视觉化的方式呈现。在教育和演示场合中&#xff0c;向观众展示算法或代码逻辑时&#xff0c;清晰的视觉效果是必不可少的。通过 Code 函数&#xff0c;用户可以轻松…

KOLA: CAREFULLY BENCHMARKING WORLD KNOWLEDGE OF LARGE LANGUAGE MODELS

文章目录 题目摘要简介KOLA 基准实验评估结论和未来工作道德声明 题目 KOLA&#xff1a;仔细对大型语言模型的世界知识进行基准测试 论文地址:https://arxiv.org/abs/2306.09296 项目地址:https://github.com/ranahaani/GNews 摘要 大型语言模型 (LLM) 的卓越性能要求评估方法…

【种草官招募令】

&#x1f31f; 你是时尚达人吗&#xff1f; 对潮流服饰有着独到的见解&#xff1f; 想通过分享赢得关注&#xff0c;还能赚取丰厚报酬&#xff1f; 来加入我们的电商种草官行列吧&#xff01; &#x1f457; 我们致力于发现和培养更多热爱时尚、善于种草的你&#xff0c;将…

Imagination CPU系列研讨会|RISC-V平台的性能分析和调试

为了让开发者及工程师深入了解 Imagination 的 CPU 产品及相关解决方案&#xff0c;Imagination 将陆续推出 5 期线上研讨会&#xff0c;包含 RISC-V 平台的性能分析和调试&#xff1b;RISC-V 安全和全球平台可信执行环境&#xff08;TEE&#xff09;&#xff1b;RISC-V 软件生…

人工智能缺陷检测方案METIS(梅迪斯):汽车零部件检测

#汽车零部件#机器视觉检测&#xff0c;作为当今科技领域的热门话题&#xff0c;正日益受到世人的瞩目。随着机器视觉系统的不断开发与优化&#xff0c;那些繁重而复杂的人工检测工作&#xff0c;已经逐渐被机器视觉检测所替代。今天&#xff0c;我们就来深入探讨一下&#xff0…

作业08.13

一、TCP机械臂测试 通过w(红色臂角度增大)s&#xff08;红色臂角度减小&#xff09;d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09;按键控制机械臂 注意&#xff1a;关闭计算机的杀毒软件&#xff0c;电脑管家&#xff0c;防火墙 1&#x…

构建实时数据仓库:流式处理与实时计算技术解析

目录 一、流式处理 请求与响应 批处理 二、实时计算 三、Lambda架构 Lambda架构的缺点 四、Kappa架构 五、实时数据仓库解决方案 近年来随着业务领域的不断拓展&#xff0c;尤其像互联网、无线终端APP等行业应用的激增&#xff0c;产生的数据量呈指数级增长&#xff0c;对海量数…

C++系列-继承中的对象模型

继承中的对象模型 通过查看子类的内存大小通过Developer Command Prompt查看结构 山中问答 李白 〔唐代〕 问余何意栖碧山&#xff0c;笑而不答心自闲。 桃花流水窅然去&#xff0c;别有天地非人间。 无论哪种继承方式&#xff0c;父类中的private成员在子类中均不可以访问。pu…

Polars简明基础教程十二:可视化(二)

设置绘图后端 我们可以使用 hv.extension 更改绘图后端。但是&#xff0c;我们不在此处运行此单元格&#xff0c;因为它会导致下面的 Matplotlib/Seaborn 图表无法渲染。 注释&#xff1a; hvPlot 利用 HoloViews 库来构建图表&#xff0c;并且可以使用多个后端进行渲染&…

农业物联网6公里WiFi远距离传输模块,信号传输不再受限,抗干扰、连接快

在数字化时代&#xff0c;WiFi已成为我们生活中不可或缺的一部分。然而&#xff0c;你是否曾遇到过这样的困扰&#xff1a;在户外或大型场所&#xff0c;WiFi信号总是那么微弱&#xff0c;甚至完全无法连接。这时候&#xff0c;一种能够实现6公里远距离WiFi传输的神秘模块便应运…

go-zero中间件的使用

一、自定义中间件 1、在api中在服务中定义一个中间件,名字随便取 type PostDemoReq {Name string json:"name" validate:"required" // 姓名Age int64 json:"age" validate:"required,gte1,lte130" // 年龄// optional 表示可选,omi…

RAG与LLM原理及实践(11)--- Milvus hybrid search 源码分析及思想

目录 背景 hybrid search 源码分析 WeightedRanker 源码 hybrid search 核心 参数详解 基本入参 扩展入参 aysnc方式代码调用案例 说明 源码逻辑 prepare 调用过程 stub 调用结果 stub 调用过程 blocking 与 async 调用方式 深入内部core weightedRanker 的ch…

拼图小游戏单机版---java实现

一、为什么要在这个阶段做这样的一个项目&#xff1f; 1、理解Swing框架&#xff1a; 这个项目使用了Swing框架来构建图形用户界面&#xff08;GUI&#xff09;。通过实践&#xff0c;你可以更好地掌握如何使用Swing组件&#xff08;如JFrame, JLabel, JMenuBar等&#xff09;…

Redis20-通信协议

目录 RESP协议 概述 数据类型 模拟Redis客户端 RESP协议 概述 Redis是一个CS架构的软件&#xff0c;通信一般分两步&#xff08;不包括pipeline和PubSub&#xff09;&#xff1a; 客户端&#xff08;client&#xff09;向服务端&#xff08;server&#xff09;发送一条命…

6RA8075-6DV62-0AA0模块可面价

6RA8075-6DV62-0AA0模块可面价 6RA8075-6DV62-0AA0模块可面价 6RA8075-6DV62-0AA0模块可面价 6ES7655-5DX40-2AA0模块接线图 6ES7655-5DX40-2AA0模块说明书 6ES7655-5DX40-2AA0模块选型手册 6ES7655-5DX40-2AA0功能模块是指数据说明、可执行语句等程序元素的集合&#xf…

permutation sequence(

60. Permutation Sequence class Solution:def getPermutation(self, n: int, k: int) -> str:def rec(k, l, ans, n):if(n0): return# 保留第一个位置&#xff0c;剩下数字的组合leftCom math.factorial(n - 1) #用于计算 (n-1) 的阶乘值ele k // leftCommod k % leftCo…

SpringBoot入门笔记

本文是看黑马老师讲课视频学习笔记整理 目录 入门案例 基于IDEA联网 基于Springboot官网创建 基于阿里云创建项目 手工创建 隐藏文件 入门案例解析: parent​编辑 starter 引导类 内嵌tomcat 入门案例 基于IDEA联网 RestController RequestMapping("/books&…

Electron:摄像头录制和屏幕录制

摄像头录制 main.js const { app, BrowserWindow} require(electron)let mainWin null const createWindow () > {mainWin new BrowserWindow({width: 800,height: 600,title: 自定义菜单,webPreferences: {// 允许渲染进程使用nodejsnodeIntegration: true,// 允许渲…

首站,北京!OpenCSG邀您共赴AI之约【2024戴尔科技峰会预告】

图片来源&#xff1a;戴尔 在数字化浪潮的推动下&#xff0c;人工智能正成为推动社会进步的关键力量及带来生产力的提升。据相关数据显示,全球企业对人工智能的投资已增长50%&#xff0c;预计到2025年&#xff0c;人工智能将为全球经济贡献15.7万亿美元。人工智能将革新我们的生…