第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ù)回滾流程。