工作流引擎架構設計

一個應用MIS的系統的架構離不開工作流引擎,具有流程引擎思維的架構人員設計系統的時候就有流程的思維,他區別于過程思維,過程思維開發出來的系統,用戶面對的是菜單、模塊。而流程思維設計出來的系統就是發起、待辦、在途、查詢、近期等菜單,用戶使用起來比較清爽、容易培訓、學習成本低。比如:我們做一個工單系統,如果采用流程思維則創建通過創建一個工單流程,然后設計表單即可,如下圖:

(流程引擎:流程設計器)

(表單引擎:表單設計器)

所有說軟件系統的架構需要一個工作流引擎支撐系統的開發,您設計的系統就是面向流程的系統,在業務變化的時候,您可以隨時調整,使用較小的成本來開發您的系統。

但隨著同類需求不斷增多,于是開始了工作流引擎的開發之路。查找了一些資料之后,開發了現階段的工作流引擎,文章后面會有介紹。

雖然現在基本上能滿足日常的需求,但感覺還不夠智能,還有很多的優化空間,所以正好借此機會,詳細了解了一些完善的工作流引擎框架,以及在架構設計上需要注意的點,形成了這篇文章,分享給大家。

  1. 什么是工作流

先看一下維基百科對于工作流的定義:

工作流(Workflow),是對工作流程及其各操作步驟之間業務規則的抽象、概括描述。工作流建模,即將工作流程中的工作如何前后組織在一起的邏輯和規則,在計算機中以恰當的模型表達并對其實施計算。

工作流要解決的主要問題是:為實現某個業務目標,利用計算機在多個參與者之間按某種預定規則自動傳遞文檔、信息或者任務。

簡單來說,工作流就是對業務的流程化抽象。WFMC(工作流程管理聯盟) 給出了工作流參考模型如下:

舉一個例子,比如公司辦公的 OA 系統,就存在大量的申請審批流程。而在處理這些流程時,如果每一個流程都對應一套代碼,顯然是不現實的,這樣會造成很大程度上的代碼冗余,而且開發工作量也會驟增。

這個時候就需要一個業務無關的,高度抽象和封裝的引擎來統一處理。通過這個引擎,可以靈活配置工作流程,并且可以自動化的根據配置進行狀態變更和流程流轉,這就是工作流引擎。

  1. 簡單的工作流

那么,一個工作流引擎需要支持哪些功能呢?

這個問題并沒有一個標準答案,需要根據實際的業務場景和需求來分析。在這里,我通過一個工單流程的演進,從簡單到復雜,循序漸進地介紹一下都需要包含哪些基礎功能。

  1. 最簡單流程:

最簡單的一個流程工單,申請人發起流程,每個節點審批人逐個審批,最終流程結束, 在ccflow看來,屬于線性流程,每個節點都是線性節點,他是一條線。流程啟動后,在一個時間點上,只有一個節點是活躍的。

  1. 會簽定義

在這個過程中,節點分成了兩大類:簡單節點和復雜節點。簡單節點處理邏輯不變,依然是處理完之后自動到下一個節點。復雜節點比如說會簽節點,則不同,需要其下的所有子節點都處理完成,才能到下一個節點,在ccflow的概念里,屬于同表單分合流、或者異表單分合流。

  1. 并行定義

如下并行流程圖:

同樣屬于復雜節點,其任何一個子節點處理完成后,都可以進入到下一個節點。在ccflow概念中節點上多人處理規則中的協作模式,當前節點所有的人都完成后,由最后一個人發送到下一個節點上去,我們稱為會簽節點。

  1. 條件判斷定義

需要根據不同的表單內容進入不同的分支流程,舉一個例子,比如在進行休假申請時,請假一天需要直屬領導審批,如果大于三天則需要部門領導審批。

在ccflow的概念中,方向條件分為表單字段、用戶身份、用戶部門、API、流程系統參數等,一個靈活高可配置的系統,需要支持多中場景,才能減少代碼的開發。

  1. 動態審批人定義

審批節點的審批人需要動態獲取,并且可配置。

審批人的獲取方式可以分以下幾種:

  1. 固定審批人
  2. 從申請表單中獲取
  3. 根據組織架構,動態獲取
  4. 從配置的角色組或者權限組中獲取
  1. 撤銷和駁回

節點狀態變更可以有申請人撤回,審批人同意,審批人駁回。那么在駁回時,可以直接駁回到開始節點,流程結束,也可以到上一個節點。更復雜一些,甚至可以到前面流程的任意一個節點。在ccflow的概念中,撤銷是發送人主動執行的動作,駁回責任處理人退回的動作。

  1. 自動化節點

