Camunda 整合Springboot 实战篇

1.导入依赖

 <dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter</artifactId><version>7.18.0</version></dependency><dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter-rest</artifactId><version>7.18.0</version></dependency><dependency><groupId>org.camunda.bpm.springboot</groupId><artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId><version>7.18.0</version></dependency>

去官网找对应的版本适配,这里举个例子

application.yml

server:port: 8019
# camunda登录信息配置
camunda:bpm:admin-user:id: admin  #用户名password: 123456  #密码firstName: jiang #名字filter:create: All tasksdeployment-resource-pattern:- classpath:bpmn/*.bpmndatabase:type: mysqlschema-update: trueauto-deployment-enabled: false #是否自动部署 resource 下的 bpmn 文件# mysql连接信息
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.52.132:3307/camunda?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: roottype: com.mysql.cj.jdbc.MysqlDataSource

运行项目,项目会自动写入数据库里,建表 

 

 2.创建bpmn文件

不会的小伙伴看上一节,使用工具创建

 3.bpmn部署

工作流程图

注释,要不然每次重启项目都部署一份 

server:port: 8019
# camunda登录信息配置
camunda:bpm:admin-user:id: admin  #用户名password: 123456  #密码firstName: jiang #名字
#    filter:
#      create: All tasks
#    deployment-resource-pattern:
#      - classpath:bpmn/*.bpmndatabase:type: mysqlschema-update: trueauto-deployment-enabled: false #是否自动部署 resource 下的 bpmn 文件# mysql连接信息
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://192.168.52.132:3307/camunda?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: roottype: com.mysql.cj.jdbc.MysqlDataSource

 部署API

    @Autowiredprivate RepositoryService repositoryService;//部署用的对象@GetMapping("/deploy")public String deploy() {Deployment deploy = repositoryService.createDeployment().name("部署的第一个流程")//部署名称.addClasspathResource("bpmn/process.bpmn")//绑定需要部署的流程文件.deploy();//部署流程String id = deploy.getId();String name = deploy.getName();Date deploymentTime = deploy.getDeploymentTime();String source = deploy.getSource();String tenantId = deploy.getTenantId();log.info("流程部署成功: id={},name={},deploymentTime={},source={},tenantId={}", id, name, deploymentTime, source, tenantId);return id+":"+name;}

对应三张表

  1.  ACT_RE_DEPLOYMENT
  2. ACT_RE_PROCDEF
  3. ACT_GE_BYTEARRAY

启动流程

@Autowiredprivate RuntimeService runtimeService;//流程启动的对象/*** 启动流程的案例** @return*/@GetMapping("/start")public String startFlow() {// 部署流程ProcessInstance processInstance = runtimeService.startProcessInstanceById("my-project-process:3:3a63ba11-3922-11ef-ba3c-005056c00008");// 部署的流程实例的相关信息String id = processInstance.getId();String processInstanceId = processInstance.getProcessInstanceId();String rootProcessInstanceId = processInstance.getRootProcessInstanceId();String processDefinitionId = processInstance.getProcessDefinitionId();String tenantId = processInstance.getTenantId();String caseInstanceId = processInstance.getCaseInstanceId();
//id=226a591f-3926-11ef-9404-005056c00008,processInstanceId=226a591f-3926-11ef-9404-005056c00008,rootProcessInstanceId=226a591f-3926-11ef-9404-005056c00008,processDefinitionId=my-project-process:3:3a63ba11-3922-11ef-ba3c-005056c00008,tenantId=null,caseInstanceId=nulllog.info("流程启动成功: id={},processInstanceId={},rootProcessInstanceId={},processDefinitionId={},tenantId={},caseInstanceId={}", id, processInstanceId,rootProcessInstanceId, processDefinitionId, tenantId, caseInstanceId);return id;}

数据库生成一个待审批对象

 

生成实例ID 待审批数据

 在这个表里历史记录流程任务

手动审批过后,数据就被清除了

 流程实例历史记录表

查询任务

 

