馳騁工作流引擎設(shè)計(jì)系列04 流程引擎表結(jié)構(gòu)的設(shè)計(jì)

第1節(jié).關(guān)鍵字

馳騁工作流引擎?流程快速開發(fā)平臺(tái)?workflow ccflow jflow

第1節(jié). 流程引擎表結(jié)構(gòu)的設(shè)計(jì)

流程引擎表是流程引擎控制流程運(yùn)轉(zhuǎn)的數(shù)據(jù)存儲(chǔ)表,是整個(gè)流程引擎的核心表。理解表結(jié)構(gòu),掌握狀態(tài)字段,相關(guān)字段變化的規(guī)律,就掌握的整個(gè)流程引擎運(yùn)轉(zhuǎn)的規(guī)律了。

1.1.1: 流程引擎表的作用

流程引擎表,是用來存儲(chǔ)流程運(yùn)行中信息的表。

流程在運(yùn)行過程中,需要把中間數(shù)據(jù)寫入到該表中。

一個(gè)流程啟動(dòng)后,就創(chuàng)建一個(gè)workid,就在流程引擎注冊(cè)表里注冊(cè)一條數(shù)據(jù),有一個(gè)字段WFState來表示該流程的運(yùn)行狀態(tài),一個(gè)FK_Node標(biāo)識(shí)該流程運(yùn)行到的節(jié)點(diǎn)。

流程啟動(dòng)發(fā)送到下一個(gè)節(jié)點(diǎn),系統(tǒng)就會(huì)產(chǎn)生下一個(gè)節(jié)點(diǎn)的工作人員,每個(gè)人員都有一條記錄寫入到WF_GenerWorkerList。 在這個(gè)WF_GenerWorkerList表里,有FK_Emp,WorkID,FK_Node三個(gè)字段作為聯(lián)合主鍵。

WF_GenerWorkerList的字段IsRead標(biāo)明該 待辦該文件是否讀取, IsPass標(biāo)識(shí)該待辦的狀態(tài),是否通過/處理過,關(guān)于這兩張表大詳細(xì)信息請(qǐng)參考下一章節(jié)。

當(dāng)一個(gè)流程結(jié)束之后,WF_GenerWorkerlist這個(gè)表關(guān)于該流程實(shí)例的workid數(shù)據(jù)被全部清除掉,這個(gè)workid的流程在這個(gè)表的使命已經(jīng)完成。在WF_GenerWorkFlow表里的狀態(tài)字段(WFState) 標(biāo)記已經(jīng)完成狀態(tài),可以供歷史流程查詢。

工作流程引擎的待辦列表是通過這兩個(gè)表聯(lián)合組成一個(gè)視圖實(shí)現(xiàn)的。

1.1.1:流程狀態(tài)設(shè)計(jì)

流程在整個(gè)生命周期中有不同的狀態(tài),合理的設(shè)計(jì)流程狀態(tài),正確的劃分是系統(tǒng)協(xié)調(diào)一致穩(wěn)定運(yùn)行的基礎(chǔ)。

我們把流程分為如下狀態(tài)。



流程狀態(tài)變化的概要說明:

操作員啟動(dòng)一個(gè)流程,創(chuàng)建一個(gè)workid,這個(gè)時(shí)候的狀態(tài)是空白狀態(tài),也叫站位狀態(tài),如果在啟動(dòng)之前已經(jīng)有了這個(gè)站位狀態(tài),它就不在創(chuàng)建新的workid而是取出來這個(gè)workid作為當(dāng)前流程的實(shí)例。

如果啟用了草稿規(guī)則,并且允許有草稿的模式下:

這個(gè)時(shí)間,如果用戶點(diǎn)擊保存該狀態(tài)從空白狀態(tài)轉(zhuǎn)化為草稿狀態(tài),如果用戶執(zhí)行發(fā)送當(dāng)前節(jié)點(diǎn)就運(yùn)行到下一個(gè)節(jié)點(diǎn)上去了,當(dāng)前狀態(tài)變?yōu)檫\(yùn)行中的狀態(tài)。如果用戶直接關(guān)閉了,這個(gè)時(shí)間的狀態(tài)就是草稿狀態(tài),可以在草稿里找到這條實(shí)例記錄。

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

這個(gè)時(shí)間,如果用戶點(diǎn)擊保存,仍然是空白狀態(tài)。用戶點(diǎn)擊發(fā)送后,由空白狀態(tài)轉(zhuǎn)化為運(yùn)行中狀態(tài),當(dāng)前節(jié)點(diǎn)運(yùn)動(dòng)到下一個(gè)節(jié)點(diǎn)上去,下一個(gè)節(jié)點(diǎn)的工作人員就產(chǎn)生了待辦。