有一些節點是不需要人工參與的,比如說聯動其他系統自動處理,或者審批節點有時間限制,超時自動失效,自動化節點需要服務來支持,在ccflow的概念中,可以在節點屬性的誰執行它,可以設置機器執行節點。

  1. 個性化通知

節點審批之后,可以配置不同的通知方式來通知相關人。

以上是我列舉的一些比較常見的需求點,還有像加簽,代理,腳本執行等功能,如果都實現的話,應該會是一個龐大的工作量。當然了,如果目標是做一個商業化產品的話,功能還是需要更豐富一些的。但把這些常見需求點都實現的話,應該基本可以滿足大部分的需求了,至少對于我們系統的工單流程來說,目前是可以滿足的。

  1. 工作流引擎對比

既然這是一個常見的需求,那么需要我們自己來開發嗎?市面上有開源項目可以使用嗎?答案是肯定的,目前,市場上比較有名的開源流程引擎有 Osworkflow、Jbpm、Activiti、Flowable、Camunda, CCFlow,JFlow 等等。其中:Jbpm、Activiti、Flowable、Camunda 四個框架同宗同源,屬于國外的工作流引擎。CCFlow,JFlow是國產的工作流引擎,它集成的自己研發的表單引擎,融合了MIS系統開發中,業務流程、公文流程、工業流程下的多種業務規則,讓其設計更具有適應性。流程引擎、表單引擎、數據、用戶之間的關系,類似于車的控制系統、車廂、數據、操作員,如下圖所示。

(圖:流程引擎、表單引擎、業務數據、操作員的關系)

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

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

相關文章

SELinux refpolicy詳解(2)

