在很早之前的隨筆里面有滑,已經(jīng)介紹了WInform框架中工作流模塊的功能娄琉,不過由于工作流模塊中界面處理部分比較麻煩往果,一直沒有在Bootstrap框架中進行集成,最近由于項目的關(guān)系颓鲜,花了不少精力表窘,把工作流模塊重新梳理遷移到Bootstrap框架上,本篇隨筆主要介紹基于Metronic的Bootstrap開發(fā)框架的工作模塊功能甜滨。
1乐严、工作流的設(shè)計模型
在我們開始介紹工作流模塊功能之前,我們需要了解下工作流模塊的設(shè)計模型衣摩,以便我們更好深入了解各個部分的功能昂验。
我們知道,我們在Office里面創(chuàng)建任何文檔艾扮,都有一個模板的概念既琴,這樣我們方便利用一些現(xiàn)成的數(shù)據(jù)和布局,工作流也一樣栏渺,有一個流程模板的概念呛梆。每個流程模板锐涯,本身會預(yù)定義了一系列的處理流程磕诊,以便在流程實例里面進行不同的處理,因此流程模板還包含了多個流程步驟對象。每個流程實例霎终,除了他們自己的流程數(shù)據(jù)和字段信息外滞磺,它本身還有一個表單設(shè)計的問題,如費用審批莱褒,可能包含填寫的費用清單數(shù)據(jù)等击困,所以流程實例還應(yīng)該包含了流程的業(yè)務(wù)表單對象。
在工作流處理表中广凸,首先我們區(qū)分流程模板和流程實例兩個部分阅茶,這個其實就是類似模板和具體文檔的概念,我們一份模板可以創(chuàng)建很多個類似的文檔谅海,文檔樣式結(jié)構(gòu)類似的脸哀。同理,流程模板實例為流程實例后扭吁,就是具體的一個流程表單信息了撞蜂,其中流程模板和流程實例表單都包括了各個流程步驟。在流程實例的層次上侥袜,我們運行的時候蝌诡,需要記錄一些日志方便跟蹤,如流程步驟的處理日志枫吧,流程實例表單的處理日志等這些信息浦旱。
一旦流程實例根據(jù)模板創(chuàng)建后,流程先根據(jù)模板初始化后由蘑,在處理過程還可以動態(tài)增加一些審批步驟闽寡,使得我們的處理更加彈性化。
當(dāng)然尼酿,為了更好的處理流程的相關(guān)信息爷狈,還需要記錄流程處理人,流程會簽人裳擎、流程閱辦人涎永,以及常用審批意見等相關(guān)輔助表,以便對流程的各個處理信息進行合理處理和展示鹿响。
對于一個流程處理操作羡微,我們知道一般有審批通過、拒絕惶我、退回到某步驟妈倔、轉(zhuǎn)發(fā)到內(nèi)部閱讀、閱讀绸贡,以及包括起草者能撤銷表單呢等操作盯蝴,當(dāng)然如果還有一些具體的業(yè)務(wù)毅哗,可能還會有一些流程的處理才操作,不過基本上也可以歸結(jié)為上面幾種捧挺,只是他們每步處理的數(shù)據(jù)內(nèi)容不同而已虑绵。因此審批的操作步驟分類如下所示。
在流程審批中闽烙,一般還有一種流程處理就是會簽的操作翅睛,會簽處理是幾個審批步驟中審批人同時處理是否通過的,一般同時通過即為通過黑竞。
會簽是指創(chuàng)建一個或多個子流程供相關(guān)人員進行審批捕发,等待全部人員完成處理后再次回到主流程上,然后決定是否繼續(xù)流轉(zhuǎn)到下一個流程步驟上去很魂,一般的申請單的主流程如下所示爬骤。
這里設(shè)置的會簽處理就是其中一個步驟,一旦會簽處理步驟發(fā)起會簽莫换,就會構(gòu)建多個可供審批的子流程了霞玄,如下所示。
在會簽發(fā)起的步驟拉岁,指定參與具體流程會簽審批的人員坷剧,然后流程則會流轉(zhuǎn)到不同人員進行相關(guān)的處理【待辦事項】。
我在工作流中定義會簽完成后喊暖,由會簽發(fā)起人審核(會簽結(jié)果審核)惫企,決定是否進入下一步流程,在審核過程中決定如何處理這個申請單陵叽。
2狞尔、工作流模塊介紹
1)流程環(huán)節(jié)管理
從上面的基礎(chǔ)知識介紹中,我們知道巩掺,流程環(huán)節(jié)是構(gòu)成流程模板和流程實例的基本單元偏序,我們需要定義不同類型的流程處理環(huán)節(jié),如審批胖替、會簽研儒、閱辦等等,不同類型的流程環(huán)節(jié)独令,在流程步驟的處理環(huán)節(jié)中是不一樣的端朵,我們也為這些不同的環(huán)節(jié)定義不同的審批界面。
首先我們在Bootstrap框架的系統(tǒng)菜單中選擇【工作流管理】【工作流維護】【流程環(huán)節(jié)管理】菜單燃箭,就可以進入對應(yīng)的流程環(huán)節(jié)管理界面冲呢。
在流程環(huán)節(jié)管理界面中,會列出系統(tǒng)所有定義好的流程環(huán)節(jié)招狸,我們也可以定義自己的流程步驟敬拓。
在系統(tǒng)主界面里面瓤湘,我們一般已經(jīng)預(yù)定義了一些常規(guī)的如審批、會簽恩尾、閱辦、歸檔等類型挽懦,我們?nèi)绻枰x特殊的審批界面翰意,我們就可以在這里定義一些不同的流程環(huán)節(jié),也可以對已有的環(huán)節(jié)進行一定的修改處理信柿。
2)流程模板管理
通過第一步的流程環(huán)節(jié)定義冀偶,我們接下來就基于流程環(huán)節(jié),定義流程模板的內(nèi)容了渔嚷,流程模板是我們開展一些工作流的基礎(chǔ)进鸠,也就是說,我們先有特定流程的模板形病,然后才有具體的流程示例客年。
流程模板我們定義的時候,需要指定它的具體名稱漠吻,另外有幾個字段是必須注意的量瓜,就是它的對應(yīng)業(yè)務(wù)表名和創(chuàng)建流程URL、查看流程URL這幾個信息途乃。
指定這些內(nèi)容绍傲,我們在指定的視圖頁面中處理不同的流程信息,創(chuàng)建在Create視圖耍共、查看在ViewDetail視圖烫饼,其中還會包含一個index視圖列出該類型的申請單,這幾個列表都可以使用代碼生成工具快速生成试读,具體代碼的生成過程杠纵,我會在隨后的文章中及進行詳細介紹。
這樣的自動化钩骇,可以迅速提高我們開發(fā)工作流業(yè)務(wù)的效率淡诗,并且和整個系統(tǒng)風(fēng)格保持統(tǒng)一。這個就是我們整個開發(fā)框架系列的精髓所在伊履,以工具提高效率韩容,統(tǒng)一過程。
再次回到流程模板的處理來唐瀑,我們剛才只是定義了流程模板的一些基礎(chǔ)信息群凶,對于這個流程模板,我們還需要確定它的流程步驟哄辣,這個才是工作流的靈魂所在请梢,動態(tài)化的流程步驟赠尾,可以滿足我們大多數(shù)變化流程的需要。
流程步驟的定義毅弧,如下界面所示气嫁,可以指定流程處理人,通過選定角色够坐、部門或者具體人員都可以寸宵,如果沒有選擇具體的處理人,那么默認會以當(dāng)前用戶部門的人員供選擇元咙。
如但用戶選擇人員的時候梯影,彈出層可以根據(jù)組織機構(gòu)、角色進行用戶的篩選和選擇庶香。
3)業(yè)務(wù)受理列表
業(yè)務(wù)受理列表甲棍,是根據(jù)我們數(shù)據(jù)庫中定義的流程模板,動態(tài)列出申請單的創(chuàng)建入口赶掖,提供一個統(tǒng)一的入口方便我們處理感猛。
一下是我們工作流模塊中定義好的一些流程模板,可以供創(chuàng)建業(yè)務(wù)表單奢赂。
這些業(yè)務(wù)表單入口唱遭,單擊后就可以創(chuàng)建對應(yīng)類型的申請單了,我們以剛才介紹的請假申請為例呈驶,單擊后進入請假申請單的Create視圖界面拷泽,創(chuàng)建新的申請。
其他的業(yè)務(wù)申請單也是類似袖瞻,我們只需要使用代碼生成工具Database2Sharp對具體業(yè)務(wù)表單的工作流模塊代碼進行生成后司致,就可以配置使用,并且可以創(chuàng)建對應(yīng)的業(yè)務(wù)表單的了聋迎。
對于一些具有明細表單的操作脂矫,也有案例可以供參考。
4)我的審批工作
我的審批工作是列出和我相關(guān)的審批表單霉晕,包括已辦庭再、待辦、 發(fā)起的幾種類型的分類牺堰,其中每個種類型又可以繼續(xù)細化不同表單類型拄轻,方便我們快速選擇查看,如下列表所示伟葫。
通過快速定位所需要的類型申請單恨搓,我們可以很好的完成一些待辦工作,以及可以查看自己參與的流程申請單的處理情況等等。
雙擊其中的申請單斧抱,可以查看具體的申請詳細信息常拓,包括流程審批信息和業(yè)務(wù)表單信息等。
而如果是流程處理中的申請單辉浦,我們可以在相關(guān)的處理按鈕中執(zhí)行我們自己的審批操作弄抬。
5)所有申請單
所有申請單是提供一個給流程管理員的一個入口,方便對一些錯誤或者不需要的申請單進行刪除等維護操作宪郊。
這里面列出的是系統(tǒng)所有的申請單掂恕,這個頁面一般不暴露給普通用戶,而是作為后臺數(shù)據(jù)管理的一個頁面废膘,對不需要的數(shù)據(jù)進行刪除操作的。
6)我的草稿
我的草稿是提供一個界面維護我自己的申請單草稿的慕蔚,界面效果如下所示丐黄。
在我們創(chuàng)建申請單的時候,有時候錄入數(shù)據(jù)后暫時想存起來而不提交的話孔飒,保存為草稿就可以灌闺,下次則可以直接從草稿中繼續(xù)申請單的處理。