Springoot、Flowable快速學習

應用背景:
公司打算做個考勤系統,涉及到請假、補卡之類的流程審批。想到了工作流,gitee、github上看了下開源的,有自研的和常見的Flowable?、Activiti?。首先放棄自研的,考慮到成熟度、社區生態,最后選擇Flowable?。

我還是幾年前自學的Activiti?,印象中工作流挺復雜的,開發難度較大,但是這次開發集成 Flowable,感覺還是挺簡單順利的。
首先網上找個開源的工作流項目,去大概看看實現方式、過程。
參考了:RuoYi-flowable、RuoYi-Flowable-Plus(他們的在線演示地址可能有點問題,可以自行本地啟動)

我是先看的 RuoYi-flowable,方法有些流程方法邏輯不太完整之后,結合RuoYi-Flowable-Plus對方法進行完善,讀者大佬們也可以直接學習RuoYi-Flowable-Plus

整個流程大致實現(個人片面的理解,希望大家補充)
前端使用 BPMN 插件,把流程定義(流程圖)完成后的整個xml轉成字符串發送給后端,后端在需要時解析xml獲取到審批人、監聽、網關邏輯。流程圖展示時也是直接獲取到xml字符串作相應的處理后返回xml字符串
在這里插入圖片描述

項目結構:
前后端代碼在一個工程里,整個流程定義(畫圖)、流程發起就涉及到這三個Controller
在這里插入圖片描述

在這里插入圖片描述

訪問頁面,需要vue項目部署啟動(沒搞過的網上搜搜)在這里插入圖片描述
學習 RuoYi-flowable 時記錄的知識點
注意springboot、flowable 版本是否匹配,我踩到的坑就是springboot2.7.1不能集成flowable6.8.0

  1. 好像是添加不上自定義監聽,具體什么bug忘記了,改成true就好了
  2. 把 Flowable sql日志打印出來,有助于了解表關系在這里插入圖片描述
  3. 流程狀態只有進行中、完成,但是我們實際需求需要其他的狀態,比如:駁回,這時就參考了 RuoYi-Flowable-Plus,項目中搜 PROCESS_STATUS_KEY ,實現原理就是給每個流程實例的 Variable 中添加流程狀態屬性,在流程狀態變更時做狀態變更,注意有個 GlobalEventListenerConfig 、GlobalEventListener 類,里面做了流程結束狀態變更。
  4. 流程審批人通知:
    1) 頁面上每個流程節點配置任務監聽器,自行修改FlowTaskListener,實現具體業務 在這里插入圖片描述
    2)一個個配置麻煩,那就注冊一個全局任務監聽去通知
  5. 流程處理,頁面只有審批按鈕,自行添加下按鈕,具體業務方法項目中是有的,只是沒寫按鈕
    在這里插入圖片描述
    在這里插入圖片描述
  6. 兩個項目中具體方法實現邏輯會有些區別,如:啟動流程實例,我使用 RuoYi-Flowable-Plus 的代碼
  7. 我把 流程 獨立出一個服務,但是遇到個問題:如補卡審批完成后需要對考勤數據進行更新,這是就涉及到了另一個考勤服務,想到的方案
    1)mq ,審批完成后將數據發送到消息隊列,考勤服務進行消費
    2)審批完成后將數據存到數據庫表,考勤服務定時掃表進行業務處理,前提是不同服務使用同一個庫且不具備mq使用條件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77550.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77550.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77550.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于 【Spring Boot Configuration Annotation Processor 未配置問題】 的詳細分析、解決方案及代碼示例

以下是關于 Spring Boot Configuration Annotation Processor 未配置問題 的詳細分析、解決方案及代碼示例: 1. 問題描述 當使用 Spring Boot 的配置注解(如 ConfigurationProperties、Value、ConditionalOnProperty 等)時,若未…

Spring系列四:AOP切面編程 第一部分

AOP切面編程 💗AOP-官方文檔🍝AOP 講解🍝AOP APIs 💗動態代理🍝初探動態代理🍝動態代理深入🍝AOP問題提出📗使用土方法解決📗 對土方法解耦-開發最簡單的AOP類&#x1f4…

