SpringBoot整合Flowable

1. 配置

(1) 引入maven依赖

        <dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>6.7.2</version></dependency><!-- MySQL连接 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.19</version></dependency>

(2)配置文件

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url= jdbc:mysql://localhost:3306/flowable?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.username = root
spring.datasource.password= root

(3)启动项目即可在数据库自动生成相关表

数据库表组说明
act_app_*跟应用程序相关的表。
act_cmmn_*跟 CMMN 协议相关的表。
act_co_*跟内容引擎相关的表
act_dmn_*跟 DMN 协议相关的表。
act_evt_log事件日志表
act_fo_*表单相关的表,这些表主要存储表单相关的数据。
act_ge_*通用表,普通数据,各种情况都使用的数据。
act_hi_*历史数据的表,这些表包含着历史的相关数据,如结束的流程实例,变量,任务,等等。
act_id_*用户用户组表 /身份数据表,这些表包含标识的信息,如用户,用户组,等等。
act_procdef_info流程定义动态改变信息表
act_re_*流程的定义、流程的资源表,这些表包含的是静态信息,如,流程定义,流程的资源(图片,规则等)。
act_ru_*运行时信息表,存储着流程变量,用户任务,变量,职责(job)等运行时的数据。只存储实例执行期间的运行时数据,当流程实例结束时,将删除这些记录。这就保证了这些运行时的表小且快。
flw_channel_definition都是跟泳道相关的表。
flw_ev_*跟 Liquibase 相关的表。
flw_event_*跟事件相关的表。
flw_ru_*运行时信息表。

(4)画流程图

       a. 安装 IDEA 插件:lowable BPMN visualizer
       b. 在 resources 目录下新建 processes 目录,该目录下的流程文件将来会被自动部署。
       c. 在 processes 目录下,新建一个 BPMN 文件,固定后缀为.bpmn20.xml

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:flowable="http://flowable.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.flowable.org/processdef"><process id="demo" name="demo" isExecutable="true"><startEvent id="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30"/><userTask id="sid-57c1b617-c369-4556-8154-a620652b3ffd" name="申请人" flowable:assignee="${crew}" flowable:formFieldValidation="true"/><sequenceFlow id="sid-14435c94-d0a5-4199-b6fb-c08739f014f3" sourceRef="sid-507da2f8-ca68-4e25-a256-c9e4e98a8e30" targetRef="sid-57c1b617-c369-4556-8154-a620652b3ffd" name="开始流程"/><sequenceFlow id="sid-023ac358-3952-42fb-8f59-0ea3fb4d55bd" sourceRef="sid-57c1b617-c369-4556-8154-a620652b3ffd" targetRef="sid-e656adbe-9181-4852-9df4-3e6c79f6933a" name="通过"/><userTask id="sid-e656adbe-9181-4852-9df4-3e6c79f6933a" name="组长" flowable:assignee="${leader}" flowable:formFieldValidation="true"/><endEvent id="sid-312fd1bd-1a79-46f1-956c-b89aab8a03af"/><sequenceFlow id="sid-dfe46275-5cb0-40cd-8bd3-b5b9c4178dd6" sourceRef="sid-e656adbe-9181-4852-9df4-3e6c79f6933a" targetRef="sid-312fd1bd-1a79-46f1-956c-b89aab8a03af"/></process><bpmndi:BPMNDiagram id="BPMNDiagram_demo"></bpmndi:BPMNDiagram>
</definitions>

(5)调用相关API处理流程

    @ResourceRuntimeService runtimeService;@ResourceTaskService taskService;   /*** 通过流程id开启一个流程,并设置变量,用于流程图 ${name} 动态赋值*/@Testvoid contextLoads() {HashMap<String, Object> variables = new HashMap<>();variables.put("leader","zp");variables.put("crew","zj");ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("demo", variables);System.out.println(processInstance.getProcessInstanceId());}/*** 通过分配任务的人获取任务并处理任务*/@Testvoid contextLoads1() {List<Task> list = taskService.createTaskQuery().taskAssignee("zp").orderByTaskId().desc().list();for (Task task : list) {taskService.complete(task.getId());}}

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

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

相关文章

【深度学习】 Python 和 NumPy 系列教程(十七):Matplotlib详解:2、3d绘图类型(3)3D条形图(3D Bar Plot)

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 线框图 2. 3D散点图 3. 3D条形图&#xff08;3D Bar Plot&#xff09; 一、前言 Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简洁、易读…

左神高级提升班2 约瑟夫环结构

目录 【案例1】 【题目描述】 【输入描述&#xff1a;】 【输出描述&#xff1a;】 【输入】 【输出】 【思路解析】 【代码实现】 【案例1】 【题目描述】 某公司招聘&#xff0c;有n个人入围&#xff0c;HR在黑板上依次写下m个正整数A1、A2、……、Am&#xff0c;然后…

【重新定义matlab强大系列十三】直方图 bin 计数和分 bin 散点图

&#x1f517; 运行环境&#xff1a;Matlab &#x1f6a9; 撰写作者&#xff1a;左手の明天 &#x1f947; 精选专栏&#xff1a;《python》 &#x1f525; 推荐专栏&#xff1a;《算法研究》 #### 防伪水印——左手の明天 #### &#x1f497; 大家好&#x1f917;&#x1f91…

七天学会C语言-第二天(数据结构)

1. If 语句&#xff1a; If 语句是一种条件语句&#xff0c;用于根据条件的真假执行不同的代码块。它的基本形式如下&#xff1a; if (条件) {// 条件为真时执行的代码 } else {// 条件为假时执行的代码 }写一个基础的If语句 #include<stdio.h> int main(){int x 10;…

xss渗透(跨站脚本攻击)