如果上一個(gè)節(jié)點(diǎn)退回了,執(zhí)行了退回操作,當(dāng)前的流程狀態(tài)就變成為退回狀態(tài),上一個(gè)節(jié)點(diǎn)人被退回人就有了待辦工作,被退回人打開后,就可以看到退回消息,他點(diǎn)擊發(fā)送后又變成了運(yùn)行中的狀態(tài),發(fā)送到下一個(gè)節(jié)點(diǎn)上去了。

流程走到最后一個(gè)節(jié)點(diǎn),點(diǎn)擊發(fā)送,整個(gè)流程就結(jié)束了,狀態(tài)變?yōu)榱鞒掏瓿蔂顟B(tài)。

1.1.2: 流程引擎表結(jié)構(gòu)

每個(gè)字段的詳細(xì)意思,請(qǐng)參考數(shù)據(jù)表結(jié)構(gòu)如下圖:


流程注冊(cè)表



流程工作人員表


重要字段解析:

WF_GenerWokFlow

字段名中文名解釋

WorkID工作ID唯一的主鍵,該表不能重復(fù)。

WFState狀態(tài)流程運(yùn)行狀態(tài):

請(qǐng)參考流程狀態(tài)設(shè)計(jì)

Title標(biāo)題流程的標(biāo)題

FK_Flow流程模版編號(hào)?

FK_Node停留節(jié)點(diǎn)停留到那個(gè)節(jié)點(diǎn)上去了。

Starter發(fā)起人?

RDT發(fā)起日期?


工作人員列表: WF_GenerWokerList

字段名中文名解釋

WorkID工作ID主鍵

FK_Emp狀態(tài)主鍵

FK_Node標(biāo)題主鍵

IsPass是否通過?0=未通過,1=通過

IsRead是否讀???0=未讀,1=已讀

SDT應(yīng)完成日期?

RDT到達(dá)日期?

CDT實(shí)際完成日期?

流程運(yùn)行完畢后,根據(jù)當(dāng)前的工作ID,把數(shù)據(jù)刪除掉。

第2節(jié). 流程業(yè)務(wù)數(shù)據(jù)表設(shè)計(jì)

流程業(yè)務(wù)數(shù)據(jù)表是指,一個(gè)流程在運(yùn)轉(zhuǎn)過程中的數(shù)據(jù)存儲(chǔ)的相關(guān)表,它包含了流程業(yè)務(wù)表與流程軌跡表兩部分。

1.1.2: 流程業(yè)務(wù)表

該表名可以被自定義,默認(rèn)為”ND”+int.prease(流程編號(hào))+”Rpt”為業(yè)務(wù)表名,該表必須有一個(gè)OID作為主鍵的字段,整個(gè)OID字段存儲(chǔ)的是WorkID,與流程的WorkID關(guān)聯(lián)在一起。

該業(yè)務(wù)表的字段由兩部分組成:系統(tǒng)字段+業(yè)務(wù)字段。

系統(tǒng)字段有:






業(yè)務(wù)字段,就是表單信息的字段,比如:請(qǐng)假人,請(qǐng)假時(shí)間,請(qǐng)假類型等。


字段名稱類型說明

OIDintOID主鍵-與流程的workid一致

RDTnvarchar記錄日期

Titlenvarchar流程標(biāo)題

FIDintFID分合流用到

CDTnvarchar完成日期

Recnvarchar記錄人

Empsnvarchar操作員,多個(gè)用逗號(hào)分開。

FK_Deptnvarchar所在部門

FK_NYnvarchar年月,比如:2018-01,統(tǒng)計(jì)分析用.

MyNumint個(gè)數(shù),統(tǒng)計(jì)分析用

PNodeIDint父子流程所用

PrjNamenvarchar工程名稱

PrjNonvarchar工程編號(hào),工程流程所用

PEmpnvarchar父子流程所用

AtParanvarchar參數(shù)屬性

BillNonvarchar單據(jù)編號(hào)

FlowNotenvarchar流程備注

GUIDnvarchar唯一標(biāo)識(shí)符

WFStaint簡易狀態(tài)

FlowStartRDTnvarchar發(fā)起日期

FlowEnderRDTnvarchar最后節(jié)點(diǎn)處理日期

FlowEndNodeint最后停留的節(jié)點(diǎn)

FlowDaySpanfloat流程跨度天數(shù)

PWorkIDint父子流程所用

PFlowNonvarchar父子流程所用

FlowEmpsnvarchar流程參與人

FlowEndernvarchar最后處理人

FlowStarternvarchar流程發(fā)起人

WFStateint流程狀態(tài)




1.1.3: 軌跡表

流程軌跡表也叫流程日志表,他是記錄流程在整個(gè)過程中執(zhí)行的動(dòng)作操作,如下圖就是流程日志表。


==Over==


流程日志表的作用可是生成流程軌跡圖,流程時(shí)間軸信息。可以用他來追溯整個(gè)流程的運(yùn)行過程,也可以用該表的數(shù)據(jù)回滾流程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容