【云計算】云計算中IaaS、PaaS、SaaS介紹

0 隨著云計算、大數據、人工智能發展迅速,布局“云”已經是互聯網企業共識。云計算的服務類型分為三種,分別為IaaS、PaaS、SaaS,這三個分別是什么意思,今天做一個簡單的介紹和了解。 一、云計算 云計算是用戶需求通過Internet獲取計算資源,把計算資源包裝成服務,提供給…

使用HYPRE庫并行裝配IJ稀疏矩陣指南: 矩陣預分配和重復利用

使用HYPRE庫并行裝配IJ稀疏矩陣指南 HYPRE是一個流行的并行求解器庫,特別適合大規模稀疏線性系統的求解。下面介紹如何并行裝配IJ格式的稀疏矩陣,包括預先分配矩陣空間和循環使用。 1. 初始化矩陣 首先需要創建并初始化一個IJ矩陣: #incl…

目標跟蹤最新文章閱讀列表

AAAI2025 TrackFormer: Multi-Object Tracking with Transformers 論文:https://arxiv.org/abs/2101.02702 代碼:https://github.com/timmeinhardt/trackformer AAAI2025 SUTrack 單目標跟蹤 論文:https://pan.baidu.com/s/10cR4tQt3lSH5V2RNf7-3gg?pwd=pks2 代碼:htt…

分布式GPU上計算長向量模的方法

分布式GPU上計算長向量模的方法 當向量分布在多個GPU卡上時,計算向量模(2-范數)需要以下步驟: 在每個GPU上計算本地數據的平方和跨GPU通信匯總所有平方和在根GPU上計算總和的平方根 實現方法 下面是一個完整的CUDA示例代碼,使用NCCL進行多…

高并發下單庫存扣減異常?飛算 JavaAI 自動化生成分布式事務解決方案

在電商、旅游等行業業務量激增,高并發下單場景中,傳統庫存扣減方式弊端盡顯。超賣問題因缺乏有效并發控制機制頻發,多個訂單同時訪問庫存數據,導致同一商品多次售出,訂單無法履約引發客戶投訴;同時&#xf…

MVCWebAPI使用FromBody接受對象的方法

近期在做軟件升級操作的時候突然想著需要的參數比較多&#xff0c;如果需要參數的話參數比較多&#xff0c;所有想著使用frombody來集合數據統一操作做了個樣張希望對您有幫助 代碼如下&#xff1a; /// <summary>/// 入口當前文件接口下的操作數據/// </summary>/…

Atlas 800I A2 離線部署 DeepSeek-R1-Distill-Llama-70B

一、環境信息 1.1、硬件信息 Atlas 800I A2 1.2、環境信息 注意&#xff1a;這里驅動固件最好用商業版&#xff0c;我這里用的社區版有點小問題 操作系統&#xff1a;openEuler 22.03 LTS NPU驅動&#xff1a;Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run NPU固…

NLP預處理:如何 處理表情符號

一、說明 本系列文總結了在NLP處理中&#xff0c;進行文本預處理的一些內容、步驟、處理工具包應用。本篇專門談論網上文章表情符號處理&#xff0c;對于初學者具有深刻學習和實驗指導意義。 二、介紹 表情符號已成為現代交流不可或缺的一部分&#xff0c;尤其是在社交媒體、…

C++/SDL 進階游戲開發 —— 雙人塔防(代號:村莊保衛戰 14)

&#x1f381;個人主頁&#xff1a;工藤新一 &#x1f50d;系列專欄&#xff1a;C面向對象&#xff08;類和對象篇&#xff09; &#x1f31f;心中的天空之城&#xff0c;終會照亮我前方的路 &#x1f389;歡迎大家點贊&#x1f44d;評論&#x1f4dd;收藏?文章 文章目錄 二…

解鎖空間數據新質生產力暨:AI(DeepSeek、ChatGPT)、Python、ArcGIS Pro多技術融合下的空間數據分析、建模與科研繪圖及論文寫作

