详解SpringCloud集成Camunda7.19实现工作流审批(一)

背景是公司里的一个企业管理系统项目里许多业务涉及了审批流,因此需要引进工作流引擎来开发一个通用的工作流服务,经过调研最终采用的是集成Camunda7.19版本引擎来实现

文章目录

  • 一、参考资源
  • 二、工作流简介
  • 三、工作流引擎
  • 四、Camunda安装
    • 1.流程图设计器
    • 2.流程管理平台
  • 五、集成到SpringCloud项目

一、参考资源

Camunda学习笔记(一)–Camunda简介 - EchoLv - 博客园

三大工作流引擎技术Activiti、Camunda、Flowable选型指南-阿里云开发者社区

snail-camunda: Camunda二次封装以及相关功能使用介绍。 中国式工作流解决方案。

二、工作流简介

工作流:

是对工作流程及其各个操作步骤之间业务规则的抽象、概括描述;工作流将复杂的业务逻辑分解成一个个的逻辑段,并统一控制这些逻辑段的执行条件、顺序、相互通信,实现业务逻辑的分解和解耦。

为什么使用工作流?

满足企业日常的流程管理,使流程运行的过程更加清晰;提升企业时间成本、信息化水平

三、工作流引擎

市面上主流的工作流引擎有Activity、Flowable、Camunda

关于他们的详细对比参考:三大工作流引擎技术Activiti、Camunda、Flowable选型指南-阿里云开发者社区

四、Camunda安装

Camunda提供了友好的用户平台,分别是流程图设计器 Camunda Modeler 和 业务流程管理平台 Camunda Platform(Camunda bpm)

1.流程图设计器

Download The Camunda BPMN / DMN Process Modeler | Camunda

下载好后解压即可运行,界面如图所示

在这里插入图片描述

注意:左下角需要选择好集成的版本,本次使用的是7.19,这里版本如果选错可能会导致部署失败等各种问题

2.流程管理平台

Camunda Automation Platform 7 Initializr

在这里插入图片描述

如上图所示,访问上面的地址后,我们来到camunda7 demo项目生成界面

但是这里可以看到现在已经选不到7.19版本了,为什么选7.19,是因为他是最后一个支持java8的版本,同时支持springboot2.7.X

springboot和camunda版本对应参照:

Spring Boot Version Compatibility | docs.camunda.org

解决办法:

先生成一个7.20.0的demo项目,然后再去项目里修改pom文件里的版本,如图所示

在这里插入图片描述

启动demo

改好后,这里我们直接先建一下camunda服务的数据库,配置在demo项目里(camunda默认启动项目会在数据库里自动建表)

如下图所示,注意红字部分,当时这里也是趟过坑

在这里插入图片描述

启动成功后,查看数据库,可以看到已经自动建表成功,如下图这些都是camunda自动创建的表(启动的时候如果报错XX表找不到,再次重启即可,前提要配置上图的数据库连接参数)

在这里插入图片描述

从官网生成的demo项目里,在resources目录下是有一个bpmn流程图文件的,如下图所示,默认camunda项目启动后,会把静态资源目录下的bpmn流程图自动执行流程部署(前期使用这种方式部署自动流程图方便调试,后期会改成手动调用接口部署)

在这里插入图片描述

访问

这里我改了下demo项目的启动端口,如果没改默认是8080,直接访问 http://localhost:8080/ 即可进入camunda流程管理页面,如下图所示

在这里插入图片描述

登录账号密码为刚刚上图配置文件里配置的

登录后,可以看到下面的功能,分别主要的用处是 管理流程(流程图、流程部署),管理任务(查看当前任务,处理任务),管理用户(创建用户、群主、租户等)

(这里我们如果进入流程管理则可以看到camunda已经将上面resources目录下的process.bpmn给自动部署了)

在这里插入图片描述

五、集成到SpringCloud项目

cloud微服务架构项目和单体项目的集成步骤无太大差异,主要是一些配置放到了nacos远程配置文件上,如下图

这里自动部署的配置默认就是true(开启),如果配置false,则启动项目不会自动部署resources目录下的流程图(在子文件夹里也会读取到)

在这里插入图片描述

在这里插入图片描述

本篇就先讲到这里,后续会依次详细讲解:

  • camunda流程图画图工具使用、camunda bpm平台如何使用(怎么操作走完一个流程)
  • springcloud微服务里如何写接口结合camunda提供的api来实现流程、任务、用户等操作;
  • 如何与具体业务结合,满足不同类型业务审批需求
  • 如何集成第三方的bpmn流程设计器实现在项目里画图部署流程

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

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

相关文章

【Linux内核剖析】深入分析inet_init的处理机制

inet_init 是 Linux 内核中用于初始化 TCP/IP 协议栈的函数。它在内核启动时被调用,完成各种协议和数据结构的注册和初始化。 主要功能: 注册 TCP、UDP、ICMP 等协议。初始化 ARP、IP 和其他网络协议模块。设置 socket 操作和协议处理。 前后调用关系链…

使用 .NET 创建新的 WPF 应用

本教程介绍如何使用 Visual Studio 创建新的 Windows Presentation Foundation (WPF) 应用。 使用 Visual Studio,可以向窗口添加控件以设计应用的 UI,并处理这些控件中的输入事件以与用户交互。 在本教程结束时,你有一…

【机器学习chp3】判别式分类器:线性判别函数、线性分类器、广义线性分类器、分段线性分类器

前言: 本文遗留问题:(1)对最小平方误差分类器的理解不清晰.(2)分段线性判别函数的局部训练法理解不清晰。 推荐文章1,其中有关于感知机的分析 【王木头从感知机到神经网络】-CSDN博客 推荐文…

聚焦 NLP 和生成式 AI 的创新与未来 基础前置知识点

