馳騁工作流引擎設計系列04 流程引擎表結構的設計

来源:https://www.cnblogs.com/mengjuan/archive/2019/01/04/10221733.html
-Advertisement-
Play Games

第1節. 關鍵字 馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow 第1節. 流程引擎表結構的設計 流程引擎表是流程引擎控制流程運轉的數據存儲表,是整個流程引擎的核心表。理解表結構,掌握狀態欄位,相關欄位變化的規律,就掌握的整個流程引擎運轉的規律了。 1.1.1: 流程引... ...


第1節. 關鍵字

馳騁工作流引擎 流程快速開發平臺 workflow ccflow jflow

第1節. 流程引擎表結構的設計

流程引擎表是流程引擎控制流程運轉的數據存儲表,是整個流程引擎的核心表。理解表結構,掌握狀態欄位,相關欄位變化的規律,就掌握的整個流程引擎運轉的規律了。

1.1.1: 流程引擎表的作用

流程引擎表,是用來存儲流程運行中信息的表。

流程在運行過程中,需要把中間數據寫入到該表中。

一個流程啟動後,就創建一個workid,就在流程引擎註冊表裡註冊一條數據,有一個欄位WFState來表示該流程的運行狀態,一個FK_Node標識該流程運行到的節點。

流程啟動發送到下一個節點,系統就會產生下一個節點的工作人員,每個人員都有一條記錄寫入到WF_GenerWorkerList。 在這個WF_GenerWorkerList表裡,有FK_Emp,WorkID,FK_Node三個欄位作為聯合主鍵。

WF_GenerWorkerList的欄位IsRead標明該 待辦該文件是否讀取, IsPass標識該待辦的狀態,是否通過/處理過,關於這兩張表大詳細信息請參考下一章節。

當一個流程結束之後,WF_GenerWorkerlist這個表關於該流程實例的workid數據被全部清除掉,這個workid的流程在這個表的使命已經完成。在WF_GenerWorkFlow表裡的狀態欄位(WFState) 標記已經完成狀態,可以供歷史流程查詢。

工作流程引擎的待辦列表是通過這兩個表聯合組成一個視圖實現的。

1.1.2: 流程狀態設計

流程在整個生命周期中有不同的狀態,合理的設計流程狀態,正確的劃分是系統協調一致穩定運行的基礎。

我們把流程分為如下狀態。

流程狀態變化的概要說明:

操作員啟動一個流程,創建一個workid,這個時候的狀態是空白狀態,也叫站位狀態,如果在啟動之前已經有了這個站位狀態,它就不在創建新的workid而是取出來這個workid作為當前流程的實例。

如果啟用了草稿規則,並且允許有草稿的模式下:

這個時間,如果用戶點擊保存該狀態從空白狀態轉化為草稿狀態,如果用戶執行發送當前節點就運行到下一個節點上去了,當前狀態變為運行中的狀態。如果用戶直接關閉了,這個時間的狀態就是草稿狀態,可以在草稿里找到這條實例記錄。

如果不啟用草稿,在這種模式下:

這個時間,如果用戶點擊保存,仍然是空白狀態。用戶點擊發送後,由空白狀態轉化為運行中狀態,當前節點運動到下一個節點上去,下一個節點的工作人員就產生了待辦。

如果上一個節點退回了,執行了退回操作,當前的流程狀態就變成為退回狀態,上一個節點人被退回人就有了待辦工作,被退回人打開後,就可以看到退回消息,他點擊發送後又變成了運行中的狀態,發送到下一個節點上去了。

流程走到最後一個節點,點擊發送,整個流程就結束了,狀態變為流程完成狀態。

1.1.3: 流程引擎表結構

每個欄位的詳細意思,請參考數據表結構如下圖:

image

流程註冊表

image

流程工作人員表

重要欄位解析:

WF_GenerWokFlow

欄位名

中文名

解釋

WorkID

工作ID

唯一的主鍵,該表不能重覆。

WFState

狀態

流程運行狀態:

請參考流程狀態設計

Title

標題

流程的標題

FK_Flow

流程模版編號

 

FK_Node

停留節點

停留到那個節點上去了。

Starter

發起人

 

RDT

發起日期

 

工作人員列表: WF_GenerWokerList

欄位名

中文名

解釋

WorkID

工作ID

主鍵

FK_Emp

狀態

主鍵

FK_Node

標題

主鍵

IsPass

是否通過?

0=未通過,1=通過

IsRead

是否讀取?

0=未讀,1=已讀

SDT

應完成日期

 

RDT

到達日期

 

CDT

實際完成日期

 

流程運行完畢後,根據當前的工作ID,把數據刪除掉。

第2節. 流程業務數據表設計

流程業務數據表是指,一個流程在運轉過程中的數據存儲的相關表,它包含了流程業務表與流程軌跡表兩部分。

1.1.4: 流程業務表

