若依(RuoYi-Vue)+Flowable工作流前后端整合教程

此教程適合若依前后端分離項目,其他項目可以在擴展列表中進行查找。

近期公司里需要對很久以前的RuoYi-Vue前后端分離項目擴展出flowable的功能,當然這個重任也是落在了我的身上(不然也不會有這篇文章),然后我在官網看到了RuoYi-Vue-Flowable這個項目,按照文檔提供的遷移方式對于我們這個老版本的項目來說無法正常運行,所以我聯系了作者并更新了一下文檔,打算在網上在發布一篇(畢竟有的人懶得看官方文檔)。

官方項目地址:https://gitee.com/tony2y/RuoYi-flowable

把項目拉到本地后下面開始整合教程,整合教程分為前端和后端兩個模塊。

前端遷移流程

1.flowale功能頁面相關內容遷移

1.1 把目錄ruoyi-ui/src/views/下的flowable文件夾移動到你自己前端項目中的**/src/views/**文件下。

1.2 移動頁面配套的js文件,將**ruoyi-ui/src/api/下的flowable文件夾移動到自己項目中的/src/api/**文件下。

2.flowale流程設計器相關內容遷移

ruoyi-ui/src/components目錄下的customBpmn,flow,parser,Process,render,tinymce文件夾移動到自己項目中的**/src/components**文件下。

3.表單設計器與人員選擇模塊相關文件遷移

3.1ruoyi-ui/src/views/tool中的build文件夾移動到自己項目中的**/src/views/tool**文件下,存在則覆蓋。

3.2 遷移表單設計器相關樣式,將ruoyi-ui/src下的styles文件移動到自己項目中的**/src**文件夾下。

3.3 修改ruoyi-ui/src/utils/index.js中的deepClone函數。

修改為如下內容,存在該函數做修改,不存在做新增。

// 深拷貝對象
export function deepClone(obj) {const _toString = Object.prototype.toString// null, undefined, non-object, functionif (!obj || typeof obj !== 'object') {return obj}// DOM Nodeif (obj.nodeType && 'cloneNode' in obj) {return obj.cloneNode(true)}// Dateif (_toString.call(obj) === '[object Date]') {return new Date(obj.getTime())}// RegExpif (_toString.call(obj) === '[object RegExp]') {const flags = []if (obj.global) { flags.push('g') }if (obj.multiline) { flags.push('m') }if (obj.ignoreCase) { flags.push('i') }return new RegExp(obj.source, flags.join(''))}const result = Array.isArray(obj) ? [] : obj.constructor ? new obj.constructor() : {}for (const key in obj) {result[key] = deepClone(obj[key])}return result
}

3.4 遷移或替換相關js文件,存在則替換,不存在則新增,將ruoyi-ui/src/utils/generatorruoyi-ui/src/utils文件夾中對應下圖紅框的js文件移動到自己項目中對應的文件夾中。

3.5 遷移表單設計器相關圖標,將ruoyi-ui/src下的icons文件移動到自己項目中的**/src**文件夾下。

4. 流程表達式、流程監聽器相關內容遷移

4.1 相關頁面遷移,將ruoyi-ui/src/views/system下的expression,listener文件夾移動到自己項目中的**/src/views/system**文件夾下。

4.2 相關js文件遷移,將ruoyi-ui/src/api/system下的expression.js,listener.js文件移動到自己項目中的**/src/api/system**文件夾下。

5. main.js中引入組件

main.js中結合上圖添加如下代碼。

import Tinymce from '@/components/tinymce/index.vue'Vue.component('tinymce', Tinymce)

6.package.json中新增依賴

package.json中結合上圖添加如下依賴。

"bpmn-js": "^11.1.0",
"diagram-js": "^11.4.1",
"xcrud": "^0.4.19",
"vkbeautify": "^0.99.3",

7. 新增路由配置

ruoyi-ui/src/router/index.js文件中添加路由配置,不同的ruoyi版本路由寫法不一致,請參照自己項目路由進行添加。