@Autowiredprivate TaskService taskService;/*** 查询任务* 代办** 流程定义ID:processDefinition:我们部署流程的时候会产生对应的 流程定义ID,每个部署流程,会产生一个流程定义ID re 部署时* 流程实例ID: processInstance :我们流程启动实例的时候,会产生一个流程实例ID;ru 运行时*** @return*/@GetMapping("/queryTask/{processInstanceId}")public String queryTask(@PathVariable("processInstanceId") String processInstanceId){List<Task> list = taskService.createTaskQuery().processInstanceId(processInstanceId).list();List<Task> list1 = taskService.createTaskQuery().list();List<Task> list2 = taskService.createTaskQuery().listPage(0,5);//分页TaskQuery admin = taskService.createTaskQuery().taskAssignee("admin");//用户的ID;查询该用户的代办任务List<Task> list3 = admin.list();log.info("admin一共有{}个代办任务",list3.size());int size = list1.size();for (Task task : list) {String assignee = task.getAssignee();String id = task.getId();String name = task.getName();log.info("查询实例ID:assignee={},id={},name={}",assignee,id,name);}log.info("一共{}代办任务",size);return list.get(0).getId();}

 完成任务

 /*** 完成任务* @param processInstanceId*/@GetMapping("/complete/{processInstanceId}")public void completeTask(@PathVariable("processInstanceId") String processInstanceId){//  根据实例ID查询到任务Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();boolean suspended = task.isSuspended();//判断任务是否被冻结,暂停 以后用到的System.out.println(suspended);if (task!=null){taskService.complete(task.getId());//两个参数的,后面时流程变量,也就是传参的System.out.println("任务审批完成");}}

 

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

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

相关文章

C语言图书馆管理系统(管理员版)

案例&#xff1a;图书馆管理系统&#xff08;管理员版&#xff09; 背景&#xff1a; 随着信息技术的发展和普及&#xff0c;传统的图书馆管理方式已经无法满足现代图书馆高效、便捷、智能化的管理需求。传统的手工登记、纸质档案管理不仅耗时耗力&#xff0c;而且容易出现错…

剖析DeFi交易产品之UniswapV3:交易路由合约

本文首发于公众号&#xff1a;Keegan小钢 SwapRouter 合约封装了面向用户的交易接口&#xff0c;但不再像 UniswapV2Router 一样根据不同交易场景拆分为了那么多函数&#xff0c;UniswapV3 的 SwapRouter 核心就只有 4 个交易函数&#xff1a; exactInputSingle&#xff1a;指…

华为机试HJ34图片整理

华为机试HJ34图片整理 题目&#xff1a; 想法&#xff1a; 将输入的字符串中每个字符都转为ASCII码&#xff0c;再通过快速排序进行排序并输出 input_str input() input_list [int(ord(l)) for l in input_str]def partition(arr, low, high):i low - 1pivot arr[high]f…

matlab 有倾斜的椭圆函数图像绘制

matlab 有倾斜的椭圆函数图像绘制 有倾斜的椭圆函数图像绘制xy交叉项引入斜线负向斜线成分正向斜线成分 x^2 y^2 xy 1 &#xff08;负向&#xff09;绘制结果 x^2 y^2 - xy 1 &#xff08;正向&#xff09;绘制结果 有倾斜的椭圆函数图像绘制 为了确定椭圆的长轴和短轴的…

【Python】MacBook M系列芯片Anaconda下载Pytorch,并开发一个简单的数字识别代码(附带踩坑记录)

文章目录 配置镜像源下载Pytorch验证使用Pytorch进行数字识别 配置镜像源 Anaconda下载完毕之后&#xff0c;有两种方式下载pytorch&#xff0c;一种是用页面可视化的方式去下载&#xff0c;另一种方式就是直接用命令行工具去下载。 但是由于默认的Anaconda走的是外网&#x…

9 redis,memcached,nginx网络组件

课程目标: 1.网络模块要处理哪些事情 2.reactor是怎么处理这些事情的 3.reactor怎么封装 4.网络模块与业务逻辑的关系 5.怎么优化reactor? io函数 函数调用 都有两个作用:io检测 是否就绪 io操作 1. int clientfd = accept(listenfd, &addr, &len); 检测 全连接队列…

技术派Spring事件监听机制及原理

Spring事件监听机制是Spring框架中的一种重要技术&#xff0c;允许组件之间进行松耦合通信。通过使用事件监听机制&#xff0c;应用程序的各个组件可以在其他组件不直接引用的情况下&#xff0c;相互发送和接受消息。 需求 在技术派中有这样一个需求&#xff0c;当发布文章或…

简单分享下python多态

目录&#xff1a; 一、多态是啥嘞&#xff08;龙生九子各有不同&#xff0c;这就是多态&#xff09; 二、基础的实例 三、多态的优势与应用场景 四、深入理解 一、多态是啥嘞&#xff08;龙生九子各有不同&#xff0c;这就是多态&#xff09; 多态&#xff08;Polymorphism&…

如何利用算法优化广告效果

效果广告以超过67%的占比&#xff0c;成为了中国互联网广告预算的大头。在BAT、字节等大的媒体平台上&#xff0c;效果广告以CPC实时竞价广告为主。在这种广告产品的投放中&#xff0c;广告主或其代理公司通过针对每个广告点击出价&#xff0c;系统自动把这些点击出价换算成eCP…

【人工智能】-- 智能机器人

个人主页&#xff1a;欢迎来到 Papicatch的博客 课设专栏 &#xff1a;学生成绩管理系统 专业知识专栏&#xff1a; 专业知识 文章目录 &#x1f349;引言 &#x1f349;机器人介绍 &#x1f348;机器人硬件 &#x1f34d;机械结构 &#x1f34d;传感器 &#x1f34d;控…

nginx配置尝试

from fastapi import FastAPI, File, UploadFile, HTTPException from fastapi.responses import JSONResponse, FileResponse, HTMLResponse import logging import os from datetime import datetime import uvicorn# 初始化日志 logging.basicConfig(filenamefile_server.lo…

学java的第3天 后端商城小程序工作

1.数据库的大坑 特殊字段名 ’我的图片表中有一个字段是描述我写成desc了&#xff0c;正好是mysql中的关键字 就不能使用了 2.后端编写 2.1可以把请求分开 在商品浏览页中 只显示商品的大致信息 当用户再点击其他按钮时在发出请求 2.2把请求合并 把数据整合到一起 利用ass…

SpringBoot环境集成 sms4j短信聚合

SpringBoot环境集成 sms4j短信聚合 官方文档 前言 在正式使用sms4j短信功能之前&#xff0c;请详细阅读本文档&#xff0c;依照本篇流程进行操作和配给&#xff0c;即可解决大部分问题&#xff0c;如对我们的文档有建议&#xff0c;请联系开发者团队&#xff0c; 我们将根据可…

电脑为什么会提示丢失msvcp140.dll?怎么修复msvcp140.dll文件会靠谱点

电脑为什么会提示丢失msvcp140.dll&#xff1f;其实只要你的msvcp140.dll文件一损坏&#xff0c;然而你的电脑程序需要运用到这个msvcp140.dll文件的时候&#xff0c;就回提示你丢失了msvcp140.dll文件&#xff01;因为没有这个文件&#xff0c;你的很多程序都用不了的。今天我…

电脑录歌用什么软件好?分享电脑录音软件:6款

短视频普遍的今天&#xff0c;越来越多的人喜欢通过电脑进行音乐创作和录制。然而&#xff0c;面对市面上琳琅满目的电脑录音软件&#xff0c;很多人可能会感到困惑&#xff1a;电脑录歌用什么软件好呢&#xff1f;本文将为大家分享六款精选的录音软件&#xff0c;帮助大家找到…

【matlab】分类回归——智能优化算法优化径向基神经网络

目录 径向基&#xff08;Radial Basis Function, RBF&#xff09;神经网络 一、基本概念 二、网络结构 三、工作原理 四、学习算法 五、优点与应用 六、与BP神经网络的比较 智能优化算法 常见的智能优化算法 灰狼优化算法&#xff08;Grey Wolf Optimizer, GWO&#…

品牌推广的核心价值:作用解析与意义探讨!

在激烈的市场竞争环境之下&#xff0c;品牌推广已经成为企业不可缺少的一部分。不仅关乎企业的知名度&#xff0c;对市场份额更是起到了决定性的作用。 作为一名手工酸奶品牌的创始人&#xff0c;目前全国也复制了100多家门店&#xff0c;这篇文章&#xff0c;我将和大家分享品…

浪潮信息携手算力企业为华东产业集群布局提供高质量算力支撑

随着信息技术的飞速发展&#xff0c;算力已成为推动数字经济发展的核心力量。近日&#xff0c;浪潮信息与五家领先的算力运营公司在南京正式签署战略合作协议&#xff0c;共同加速华东地区智算基础设施布局&#xff0c;为区域经济发展注入新动力。 进击的算力 江苏持续加码智算…

【C语言】指针(1):入门理解篇

目录 一、内存和地址 1.1内存 1.2 深入理解计算机编址 二、指针变量和地址 2.1 取地址操作符&#xff08;&&#xff09; 2.2 指针变量和解应用操作符 2.2.1 指针变量 2.2.2 解引用操作符 2.3指针变量的大小 三、指针变量类型的意义 3.1 指针的解引用 3.1指针-整数…

2024 年 6 月区块链游戏研报:Pixels 引发 DAU 波动,行业用户留存率差异显著

作者&#xff1a;Stella L (stellafootprint.network) 数据来源&#xff1a;区块链游戏研究页面 2024 年 6 月&#xff0c;加密货币市场遭遇显著回调&#xff0c;比特币跌幅达 7.3%&#xff0c;以太坊更是下跌了 9.8%。此番波动不可避免地波及区块链游戏领域&#xff0c;导致…