人工智能&#xff08;AI&#xff09;與ArcGIS Pro的結合&#xff0c;為空間數據處理和分析開辟了前所未有的創新路徑。AI通過強大的數據挖掘、深度學習及自動化能力&#xff0c;可高效處理海量、多源、異構的空間數據&#xff0c;極大提升了分析效率與決策支持能力。而ArcGIS P…

18.2.go語言redis中使用lua腳本

在 Redis 中使用 Lua 腳本可以實現原子性操作、減少網絡開銷以及提高執行效率。 Redis 執行 Lua 腳本的原理 Redis 內置了 Lua 解釋器&#xff0c;能夠直接在服務器端執行 Lua 腳本。當執行 Lua 腳本時&#xff0c;Redis 會將腳本作為一個整體執行&#xff0c;保證腳本執行期…

?Unity_Demolition Media Hap (播放Hap格式視頻 超16K大分辨率視頻 流暢播放以及幀同步解決方案)

播放大分辨率視頻以及實現局域網視頻同步是許多開發者會遇到的需求,AVPro有一個 Ultra Edition版本,也能播放Hap格式視頻,之外就是Demolition Media Hap插件啦,實測即使是 7208*3808 大分辨率的視頻幀率還是能穩定在30幀,它能幫助我們輕松解決這些問題??。 一、插件概述 …

AI大模型知識與醫療項目實踐 - Java架構師面試實戰

AI大模型知識與醫療項目實踐 - Java架構師面試實戰 本文模擬了一場互聯網大廠的Java架構師面試&#xff0c;圍繞AI大模型知識、工具以及其在醫療項目中的實踐和趨勢展開討論。 第一輪提問 面試官&#xff1a; 馬架構&#xff0c;請您介紹一下AI大模型的基本概念及其在醫療領…

Windows 的文件系統不區分大小寫,Linux區分

在 Windows 系統中&#xff0c;文件系統默認是不區分大小寫的。這意味著在 Windows 上&#xff0c;文件名 ui_BalanceMeasureScreenUI.h 和 ui_balancemeasurescreenui.h 被視為同一個文件。因此&#xff0c;即使你在代碼中使用了不同的大小寫方式來引用同一個文件&#xff0c;…

Unity 資源合理性檢測

一&#xff1a;表格過度配置&#xff0c;表格資源是否在工程中存在&#xff0c;并輸出不存在的資源 import pandas as pd import glob import osassets [] count 0# 遍歷configs文件夾下所有xlsx文件 for file_path in glob.glob(configs/*.xlsx):count 1try:sheets pd.re…

Python爬蟲實戰:獲取高考資源網各學科精品復習資料

一、引言 高考資源網擁有豐富的高考復習資料,對于我們而言,獲取這些資源并整理分享能為考生提供有價值的幫助。然而,手動從網站查找和下載資源效率低且易出錯。利用 Python 爬蟲技術可實現自動化資源獲取,提高工作效率。但在爬取過程中,需考慮網站反爬機制,采取相應措施…

DuckDB:現代數據分析的“SQLite“內核革命

在數據工程、數據科學快速演進的今天&#xff0c;一個新的名字正在快速躥紅&#xff1a;DuckDB。 有人稱它是數據分析領域的SQLite&#xff0c;也有人稱它為下一代輕量級OLAP引擎。 無論哪種稱呼&#xff0c;都離不開一個事實&#xff1a; DuckDB 重新定義了小型數據倉庫和本地…

GIS開發筆記(16)解決基于osg和osgearth三維地圖上添加placeNode圖標點擊不易拾取的問題

一、實現效果 二、實現原理 在圖標添加的位置同時添加一個紅色圓球,半徑為5000~8000米,圖標和圓球掛接到同一個group節點,group節點再掛接到根節點,當點擊到圓球時,通過遍歷父節點就可以找到被點擊的圖標節點。 三、參考代碼 //添加圖標代碼 #pragma once #include &…