參考如下:

  {path: '/flowable',component: Layout,hidden: true,children: [{path: 'definition/model/',component: () => import('@/views/flowable/definition/model'),name: 'Model',meta: { title: '流程設計', icon: '' }}]},{path: '/flowable',component: Layout,hidden: true,children: [{path: 'task/finished/detail/index',component: () => import('@/views/flowable/task/finished/detail/index'),name: 'FinishedRecord',meta: { title: '流程詳情', icon: '' }}]},{path: '/flowable',component: Layout,hidden: true,children: [{path: 'task/myProcess/detail/index',component: () => import('@/views/flowable/task/myProcess/detail/index'),name: 'MyProcessRecord',meta: { title: '流程詳情', icon: '' }}]},{path: '/flowable',component: Layout,hidden: true,children: [{path: 'task/myProcess/send/index',component: () => import('@/views/flowable/task/myProcess/send/index'),name: 'SendRecord',meta: { title: '流程發起', icon: '' }}]},{path: '/flowable',component: Layout,hidden: true,children: [{path: 'task/todo/detail/index',component: () => import('@/views/flowable/task/todo/detail/index'),name: 'TodoRecord',meta: { title: '流程處理', icon: '' }}]},{path: '/tool',component: Layout,hidden: true,children: [{path: 'build/index',component: () => import('@/views/tool/build/index'),name: 'FormBuild',meta: { title: '表單配置', icon: '' }}]}

8. 啟動項目

刪除node_modules文件夾,控制臺執行npm install下載完畢后啟動項目即可。

由于加入了流程校驗器,遷移項目后啟動錯誤請執行以下命令

npm install create-bpmnlint-plugin -D

后端遷移流程

1. 在父級pom文件中加入如下依賴

<!-- properties -->
<properties><flowable.version>6.7.2</flowable.version>
</properties>
<!-- dependency -->
<dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-flowable</artifactId><version>${ruoyi.version}</version>
</dependency>
<dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.5.21</version><scope>compile</scope>
</dependency>
<dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>${flowable.version}</version>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.0</version>
</dependency>
<!--el表達式計算-->
<dependency><groupId>com.googlecode.aviator</groupId><artifactId>aviator</artifactId><version>5.3.3</version>
</dependency><!--modules --><modules><module>ruoyi-flowable</module>
</modules>

2. 把RuoYi-flowable項目中的ruoyi-flowable文件夾整個遷移到自己項目中

3. 在admin項目的pom文件中引入ruoyi-flowable項目

<dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-flowable</artifactId>
</dependency>

4. 遷移flowable相關類

根據若依項目的版本不同,缺少的實體類,mapper,service也會有所不同,所以需要根據flowable項目中所提示缺少的類進行針對性的拷貝,如果為service接口記得補全對應的controller。

5. 在admin項目的yml配置文件中新增如下配置

application.yml文件中添加如下配置

# flowable相關表
flowable:# true 會對數據庫中所有表進行更新操作。如果表不存在,則自動創建(建議開發時使用)database-schema-update: false# 關閉定時任務JOBasync-executor-activate: false

數據源地址后需要加上nullCatalogMeansCurrent=true,保證自動創建flowable表時不會報錯。

6. 遷移數據庫表

新建一個庫執行tony-flowable.sql文件,flowable項目中少什么表就將對應的表導入到自己的數據庫中,mysql數據庫版本要用5.7。

7. 數據遷移

sys_menu對應下圖紅框中的菜單數據加入到自己的表中。

sys_dict_type對應下圖紅框中的字典類型數據添加到自己的表中。

sys_dict_data對應下圖紅框中的字典數據添加到自己的表中。

8. 啟動項目

第一次啟動時需要把yml配置文件中的database-schema-update設置為true,這樣會自動創建flowable中所需要的全部表。

完成上述操作后就可以在自己項目中正常使用了。

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

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

相關文章

ubuntu 網絡管理--NetworkManager

ubuntu 網絡管理--NetworkManager 1 介紹2 NetworkManager 命令2 nmcli 命令顯示可用的wifi AP連接wifi檢查網絡連接 ?? 如何刪除刪除網絡連接查看設備狀態添加一個新的以太網連接設置靜態 IP 地址啟用并測試連接添加新的wifi連接 3 其他命令參考 1 介紹 NetworkManager 是標…