接前一篇文章:SELinux refpolicy詳解(1) 本文內容引自: Documentation SELinuxProject/refpolicy Wiki GitHub 4. 入門指南 文檔是參考策略的主要目標之一。入門指南(https://github.com/SELinuxProject/refpolicy/wiki/GettingStarted)提供了有關編寫參考策略模塊的…

關于vue3項目中 vite.config.js項目配置 多個請求地址代理配置

關于VUE3 vite.config.js文件配置相關 提示:本文記錄了我們項目中使用到了多個不同的接口請求前綴地址配置代理,如果有更好的優化方案歡迎大佬指點呀: 以下是我最近項目中的vite.config.js文件配置,由于剛開始vue3不久&#xff…

JS 類型轉換機制

這篇寫得不錯: 百度安全驗證 包括顯示轉換(就是調用函數)、隱式轉換(運算符 - 時自動轉換成數字/字符串) 注意到: abc-1 //NaN 非法字符轉換為數字 結果是NaN

LeetCode 1410. HTML 實體解析器:字符串匹配

【LetMeFly】1410.HTML 實體解析器:字符串匹配 力扣題目鏈接:https://leetcode.cn/problems/html-entity-parser/ 「HTML 實體解析器」 是一種特殊的解析器,它將 HTML 代碼作為輸入,并用字符本身替換掉所有這些特殊的字符實體。…

【點云surface】基于多項式重建的平滑和法線估計

1 介紹 基于多項式重建的平滑和法線估計(Smoothing and normal estimation based on polynomial reconstruction)是一種常用的點云處理方法,用于平滑點云數據并估計每個點的法線信息。 該方法基于Moving Least Squares(MLS&…

docker安裝nacos,實現和mysql容器的通信

1.下載nacos鏡像 docker pull nacos/nacos-server2. 啟動nacos 啟動命令如下: docker run -d -p 8848:8848 --name nacos \ -e JVM_XMS256m \ -e JVM_XMX256m \ -e MODEstandalone \ -e SPRING_DATASOURCE_PLATFORMmysql \ -e MYSQL_SERVICE_HOST192.168.131.223…

連接的原理(待修改)

搞數據庫?個避不開的概念就是Join,翻譯成中?就是連接。 相信很多?伙伴在初學連接的時候有些?臉懵逼,理解了連接的語義之后?可能不明?各個表中的記 錄到底是怎么連起來的,以?于在使?的時候常常陷?下邊兩種誤區: 誤區?&…

linux磁盤清理

目錄 排查過程1、查看磁盤占用情況2. 按照占用大小進行倒排-當前目錄及其子目錄3.當前目錄磁盤占用情況 清理命令 排查過程 1、查看磁盤占用情況 df -hdf -h 命令用于顯示磁盤空間的使用情況,以人類可讀的方式呈現,其中:df 是 “disk free”…

“AI就緒”新計劃,亞馬遜云科技到2025年向200萬人提供免費AI技能培訓

AI就緒(AI Ready)計劃 到2025年為全球200萬人提供 免費人工智能(AI)技能培訓和教育資源 亞馬遜云科技宣布啟動“AI就緒(AI Ready)”計劃,旨在到2025年為全球200萬人提供免費人工智能&#xff08…

Python與設計模式--適配器模式

7-Python與設計模式–適配器模式 一、外包人員系統兼容 假設某公司A與某公司B需要合作,公司A需要訪問公司B的人員信息,但公司A與公司B協議接口不同, 該如何處理?先將公司A和公司B針對各自的人員信息訪問系統封裝了對象接口。cla…

易點易動固定資產管理系統:全生命周期管理的理想選擇

在現代企業中,固定資產管理是一項至關重要的任務。為了確保企業的資產安全、提高資產利用率,全面管理固定資產的生命周期至關重要。易點易動固定資產管理系統為企業提供了一種全面的解決方案,實現了從固定資產申購、采購、入庫、領用、退庫、…

linux 內存回收mglru算法代碼注釋2

mglru與原lru算法的兼容 舊的lru算法有active與inactive兩代lru,可參考linux 內存回收代碼注釋(未實現多代lru版本)-CSDN博客 新的算法在引入4代lru的同時,還引入了tier的概念。 新舊算法的切換的實現在lru_gen_change_state&a…

ELK企業級日志分析平臺——elasticsearch

集群部署 文檔:https://www.elastic.co/guide/en/elasticsearch/reference/7.6/index.html 下載:https://elasticsearch.cn/download/ 主機 ip 角色 k8s1 192.168.92.11 cerebro elk1 192.168.92.31 elasticsearch elk2 192.168.92.32 elasti…

數據庫實驗五 數據庫設計

數據庫實驗五 數據庫設計 一、實驗目的二、實驗內容三、實驗內容四、驗證性實驗五、設計性實驗 一、實驗目的 1.了解E-R圖構成要素以及各要素圖元。 2.掌握概念模型E-R圖的繪制方法。 3.掌握概念模型向邏輯模型的轉換原則和步驟。 4.運用sql編程實現 二、實驗內容 1.選取一個…

線段樹---數據結構學習

線段樹的教程可以參照線段樹 這里推薦 https://oi-wiki.org/ 這個網站,數據結構講的非常透。 線段樹學了很多次忘了很多次,這次打算記錄一下以后方便回顧(leetcode這類題遇見的不算特別多)。 樣板例題 leltcode-307 #題目樣板 class NumArray {private …

醫院手術麻醉信息系統全套源碼,自主版權,支持二次開發

醫院手術麻醉信息系統全套商業源碼,自主版權,支持二次開發 手術麻醉信息系統是HIS產品的中的一個組成部分,主要應用于醫院的麻醉科,屬于電子病歷類產品。醫院麻醉監護的功能覆蓋整個手術與麻醉的全過程,包括手術申請與…

人工智能中的文本分類:技術突破與實戰指導

在本文中,我們全面探討了文本分類技術的發展歷程、基本原理、關鍵技術、深度學習的應用,以及從RNN到Transformer的技術演進。文章詳細介紹了各種模型的原理和實戰應用,旨在提供對文本分類技術深入理解的全面視角。 關注TechLead,分…

Hadoop發行版 Cloudera CDH 6.3.2及CM 安裝包下載(阿里云盤 不限速)

CDH(全稱Cloudera’s Distribution, including Apache Hadoop)是由Cloudera公司構建的Hadoop穩定發行版,不僅含有 Apache Hadoop,還整合了Hive、Spark等組件。 由于CDH已停止維護,且Cloudera不再為CDH提供免費的下載服…

git 使用過程錯誤集合

文章目錄 1、git-credential-manager-core was renamed to git-credential-manager2、credential-manager-core is not a git command. See git --help. 1、git-credential-manager-core was renamed to git-credential-manager 出現以下提示建議盡快更新您的 Git 配置以使用新…

回歸預測 | MATLAB實現SCN隨機配置網絡多輸入單輸出回歸預測

回歸預測 | MATLAB實現SCN隨機配置網絡多輸入單輸出回歸預測 目錄 回歸預測 | MATLAB實現SCN隨機配置網絡多輸入單輸出回歸預測效果一覽基本介紹程序設計參考資料 效果一覽 基本介紹 Matlab實現SCN隨機配置網絡多變量回歸預測 1.data為數據集,7個輸入特征&#xff0…