第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: 流程引擎表結構
每個欄位的詳細意思,請參考數據表結構如下圖:
流程註冊表
流程工作人員表
重要欄位解析:
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關聯在一起。
該業務表的欄位由兩部分組成:系統欄位+業務欄位。
系統欄位有:
業務欄位,就是表單信息的欄位,比如:請假人,請假時間,請假類型等。
欄位名稱 | 類型 | 說明 |
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: 軌跡表
流程軌跡表也叫流程日誌表,他是記錄流程在整個過程中執行的動作操作,如下圖就是流程日誌表。
流程日誌表的作用可是生成流程軌跡圖,流程時間軸信息。可以用他來追溯整個流程的運行過程,也可以用該表的數據回滾流程。