計算機網絡習題(第5章 網絡層 第6章 傳輸層)

第5章 網絡層 一、單選題 1、下列關于 IPv4 地址的說法中&#xff0c;錯誤的是( )。 A、 IP 地址是邏輯地址 B、 IP 地址一般用點分十進制表示 C、 205.106.286.36 是一個合法的 IP 地址 D、 同一個網絡中不能有兩臺計算機的 IP 地址相同 正確答案&#xff1a; C 2、…

水庫大壩三維模型的開發和使用3Dmax篇

成果圖 開發過程 工具插件three.js先加載模型做水體銜接水位測量標尺水位標記斷面標記大壩監測點打點 上代碼&#xff0c;技術交流V: bloxed <template><div class"box w100 h100"><el-row :gutter"20" v-loading"loading"e…

【藍橋杯每日一題】分糖果——DFS

分糖果 藍橋杯每日一題 2024-12-24 分糖果 DFS 題目描述 兩種糖果分別有 9 個和 16 個&#xff0c;要全部分給 7 個小朋友&#xff0c;每個小朋友得到的糖果總數最少為 2 個最多為 5 個&#xff0c;問有多少種不同的分法。糖果必須全部分完。 只要有其中一個小朋友在兩種方案中…

計算機畢設-基于springboot的校園招聘網站的設計與實現(附源碼+lw+ppt+開題報告)

博主介紹&#xff1a;?多個項目實戰經驗、多個大型網購商城開發經驗、在某機構指導學員上千名、專注于本行業領域? 技術范圍&#xff1a;Java實戰項目、Python實戰項目、微信小程序/安卓實戰項目、爬蟲大數據實戰項目、Nodejs實戰項目、PHP實戰項目、.NET實戰項目、Golang實戰…

重生之我在異世界學編程之C語言:深入動態內存管理收尾 + 柔性數組篇

大家好&#xff0c;這里是小編的博客頻道 小編的博客&#xff1a;就愛學編程 很高興在CSDN這個大家庭與大家相識&#xff0c;希望能在這里與大家共同進步&#xff0c;共同收獲更好的自己&#xff01;&#xff01;&#xff01; 本文目錄 引言正文常見的動態內存管理錯誤&#xf…

無人直播源碼

DY無人直播系統架構設計介紹 在DY等短視頻平臺的直播中&#xff0c;無人直播系統能夠提供自動化、智能化的互動體驗&#xff0c;既減輕了主播的工作量&#xff0c;又提升了觀眾的參與感。以下是一個典型的無人直播系統架構設計&#xff0c;包含全局配置、點對點互動、產品話術、…

被裁20240927 --- 嵌入式硬件開發 前篇

前篇主要介紹一些相關的概念&#xff0c;用于常識掃盲&#xff0c;后篇開始上干貨&#xff01; 他捧著一只碗吃過百家的飯 1. 處理器芯片1.1 處理器芯片制造商一、 英特爾&#xff08;Intel&#xff09;二、 三星&#xff08;SAMSUNG&#xff09;三、 高通&#xff08;Qualcomm…

準備考試:解決大學入學考試問題

引言 在編程競賽和算法挑戰中&#xff0c;我們經常會遇到各種類型的組合問題。這些問題不僅考驗我們的邏輯思維能力&#xff0c;還要求我們熟練掌握數據結構和算法。在這篇文章中&#xff0c;我們將探討一個有趣的問題——“準備考試”&#xff0c;這個問題來自于一個虛構的情…

【Linux】進程間通信 -> 匿名管道命名管道

進程間通信的目的 數據傳輸&#xff1a;一個進程許需要將它的數據發送給另外一個進程。資源共享&#xff1a;多個進程之間共享同樣的資源。通知事件&#xff1a;一個進程需要向另一個或一組進程發送消息&#xff0c;通知它們發生了某種事件&#xff08;如進程終止時要通知父進程…

Pytorch注意力機制應用到具體網絡方法(閉眼都會版)