一、什么是XSS? XSS全称是Cross Site Scripting即跨站脚本&#xff0c;当目标网站目标用户浏览器渲染HTML文档的过程中&#xff0c;出现了不被预期的脚本指令并执行时&#xff0c;XSS就发生了。 这里我们主要注意四点&#xff1a; 1、目标网站目标用户&#xff1b; 2、浏览…

Idea汉化

下载IDEA官方插件包https://plugins.jetbrains.com/ 输入关键子"chinese"查询汉化包 本地安装

Unity 性能优化Shader分析处理函数:ShaderUtil.GetShaderGlobalKeywords用法

Unity 性能优化Shader分析处理函数&#xff1a;ShaderUtil.GetShaderGlobalKeywords用法 点击封面跳转下载页面 简介 Unity 性能优化Shader分析处理函数&#xff1a;ShaderUtil.GetShaderGlobalKeywords用法 在Unity开发中&#xff0c;性能优化是一个非常重要的方面。一个常见…

core文件的生成与使用

目录 core 设置例子 1例子 2core 名称及目录修改参考 在使用嵌入式系统时&#xff0c;出错后&#xff0c;不好使用 gdb 调试&#xff0c;这时&#xff0c;可让系统生成一个 core 文件&#xff0c;用于查看出错原因 core 设置 要生成 core 文件&#xff0c;需要先设置 core 文…

Vue3事件处理

文章目录 Vue3事件处理1. 概念2. 实例2.1 点击按钮次数12.2 v-on 可以接收一个定义的方法来调用2.3 内联 JavaScript 语句2.4 事件处理程序中调用多个方法 3. 事件修饰符4. 按键修饰符 Vue3事件处理 1. 概念 使用 v-on 指令来监听 DOM 事件&#xff0c;从而执行 JavaScript 代…

QT:使用普通按钮、网格布局管理器、标签、行编辑器、水平布局管理器、垂直布局管理器做一个小项目

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //普通按钮 #include <QGridLayout> //网格布局管理器 #include <QLabel> //标签 #include <QLineEdit> //行编辑器 #include <QHBoxLayo…

Linux关于memory cgroup的几个要点

概述 本文讲述memory cgroup比较容易误解的一些逻辑&#xff0c;如果不太经常使用和解决问题的话&#xff0c;对于memory cgroup的认知会比较浅显&#xff1a;cgroup memory用来限制进程的内存使用&#xff0c;但是我们进一步想如下的问题&#xff1a; 进程的内存可以分很多类…

【数据结构】LinkedList与链表

文章目录 1. ArrayList的缺陷2. 链表2.1 链表的概念及结构2.2 链表的实现1.链表的功能2.初始化链表3.实现功能接口3.1头插添加元素3.2尾插法添加新元素3.3找到下标的前驱节点3.4指定位置插入元素3.5指定元素是否存在3.6找到指定元素的前驱节点3.7删除指定节点3.8删除所有元素为…

Flutter图标

https://fluttericon.cn/ Flutter 内置了丰富的图标。 Icon(Icons.ac_unit)

linux内核分析:线程和进程创建,内存管理

lec18-19:进程与线程创建 lec20-21虚拟内存管理 内核代码,全局变量这些只有一份,但是内核栈有多份,这可能就是linux线程模型1对1模式的由来。通过栈来做的 x86 CPU支持分段和分页(平坦内存模式)两种 分段,选择子那里就有特权标记了

高速DSP系统设计参考指南(一)高速DSP设计面临的挑战

&#xff08;一&#xff09;高速DSP设计面临的挑战 1. 概述2. 一般挑战3. DSP音频系统的挑战4. 视频系统的挑战5. DSP通信系统面临的挑战 资料参考来自TI官网和网络。 1. 概述 DSP芯片&#xff0c;也称数字信号处理器&#xff0c;是一种具有特殊结构的微处理器。DSP芯片的内部…

【开发】视频监控平台EasyCVR分组批量绑定/取消通道功能的后端代码设计逻辑介绍

视频监控平台/视频存储/视频分析平台EasyCVR基于云边端一体化管理&#xff0c;可支持视频实时监控、云端录像、云存储、磁盘阵列存储、回放与检索、智能告警、平台级联等功能。安防监控平台在线下场景中应用广泛&#xff0c;包括智慧工地、智慧工厂、智慧校园、智慧社区等等。 …

二进制 Deploy Kubernetes v1.23.17 超级详细部署

文章目录 1. 预备条件2. 基础配置2.1 配置root远程登录2.2 配置主机名2.3 安装 ansible2.4 配置互信2.5 配置hosts文件2.6 关闭防firewalld火墙2.7 关闭 selinux2.8 关闭交换分区swap2.9 修改内核参数2.10 安装iptables2.11 开启ipvs2.12 配置limits参数2.13 配置 yum2.14 配置…

浅析AI视频智能分析系统人脸检测算法的应用与特点

AI人脸检测算法可以提取人脸和服装的特征&#xff0c;并将其分类为有用的类别&#xff0c;例如性别、年龄和服装颜色。通过搜索这些丰富的属性信息&#xff0c;可以帮助我们轻松找到目标人物&#xff0c;比如通过人脸以图搜图、人脸布控等等。 如何搭建重点部位人脸识别动态布控…

Fuxploider:一款针对文件上传漏洞的安全检测与研究工具

Fuxploider:一款针对文件上传漏洞的安全检测与研究工具 1.概述2. 工具使用1.概述 Fuxploider是一款功能强大的开源渗透测试工具,该工具专门针对文件上传漏洞而设计,可以帮助广大研究人员以自动化的方式检测和利用目标站点文件上传表单中的安全问题 由于该工具基于Python 3…

elasticsearch18-自动补全实战

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…