给学生们讲解的技术内容可以根据他们的背景、兴趣和教学目标来规划。以下是一些适合不同阶段和领域的技术主题建议,尤其是与大语言模型(如 ChatGPT)相关的内容: 1. 自然语言处理(NLP)基础 适合对 NLP 了解…

python3 Flask应用 使用 Flask-SQLAlchemy操作MySQL数据库

一、环境搭建 下载命令: pip install flask flask-sqlalchemy pymysql 二、创建项目结构 yourProjectFolder/ |—— app.py |—— config.py |—— models.py |__ mydb.py 三、基本使用 3.1 config.py 进行数据库连接配置 import osbasedir os.path.abspat…

深度学习:神经网络中线性层的使用

深度学习:神经网络中线性层的使用 在神经网络中,线性层(也称为全连接层或密集层)是基础组件之一,用于执行输入数据的线性变换。通过这种变换,线性层可以重新组合输入数据的特征,并将其映射到新…

Android中常见内存泄漏的场景和解决方案

本文讲解Android 开发中常见内存泄漏场景及其解决方案,内容包括代码示例、原因分析以及最佳实践建议。 1. 静态变量导致的内存泄漏 静态变量的生命周期与应用进程一致,如果静态变量持有了对 Activity 或其他大对象的引用,就可能导致内存泄漏…

docker-compose 安装 pgsql (postgres)

docker-compose-pg.yml 文件内容 version: 3 services:iepms-gateway:image: postgres:14.13container_name: postgresql-14.13restart: alwaysprivileged: trueenvironment:- POSTGRES_PASSWORD: test2024ports:- 15432:5432volumes:- /home/iepms/data/pgsql/data:/var/lib/…

Python 小高考篇(4)循环语句

目录 for 循环一个参数两个参数三个参数 while 循环break和continue语句break语句自测总结结尾 本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-SA协议。 因此,若需转载/引用本文,请注明作者并附原文链接,且禁止…

小程序20-样式:自适应尺寸单位 rpx

手机设备的宽度逐渐多元化,也就需要开发者开发过程中,去适配不同屏幕宽度的手机,为了解决屏幕适配问题,微信小程序推出了 rpx 单位 rpx:小程序新增的自适应单位,可以根据不同设备的屏幕宽度进行自适应缩放 …

网络安全,文明上网(1)享科技,提素养

前言 在这个信息化飞速发展的时代,科技的快速进步极大地丰富了我们的生活,并为我们提供了无限的可能性。然而,随着网络世界的不断扩张,增强我们的网络素养成为了一个迫切需要解决的问题。 与科技同行,培育网络素养 技术…

豆瓣书摘 | 爬虫 | Python

获取豆瓣书摘,存入MongoDB中。 import logging import timeimport requests from bs4 import BeautifulSoup from pymongo import MongoClientheaders {accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,…

JVM垃圾回收算法详解

在Java开发中,JVM(Java虚拟机)的垃圾回收机制是自动管理内存的关键部分。垃圾回收器(Garbage Collector, GC)通过一系列算法判断哪些对象可以被回收,从而释放内存空间供新对象使用。本文将深入探讨JVM中的垃…

Linux设置开机自动执行脚本 rc-local

使用/etc/rc.local 1、启动rc-local服务 首先授予执行权限 chmod x /etc/rc.d/rc.local设置开启自启并启动 sudo systemctl enable rc-local sudo systemctl start rc-local查看状态 sudo systemctl status rc-local2、编写要执行的脚本 vim /home/start.sh #!/bin/bash…

关于Redis单线程模型以及IO多路复用的理解

IO多路复用 -> redis主线程 -> 事件队列 -> 事件处理器 1.IO多路复用机制的作用: 操作系统的多路复用机制(如 epoll、select)负责监听多个文件描述符(如客户端连接)上的事件。 当某个文件描述符上的事件就绪…

针对AI增强图像大规模鲁棒性测试的数据集

Semi-Truths 是一个大规模的AI增强图像数据集,旨在评估和提升AI生成图像检测器的鲁棒性。该数据集包含了27,600张真实图像和1,472,700张通过多种增强技术生成的AI增强图像,这些图像覆盖了不同的扰动级别和数据分布。 Semi-Truths 的特点在于其详细的元数…

2. Django中的URL调度器 (自定义路径转换器)

在 Django 中&#xff0c;URL 路由通常使用路径转换器&#xff08;path converters&#xff09;来匹配和捕获 URL 中的特定模式&#xff0c;例如整数、字符串或 slug 等。默认情况下&#xff0c;Django 提供了一些内置的路径转换器&#xff0c;如 <int>、<str>、&l…

控制反转和依赖注入

控制反转 简称IOC。对象的创建控制权由程序自身转移到外部&#xff08;容器&#xff09;&#xff0c;这种思想称为控制反转。 使用Component注解去将其他层的实现类&#xff0c;交给IOC容器进行管理 依赖注入 简称DI。IOC容器为应用程序提供运行时&#xff0c;所依赖的资源…

Shell编程-5

声明&#xff1a;学习视频来自b站up主 泷羽sec&#xff0c;如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址&#xff1a;shell&#xff08;5&#xff09;字符串运算符和逻辑运算符_哔哩哔哩_bilibili 一、字符串的比较 在Shell编程中&#xff0c;字符串比较是一个常见…

Python运算符列表

运算符 描述 xy&#xff0c;x—y 加、减,“"号可重载为连接符 x*y,x*&#xff0a;y&#xff0c;x/y,x&#xff05;y 相乘、求平方、相除、求余&#xff0c;“*”号可重载为重复&#xff0c;“&#xff05;"号可重载为格式化 <&#xff0c;<&#xff0c;&…