文章目錄 以YoloV4-tiny為例要加入的注意力機制代碼模型中插入注意力機制 以YoloV4-tiny為例 解釋一下各個部分&#xff1a; 最左邊這部分為主干提取網絡&#xff0c;功能為特征提取中間這邊部分為FPN&#xff0c;功能是加強特征提取最后一部分為yolo head&#xff0c;功能為獲…

修改el-select下拉框高度;更新:支持動態修改

文章目錄 效果動態修改&#xff1a;效果代碼固定高度版本動態修改高度版本&#xff08;2024-12-25 更新&#xff1a; 支持動態修改下拉框高度&#xff09; 效果 動態修改&#xff1a;效果 代碼 固定高度版本 注意點&#xff1a; popper-class 盡量獨一無二&#xff0c;防止影…

開關電源特點、分類、工作方式

什么叫開關電源隨著電力電子技術的發展和創新&#xff0c;使得開關電源技術也在不斷地創新。目前&#xff0c;開關電源以小型、輕量和高效率的特點被廣泛應用幾乎所有的電子設備&#xff0c;是當今電子信息產業飛速發展不可缺少的一種電源方式。 開關電源是利用現代電力電子技…

Linux應用軟件編程-文件操作(目錄io)

1.打開目錄&#xff1a; DIR *opendir(const char *name); 功能&#xff1a;打開一個目錄獲得一個目錄流指針 參數: name:目錄名 返回值&#xff1a;成功返回目錄流指針&#xff1b;失敗返回NULL 2.讀目錄&#xff1a; struct dirent *readdir(DIR *dirp); 功能&…

有哪些開發者模式?

1、單例開發模式&#xff08;Singleton Pattern&#xff09; 單例模式是一種創建型設計模式&#xff0c;目的是確保在程序運行期間&#xff0c;某個類只有一個實例&#xff0c;并提供一個全局訪問點來訪問該實例。 核心特點 唯一實例&#xff1a;一個類只能創建一個對象實例。…

如何完全剔除對Eureka的依賴,報錯Cannot execute request on any known server

【現象】 程序運行報錯如下&#xff1a; com.netflix.discovery.shared.transport.TransportException報錯Cannot execute request on any known server 【解決方案】 &#xff08;1&#xff09;在Maven工程中的pom去掉Eureka相關的引用&#xff08;注釋以下部分&#xff0…

vscode寫python,遇到問題:ModuleNotFoundError: No module named ‘pillow‘(已解決 避坑)

1 問題&#xff1a; ModuleNotFoundError: No module named pillow 2 原因&#xff1a; 原因1&#xff1a;安裝Pillow的pip命令所處的python版本與vscode調用的python解釋器版本不同。 如&#xff1a; 原因2&#xff1a;雖然用的是pillow&#xff0c;但是寫代碼的時候只能用…

Ashy的考研游記

文章目錄 摘要12.1112.2012.21 DAY1&#xff08;政治/英語&#xff09;政治英語 12.22 DAY2&#xff08;數學/專業課&#xff09;數學專業課 結束估分 摘要 在24年的12月里&#xff0c;Ashy完成了他的考研沖刺&#xff0c;順利的結束了他本年度的考研之旅。 在十二月里&#…

AIGC實踐|AI/AR助力文旅沉浸式互動體驗探索

前言&#xff1a; 本篇文章的創作靈感來源于近期熱門話題——讓文物“動起來”&#xff0c;各大博物館成為新進潮流打卡地。結合之前創作的AI文旅宣傳片良好的流量和反饋&#xff0c;外加最近比較感興趣的AR互動探索&#xff0c;想嘗試看看自己能不能把這些零碎的內容整合起來…

tcp 的三次握手與四次揮手

問1: 請你說一下tcp的三次握手一次握手兩次握手三次握手問: 為什么不四(更多)次握手? 問 2: 請說一下 tcp 的 4 次揮手一次揮手兩次揮手問題:能不能等到數據傳輸完成再返回 ack? 三次揮手四次揮手問: 為什么要等兩個最大報文存在時間? bg: tcp 是可靠的連接,如何保證 建立連…