本發(fā)明涉及計算機技術領域,具體涉及一種工作流處理方法、裝置及工作流引擎。
背景技術:
由于Web應用系統(tǒng)的靈活性,使得客戶對于業(yè)務流程的個性化需求異常豐富,同一個Web應用系統(tǒng)針對不同的客戶往往會有不同的業(yè)務流程實現(xiàn)。
開發(fā)Web應用系統(tǒng)過程中,為了滿足客戶業(yè)務流程的個性化需求,業(yè)務流程需要針對不同項目做個性化配置或開發(fā),對于jbpm、osworkflow、shark等主流工作流引擎,其開發(fā)、部署過程比較復雜,這使得Web應用系統(tǒng)的開發(fā)成本居高不下。
技術實現(xiàn)要素:
本發(fā)明所要解決的技術問題是如何提供一種工作流處理方法、裝置及工作流引擎,以解決現(xiàn)有的工作流開發(fā)工作量較大的問題。
為此目的,第一方面,本發(fā)明提出一種工作流處理方法,所述方法包括:
在檢測到業(yè)務系統(tǒng)啟動時,獲取存儲單元中的流程參數(shù)表,并根據(jù)所述流程參數(shù)表生成流程對象,以使緩存單元緩存所述流程對象,所述流程參數(shù)表中包含所述業(yè)務系統(tǒng)預設的流程參數(shù)信息;
在檢測到工作流啟動時,從所述緩存單元中的流程對象中,獲取與所述工作流對應的流程對象,并在處理所述流程對象之后,更新所述存儲單元中的業(yè)務表以及流程記錄表;所述流程記錄表為所述存儲單元中存儲的用于記錄流程流轉的表;
在檢測到工作流查詢時,從所述緩存單元中的流程對象中,獲取 與所述工作流對應的流程對象,根據(jù)所述流程對象以及所述存儲單元中的流程記錄表,拼裝流程圖并顯示拼裝的流程圖。
可選的,所述在檢測到工作流啟動時,從所述緩存單元中的流程對象中,獲取與所述工作流對應的流程對象,并在處理所述流程對象之后,更新所述存儲單元中的業(yè)務表以及流程記錄表,包括:
在檢測到工作流啟動時,獲取所述工作流的流程編碼與業(yè)務記錄標識;
從所述緩存單元緩存的流程對象中,獲取與所述流程編碼對應的流程對象;
從所述存儲單元中的業(yè)務表中,獲取與所述業(yè)務記錄標識對應的業(yè)務信息;
查看所述流程對象與所述業(yè)務信息是否匹配,如果不匹配,則發(fā)送錯誤提示信息;如果匹配,則在所述存儲單元中的流程記錄表中增加流程記錄,并更新所述業(yè)務表。
可選的,所述在檢測到工作流查詢時,從所述緩存單元中的流程對象中,獲取與所述工作流對應的流程對象,根據(jù)所述流程對象以及所述存儲單元中的流程記錄表,拼裝并顯示流程圖,包括:
在檢測到工作流查詢時,獲取所述工作流的流程編碼與業(yè)務記錄標識;
從所述緩存單元緩存的流程對象中,獲取與所述流程編碼對應的流程對象;
從所述存儲單元中的業(yè)務表中,獲取與所述業(yè)務記錄標識對應的業(yè)務信息;
通過所述流程對象、所述業(yè)務信息以及所述存儲單元中的流程記錄表,拼裝并顯示流程圖。
第二方面,本發(fā)明還提出一種工作流引擎,所述工作流引擎包括:
生成單元,用于在檢測到業(yè)務系統(tǒng)啟動時,獲取存儲單元中的流 程參數(shù)表,并根據(jù)所述流程參數(shù)表生成流程對象,以使緩存單元緩存所述流程對象,所述流程參數(shù)表中包含所述業(yè)務系統(tǒng)預設的流程參數(shù)信息;
處理單元,用于在檢測到工作流啟動時,從所述緩存單元中的流程對象中,獲取與所述工作流對應的流程對象,并在處理所述流程對象之后,更新所述存儲單元中的業(yè)務表以及流程記錄表;所述流程記錄表為所述存儲單元中存儲的用于記錄流程流轉的表;
查詢單元,用于在檢測到工作流查詢時,從所述緩存單元中的流程對象中,獲取與所述工作流對應的流程對象,根據(jù)所述流程對象以及所述存儲單元中的流程記錄表,拼裝流程圖并顯示拼裝的流程圖。
可選的,所述處理單元,包括:
第一獲取子單元,用于在檢測到工作流啟動時,獲取所述工作流的流程編碼與業(yè)務記錄標識;
第二獲取子單元,用于從所述緩存單元緩存的流程對象中,獲取與所述流程編碼對應的流程對象;
第三獲取子單元,用于從所述存儲單元中的業(yè)務表中,獲取與所述業(yè)務記錄標識對應的業(yè)務信息;
處理子單元,用于查看所述流程對象與所述業(yè)務信息是否匹配,如果不匹配,則發(fā)送錯誤提示信息;如果匹配,則在所述存儲單元中的流程記錄表中增加流程記錄,并更新所述業(yè)務表。
可選的,所述查詢單元,包括:
第四獲取子單元,用于在檢測到工作流查詢時,獲取所述工作流的流程編碼與業(yè)務記錄標識;
第五獲取子單元,用于從所述緩存單元緩存的流程對象中,獲取與所述流程編碼對應的流程對象;
第六獲取子單元,用于從所述存儲單元中的業(yè)務表中,獲取與所述業(yè)務記錄標識對應的業(yè)務信息;
顯示子單元,用于通過所述流程對象、所述業(yè)務信息以及所述存儲單元中的流程記錄表,拼裝并顯示流程圖。
第三方面,本發(fā)明還提出一種工作流處理裝置,所述裝置包括:工作流引擎、緩存單元以及存儲單元;
所述緩存單元,用于緩存所述工作流引擎生成的流程對象;
所述存儲單元,用于存儲流程參數(shù)表、業(yè)務表以及流程記錄表。
可選的,所述存儲單元中的流程參數(shù)表包括業(yè)務系統(tǒng)預設的流程參數(shù)信息,所述流程參數(shù)信息包括:流程模板信息、流程狀態(tài)信息和/或角色信息;
所述流程模板信息包括:流程編碼、流程名稱、關聯(lián)的業(yè)務表名、關聯(lián)的業(yè)務表主鍵列名、業(yè)務表當前處理人列名、業(yè)務表當前狀態(tài)列名和/或關聯(lián)的流程記錄表名;
所述流程狀態(tài)信息包括:所屬流程編碼、狀態(tài)編碼、狀態(tài)名稱、對應角色編碼和/或下一步狀態(tài)編碼集合;
所述角色信息包括:角色編碼和角色名稱,所述角色編碼關聯(lián)業(yè)務系統(tǒng)中用戶和權限,用于權限控制。
可選的,所述流程模板信息、流程狀態(tài)信息以及角色信息的對應關系為:
一個所述流程模板對應N個所述流程狀態(tài),N為正整數(shù);
一個所述角色信息對應N個所述流程狀態(tài)。
可選的,所述流程記錄表包括:流程記錄標識、業(yè)務記錄標識、操作人、操作時間、當前狀態(tài)編碼、下一步狀態(tài)編碼、當前處理人和/或下一步處理人。
相比于現(xiàn)有技術,本發(fā)明的工作流處理方法、裝置及工作流引擎通過定義少量參數(shù)的方式快速實現(xiàn)流程定義的目的,通過基于狀態(tài)的流程控制,即流程狀態(tài)關聯(lián)角色,角色關聯(lián)權限和人員,從而簡單清晰的界定工作流程,同時提供了流程流轉處理及流程記錄檢 索等功能。更為重要的是,通過靈活的高可配置度的參數(shù)信息可以滿足客戶的大部分流程需求,并可通過擴展參數(shù)信息的方式擴展流程功能。核心代碼簡單清晰、高擴展、高可用??朔爽F(xiàn)有工作流定義、開發(fā)、部署的工作量較大的問題,提高了工作流開發(fā)效率,同時提高Web應用系統(tǒng)的產(chǎn)品化程度。
附圖說明
圖1為本發(fā)明實施例提供的一種工作流處理方法流程圖;
圖2為本發(fā)明實施例提供的一種工作流引擎結構圖;
圖3為本發(fā)明實施例提供的一種處理單元結構圖;
圖4為本發(fā)明實施例提供的一種查詢單元結構圖;
圖5為本發(fā)明實施例提供的一種工作流處理裝置結構圖;
圖6為本發(fā)明實施例提供的一種工作流處理裝置的工作流程圖;
圖7為本發(fā)明實施例提供的通過流程記錄檢索所獲取的數(shù)據(jù)生成的工作流流程記錄的列表網(wǎng)頁效果圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
如圖1所示,本實施例公開一種工作流處理方法,所述方法可包括以下步驟:
101、在檢測到業(yè)務系統(tǒng)啟動時,獲取存儲單元中的流程參數(shù)表,并根據(jù)所述流程參數(shù)表生成流程對象,以使緩存單元緩存所述流程對象,所述流程參數(shù)表中包含所述業(yè)務系統(tǒng)預設的流程參數(shù)信息;
其中,流程參數(shù)信息包括:流程模板信息、流程狀態(tài)信息以及角 色信息;
流程模板信息用于記錄流程相關的參數(shù)信息,至少包括:流程編碼、流程名稱、關聯(lián)的業(yè)務表名、關聯(lián)的業(yè)務表主鍵列名、業(yè)務表當前處理人列名、業(yè)務表當前狀態(tài)列名以及關聯(lián)的流程記錄表名;
流程狀態(tài)信息用于記錄流程狀態(tài)相關的參數(shù)信息,至少包括:所屬流程編碼、狀態(tài)編碼、狀態(tài)名稱、對應角色編碼以及下一步狀態(tài)編碼集合;
角色信息用于記錄業(yè)務系統(tǒng)角色相關的參數(shù)信息,至少包括:角色編碼和角色名稱,角色編碼關聯(lián)業(yè)務系統(tǒng)中用戶和權限,用于權限控制。
流程模板信息、流程狀態(tài)信息以及角色信息的對應關系為:
一個流程模板對應N個流程狀態(tài),N為正整數(shù);
一個角色信息對應N個流程狀態(tài)。
102、在檢測到工作流啟動時,從所述緩存單元中的流程對象中,獲取與所述工作流對應的流程對象,并在處理所述流程對象之后,更新所述存儲單元中的業(yè)務表以及流程記錄表;
其中,業(yè)務表包括:業(yè)務信息、流程當前狀態(tài)以及處理人;
流程記錄表用于記錄流程流轉的信息,至少包括:流程記錄標識、業(yè)務記錄標識、操作人、操作時間、當前狀態(tài)編碼、下一步狀態(tài)編碼、當前處理人以及下一步處理人。其中,下一步狀態(tài)編碼是指當前狀態(tài)可變更為哪幾個狀態(tài),通過下一步狀態(tài)編碼可約束流程流轉規(guī)則,可構建出流程圖。
103、在檢測到工作流查詢時,從所述緩存單元中的流程對象中,獲取與所述工作流對應的流程對象,根據(jù)所述流程對象以及所述存儲單元中的流程記錄表,拼裝并顯示流程圖。
其中,步驟102還可包括以下圖1中未示出的子步驟:
1021、在檢測到工作流啟動時,獲取所述工作流的流程編碼與業(yè) 務記錄標識;
1022、從所述緩存單元緩存的流程對象中,獲取與所述流程編碼對應的流程對象;
1023、從所述存儲單元中的業(yè)務表中,獲取與所述業(yè)務記錄標識對應的業(yè)務信息;
1024、查看所述流程對象與所述業(yè)務信息是否匹配,如果不匹配,則發(fā)送錯誤提示信息;如果匹配,則在所述存儲單元中的流程記錄表中增加流程記錄,并更新所述業(yè)務表。
其中,步驟103還可包括以下圖1中未示出的子步驟:
1031、在檢測到工作流查詢時,獲取所述工作流的流程編碼與業(yè)務記錄標識;
1032、從所述緩存單元緩存的流程對象中,獲取與所述流程編碼對應的流程對象;
1033、從所述存儲單元中的業(yè)務表中,獲取與所述業(yè)務記錄標識對應的業(yè)務信息;
1034、根據(jù)所述流程對象、所述業(yè)務信息以及所述存儲單元中的流程記錄表,拼裝并顯示流程圖。
在具體應用中,流程模板信息還可擴展其他配置信息,比如參與信息統(tǒng)計(業(yè)務系統(tǒng)的另一個功能模塊,即信息統(tǒng)計模塊)的狀態(tài)編碼等。
在具體應用中,流程狀態(tài)信息還可擴展其他配置信息,比如狀態(tài)關聯(lián)的菜單,即業(yè)務系統(tǒng)查看業(yè)務信息的導航菜單(點擊菜單只顯示處于關聯(lián)該菜單的狀態(tài)的業(yè)務記錄)。
上述實施例采用配置化參數(shù)來存儲自定義業(yè)務流程信息,提供了簡單易用的流程流轉處理及流程記錄檢索功能,所以克服了現(xiàn)有工作流定義、開發(fā)、部署的工作量較大的問題,提高了工作流開發(fā)效率。
上述實施例能夠通過定義少量參數(shù)的方式快速實現(xiàn)流程定義的 目的,通過基于狀態(tài)的流程控制,即流程狀態(tài)關聯(lián)角色,角色關聯(lián)權限和人員,從而簡單清晰的界定工作流程,同時提供了流程流轉處理及流程記錄檢索等功能。更為重要的是,通過靈活的高可配置度的參數(shù)信息可以滿足客戶的大部分流程需求,并可通過擴展參數(shù)信息的方式擴展流程功能。核心代碼簡單清晰、高擴展、高可用。本實施例擴展了核心模塊,增加了流程提交頁面通用模塊,流程記錄查看頁面通用模塊,使得在具體項目中,可使用一套代碼,僅通過配置流程定義參數(shù)的方式即可實現(xiàn)工作流流轉、流程記錄及進度查看等功能,所以克服了現(xiàn)有工作流定義、開發(fā)、部署的工作量較大的問題,提高了工作流開發(fā)效率,同時提高Web應用系統(tǒng)的產(chǎn)品化程度。
如圖2所示,本實施例公開一種工作流引擎,所述工作流引擎可包括以下單元:生成單元21、處理單元22以及查詢單元23;
生成單元21,用于在檢測到業(yè)務系統(tǒng)啟動時,獲取存儲單元中的流程參數(shù)表,并根據(jù)所述流程參數(shù)表生成流程對象,以使緩存單元緩存所述流程對象,所述流程參數(shù)表中包含所述業(yè)務系統(tǒng)預設的流程參數(shù)信息;
處理單元22,用于在檢測到工作流啟動時,從所述緩存單元中的流程對象中,獲取與所述工作流對應的流程對象,并在處理所述流程對象之后,更新所述存儲單元中的業(yè)務表以及流程記錄表;
查詢單元23,用于在檢測到工作流查詢時,從所述緩存單元中的流程對象中,獲取與所述工作流對應的流程對象,根據(jù)所述流程對象以及所述存儲單元中的流程記錄表,拼裝并顯示流程圖。
如圖3所示,處理單元22還可包括以下子單元:
第一獲取子單元221,用于在檢測到工作流啟動時,獲取所述工作流的流程編碼與業(yè)務記錄標識;
第二獲取子單元222,用于從所述緩存單元緩存的流程對象中,獲取與所述流程編碼對應的流程對象;
第三獲取子單元223,用于從所述存儲單元中的業(yè)務表中,獲取與所述業(yè)務記錄標識對應的業(yè)務信息;
處理子單元224,用于查看所述流程對象與所述業(yè)務信息是否匹配,如果不匹配,則發(fā)送錯誤提示信息;如果匹配,則在所述存儲單元中的流程記錄表中增加流程記錄,并更新所述業(yè)務表。
如圖4所示,查詢單元23還可包括以下子單元:
第四獲取子單元231,用于在檢測到工作流查詢時,獲取所述工作流的流程編碼與業(yè)務記錄標識;
第五獲取子單元232,用于從所述緩存單元緩存的流程對象中,獲取與所述流程編碼對應的流程對象;
第六獲取子單元233,用于從所述存儲單元中的業(yè)務表中,獲取與所述業(yè)務記錄標識對應的業(yè)務信息;
顯示子單元234,用于根據(jù)所述流程對象、所述業(yè)務信息以及所述存儲單元中的流程記錄表,拼裝并顯示流程圖。
本實施例的工作流引擎前述圖1實施例所述的流程,本實施例不再詳述。
如圖5所示,本實施例公開一種工作流處理裝置,所述裝置包括圖2實施例所述的工作流引擎51、緩存單元52以及存儲單元53;
所述工作流引擎51包括生成單元21、處理單元22和查詢單元23;
所述緩存單元52,用于緩存所述工作流引擎生成的流程對象;
所述存儲單元53,用于存儲流程參數(shù)表、業(yè)務表以及流程記錄表。
如圖6所示,本實施例公開圖5中工作流處理裝置實施例的工作流程,包括以下步驟:
601、工作流引擎51在檢測到業(yè)務系統(tǒng)啟動時,獲取存儲單元53中的流程參數(shù)表;
602、工作流引擎51根據(jù)流程參數(shù)表生成流程對象,以使緩存單元52緩存流程對象;流程參數(shù)表中包含業(yè)務系統(tǒng)預設的流程參數(shù)信息
603、工作流引擎51在檢測到工作流啟動時,從緩存單元52中的流程對象中,獲取與工作流對應的流程對象;
604、工作流引擎51在處理流程對象之后,更新存儲單元53中的業(yè)務表以及流程記錄表;
605、工作流引擎51在檢測到工作流查詢時,從緩存單元52中的流程對象中,獲取與工作流對應的流程對象;
606、工作流引擎51根據(jù)流程對象以及存儲單元53中的流程記錄表,拼裝并顯示流程圖。
步驟601中工作流引擎51讀取流程參數(shù)表中流程信息,依次讀取流程模板記錄,流程狀態(tài)記錄。具體為:首先獲取所有流程模板信息,然后根據(jù)流程模板信息中的流程編碼獲取相應流程狀態(tài)信息。
步驟602中工作流引擎51對每條流程模板記錄生成一個流程對象,將流程編碼、流程名稱等相關信息作為該對象的屬性,并將流程狀態(tài)信息也作為該對象的屬性。
步驟601和602稱為初始化過程。
步驟603和604稱為流程流轉過程。
步驟603中工作流引擎51根據(jù)流程編碼獲取流程對象。
步驟604具體包括以下子步驟:
6041、根據(jù)業(yè)務記錄標識獲取業(yè)務表中與流程相關的信息,包括當前處理人、當前狀態(tài)等。
6042、根據(jù)流程對象、業(yè)務表中流程相關信息,進行流程操作有效性校驗,包括調用方法參數(shù)中當前處理人是否正確,當前狀態(tài)是否正確,下一狀態(tài)是否在當前狀態(tài)對象的下一步狀態(tài)編碼集合中,其他特殊校驗(通過操作參數(shù)控制啟用何種特殊校驗)。校驗失敗則返回錯誤提示,校驗通過后繼續(xù)。
6043、新增一條流程處理記錄。
6044、更新業(yè)務表數(shù)據(jù),包括當前處理人、當前狀態(tài)、其他業(yè)務 信息。
步驟605和606稱為流程記錄檢索過程。
步驟605中工作流引擎51根據(jù)流程編碼獲取流程對象。
步驟606具體包括以下子步驟:
6061、根據(jù)業(yè)務記錄標識獲取業(yè)務表中與流程相關的信息,包括當前處理人、當前狀態(tài)等。
6062、根據(jù)流程對象拼裝流程圖信息(通過流程狀態(tài)參數(shù)中流程編碼和下一步狀態(tài)編碼集合可構建出流程圖),返回流程圖信息和操作記錄信息。
圖7示出了通過流程記錄檢索所獲取的數(shù)據(jù)生成的工作流流程記錄的列表網(wǎng)頁效果圖。
從以上實施例中可以看出,本發(fā)明實現(xiàn)了如下技術效果:
1、高可配置度,通過修改少量的流程配置參數(shù)即能夠滿足客戶的大部分業(yè)務流程需求;
2、核心模塊簡單、可擴展,對于流程的特殊校驗、特殊處理,只需開發(fā)相應的功能模塊,在流程流轉中做相應引用及開關,通過操作參數(shù)做相應控制;
3、控制版本分支,不同項目的個性化流程需求僅通過少量的流程配置信息來控制,而主體代碼則保證只有一套。
這樣,同一應用系統(tǒng)不同項目之間,由大量流程配置文件及業(yè)務處理代碼轉化為少量的流程參數(shù)差異,最大程度地釋放了開發(fā)資源,甚至可由實施人員來進行流程配置,同時也降低了項目版本的差異,從而降低了項目成本。
需要說明的是,本文中的“第一”至“第六”僅用來區(qū)分不同實體,并不代表實體間的關系或順序。
顯然,本領域的技術人員應該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算 裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結合。
雖然結合附圖描述了本發(fā)明的實施方式,但是本領域技術人員可以在不脫離本發(fā)明的精神和范圍的情況下做出各種修改和變型,這樣的修改和變型均落入由所附權利要求所限定的范圍之內(nèi)。