該表名可以被自定義,預設為”ND”+int.prease(流程編號)+”Rpt”為業務表名,該表必須有一個OID作為主鍵的欄位,整個OID欄位存儲的是WorkID,與流程的WorkID關聯在一起。

該業務表的欄位由兩部分組成:系統欄位+業務欄位。

系統欄位有:

image

image

業務欄位,就是表單信息的欄位,比如:請假人,請假時間,請假類型等。

欄位名稱

類型

說明

OID

int

OID主鍵-與流程的workid一致

RDT

nvarchar

記錄日期

Title

nvarchar

流程標題

FID

int

FID分合流用到

CDT

nvarchar

完成日期

Rec

nvarchar

記錄人

Emps

nvarchar

操作員,多個用逗號分開。

FK_Dept

nvarchar

所在部門

FK_NY

nvarchar

年月,比如:2018-01,統計分析用.

MyNum

int

個數,統計分析用

PNodeID

int

父子流程所用

PrjName

nvarchar

工程名稱

PrjNo

nvarchar

工程編號,工程流程所用

PEmp

nvarchar

父子流程所用

AtPara

nvarchar

參數屬性

BillNo

nvarchar

單據編號

FlowNote

nvarchar

流程備註

GUID

nvarchar

唯一標識符

WFSta

int

簡易狀態

FlowStartRDT

nvarchar

發起日期

FlowEnderRDT

nvarchar

最後節點處理日期

FlowEndNode

int

最後停留的節點

FlowDaySpan

float

流程跨度天數

PWorkID

int

父子流程所用

PFlowNo

nvarchar

父子流程所用

FlowEmps

nvarchar

流程參與人

FlowEnder

nvarchar

最後處理人

FlowStarter

nvarchar

流程發起人

WFState

int

流程狀態

1.1.5: 軌跡表

流程軌跡表也叫流程日誌表,他是記錄流程在整個過程中執行的動作操作,如下圖就是流程日誌表。

image

 

image

流程日誌表的作用可是生成流程軌跡圖,流程時間軸信息。可以用他來追溯整個流程的運行過程,也可以用該表的數據回滾流程。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 什麼是main方法? 是類中的一段代碼,可以讓程式獨立運行。 HelloWorld 類中有main()方法,說明這是個java應用程式,通過JVM直接啟動運行的程式。這個main()方法的聲明為:public static void main(String args[])。必須這麼定義,這是Java ...
  • 只對當前文件有效的操作:菜單欄->View -> Active Editor -> Use Soft Wraps; 如果想對所有文件都有效,就要在setting裡面進行操作:File-> Setting-> Editor-> General -> Use soft wraps in editor。 ...
  • 寫在前面 很高興我這系列的文章寫道第18篇了,今天寫一個爬蟲愛好者特別喜歡的網站煎蛋網 ,這個網站其實還是有點意思的,網站很多人寫了N多的教程了,各種方式的都有,當然網站本身在爬蟲愛好者的不斷進攻下,也在不斷的完善,反爬措施也很多,今天我用 在揍他一波。 整體看上去,煎蛋網的妹子圖質量還是可以的,不 ...
  • [TOC] 1. URL的組成 漢字通過URL encode(UTF 8)編碼出來的編碼,裡面的字元全是打位元組 如果你複製粘貼下來這個網址,出來的不是漢字,而是編碼後的位元組 https://www.baidu.com/s?wd=%E7%BC%96%E7%A8%8B%E5%90%A7 我們也可以在py ...
  • 刪除 # 刪除 # 只能刪除文件,若為目錄則報錯# 若文件正在使用,Windows下會直接報錯,Linux下會在目錄表中刪除記錄,但文件還在# 與os.unlink()一樣的作用os.remove(r"C:\Users\Microsoft\Desktop\111.exe")# 刪除目錄,目錄必須為空 ...
  • 對象序列化的目標是將對象保存在磁碟中,或者允許在網路中直接傳輸對象。 對象序列化允許把記憶體中的Java對象轉換成平臺無關的二進位流,從而允許把這種二進位流持久保存在磁碟上或者通過網路將這種二進位流傳輸到另外一個網路節點。 其他程式一旦獲得了這種二進位流,都可以將這種二進位流恢覆成原本的Java對... ...
  • 1 private static string IsOpenSendMail = ConfigurationManager.AppSettings["IsOpenSendMail"]; //是否啟用異常消息發送郵箱功能 2 private static string SendUser=Configu... ...
  • 介紹 微服務中有關鍵的幾項技術,其中網關和服務服務發現,服務註冊相輔相成。 首先解釋幾個本次教程中需要的術語 網關 Gateway(API GW / API 網關),顧名思義,是企業 IT 在系統邊界上提供給外部訪問內部介面服務的統一入口,簡化了外部由於多服務協同完成任務時的繁瑣配置。網關組件有Ko ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...