1. 程式人生 > >馳騁工作流引擎設計系列04 流程引擎表結構的設計

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

gin 我們 統計分析 sta 生成 技術分享 追溯 mar pre

第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: 軌跡表

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

技術分享圖片

技術分享圖片

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

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