專利名稱:可個性化定制業務流程的工作流引擎的制作方法
技術領域:
本發明涉及一種可個性化定制業務流程的工作流引擎。
背景技術:
在當今政府機關企事業單位的運作過程中,由于各種規范化管理概念的引入,各 機關企事業單位的運作過程越來越明顯的體現為信息流、資金流、物流、價值流等合理的流 動;這些流動越合理則往往人員分工越具體,人員間合作越緊密,這種合作的體現形式必然 是一個或多個完整而高效的工作流程,因此,可以說工作流無處不在。
但是傳統的管理類軟件要么是軟件開發商針對大部分政府機關企事業單位的管 理流程提取共性設計而成,要么是軟件開發商針對某個客戶的具體需求個性化定制而成。 這兩種形式的管理類軟件都有其不可回避的缺點,共性系統往往客戶花錢購買來之后發現 與本身的個性化需求有著或多或少的沖突,還是需要軟件開發商針對其個性化需求進行二 次開發,這樣的開發又需要投入大量的財力物力;而個性系統雖然滿足了單個客戶的個性 化需求,但這種個性化的定制隨之帶來的是高額的開發費用和維護成本。而且這兩種方式 都無法應對一種情況一旦客戶的業務流程發生變化,可能會導致后續的多次開發和維護。
導致上述現象的原因就是傳統的管理類軟件中幾乎所有的業務流程系統都是將 管理業務邏輯和軟件控制邏輯捆綁在一起,使得一旦客戶的業務邏輯發生變更,將全面的 影響到軟件系統的控制邏輯,因而必須修改大量源代碼甚至重新開發。發明內容
本發明的目的在于克服現有技術的不足,提供一種可個性化定制業務流程的工作 流引擎,該工作流引擎有利于分離軟件系統的控制邏輯和業務邏輯,實現在無需修改控制 邏輯或源代碼的前提下定制個性化的業務流程。
為實現上述目的,本發明的技術方案是一種可個性化定制業務流程的工作流引 擎,包括開始單元、執行單元模板和結束單元,所述工作流引擎基于令牌流方式實現,所述 執行單元模板包括人工任務單元、分支單元、匯聚單元、自動執行單元、子流程單元和條件 判斷單元;所述分支單元用于處理并行分支任務,其實現邏輯為當流程父令牌執行到分支單 元時,所述分支單元判定后續路徑的生成情況,然后根據后續路徑的條數產生相應的子令 牌;所述匯聚單元與所述分支單元配對使用,用于匯聚分支任務,其實現邏輯為當分支單 元中的子令牌到達匯聚單元時,所述匯聚單元判斷所述子令牌對應的流程父令牌的其它子 令牌是否都已到達了匯聚單元,是則取出對應的流程父令牌,然后銷毀所述子令牌,并驅動 所述流程父令牌流轉到匯聚單元并從所述匯聚單元往下流轉,否則銷毀所述子令牌;所述子流程單元用于生成一個或多個子流程,其實現邏輯為當流程父令牌執行到子 流程單元時,所述子流程單元根據設定的子流程數相應的創建一個或多個子令牌,并驅動子令牌在對應的子流程中流轉;當有子流程結束時,判斷其它子流程是否都已結束,即判斷其它子流程上的子令牌是否都已經銷毀,是則驅動流程父令牌往下流轉,否則僅銷毀已結束子流程上的子令牌,不做其它操作;
所述條件判斷單元用于配置流轉規則以及根據流轉規則從多條后續路徑中選擇滿足流轉條件的一條進行任務流轉,需與規則引擎配合使用,所述條件判斷單元的實現邏輯為當流程令牌執行到條件判斷單元時,所述條件判斷單元取出預先配置的判斷規則并傳給規則引擎,以對各條后續路徑是否滿足流轉條件進行邏輯計算,然后根據規則引擎的計算返回結果選擇滿足流轉條件的后續路徑進行流轉;
所述自動執行單元用于執行后臺數據操作或調用外系統的接口,需要預先配置任務執行需調用的程序,其實現邏輯為當流程令牌執行到自動執行單元時,所述自動執行單元調用并執行相應的程序;所述自動執行單元設有一個是否自動執行的屬性,當該屬性為true時,執行完相應的程序后流程令牌直接流轉到下一單元,否則流程令牌將在所述自動執行單元等待外界驅動才能往下流轉;
所述人工任務單元用于生成并執行需要執行人員完成一定的動作才能往下流轉的人工任務,其實現邏輯為當流程令牌執行到人工任務單元時,所述人工任務單元調用任務管理器產生相應的人工任務,此時流程令牌停在當前單元直至人工任務完成后再繼續往下流轉。與現有技術相比,本發明的有益效果是1、分離了軟件系統的控制邏輯和業務邏輯,使得業務邏輯的變更對于控制邏輯透明。2、利用本發明的工作流引擎開發的軟件系統可以根據具體業務需求量身定制個性化的業務流程,而不用修改控制邏輯,甚至無需修改源代碼。3、提供靈活、豐富的標準開發接口,使得開發人員能采用自己習慣的開發工具在該平臺上進行定制和擴充模塊。4、提供對所有主流數據庫的支持以及對數據的強大容錯能力。
圖1是本發明實施例的工作流引擎的框架圖。
具體實施例方式本發明可個性化定制業務流程的工作流引擎,如圖1所示,包括開始單元、執行單元模板和結束單元,所述工作流引擎基于令牌流方式實現,所述執行單元模板包括人工任務單元、分支單元、匯聚單元、自動執行單元、子流程單元和條件判斷單元;
所述分支單元用于處理并行分支任務,該單元不需要人工干預,其實現邏輯為當流程父令牌執行到分支單元時,所述分支單元判定后續路徑的生成情況,然后根據后續路徑的條數產生相應的子令牌。而流程父令牌此時還在所述分支單元,只是其狀態是不可流轉的,分支單元是需要和匯聚單元配套使用的,即要一一對應。所述匯聚單元與所述分支單元配對使用,用于匯聚分支任務,該單元也不需要人工干預,其實現邏輯為當分支單元中的子令牌到達匯聚單元時,所述匯聚單元判斷所述子令牌對應的流程父令牌的其它子令牌(即所述子令牌的兄弟令牌)是否都已到達了匯聚單元,是則通過所述子令牌取出對應的流程父令牌,然后銷毀所述子令牌,并驅動所述流程父 令牌流轉到匯聚單元并從所述匯聚單元往下流轉,否則銷毀所述子令牌。
所述子流程單元用于生成一個或多個子流程,也是通過子令牌的方式實現,該單 元也是一個不需要人工干預的環節,其實現邏輯為當流程父令牌執行到子流程單元時,所 述子流程單元根據設定的子流程數相應的創建一個或多個子令牌,并驅動子令牌在對應的 子流程中流轉;當有子流程結束時,判斷對應的兄弟子流程是否都已結束,即判斷其它子流 程上的子令牌是否都已經銷毀,是則驅動流程父令牌往下流轉,否則僅銷毀已結束子流程 上的子令牌,不做其它操作。
所述條件判斷單元,即路由判斷,此單元也不需要人工干預,但需要配置好路由規 貝U。所述條件判斷單元用于配置流轉規則以及根據流轉規則從多條后續路徑中選擇滿足流 轉條件的一條進行任務流轉,需與規則引擎配合使用,所述條件判斷單元的實現邏輯為當 流程令牌執行到條件判斷單元時,所述條件判斷單元取出預先配置的判斷規則并將所述判 斷規則傳給規則引擎,以對各條后續路徑是否滿足流轉條件進行邏輯計算,然后根據規則 引擎的計算返回結果選擇滿足流轉條件的后續路徑進行流轉。如對于有A、B、C三條后續路 徑的情況,條件判斷單元將流轉規則傳給規則引擎計算,首先判斷后續路徑A是否滿足流 轉條件,是則沿后續路徑A流轉,路徑B、C不作判斷,否則繼續計算后續路徑B、C是否滿足 流轉條件。
所述自動執行單元用于執行后臺數據操作或調用外系統的接口,也不需要人工干 預,但需要預先配置任務執行需調用的程序,其實現邏輯為當流程令牌執行到自動執行單 元時,所述自動執行單元調用并執行相應的程序;所述自動執行單元設有一個是否自動執 行的屬性,當該屬性為true時,執行完相應的程序后流程令牌直接流轉到下一單元,否則 流程令牌將在所述自動執行單元等待外界驅動才能往下流轉,這種外界驅動通常表現為程 序的執行結果,比如外系統接口的返回數據等。
所述人工任務單元用于生成并執行需要執行人員完成一定的動作才能往下流轉 的人工任務,其實現邏輯為當流程令牌執行到人工任務單元時,所述人工任務單元調用任 務管理器產生相應的人工任務,此時流程令牌停在當前單元直至人工任務完成后再繼續往 下流轉。
人工任務一般是單一任務,但也有特殊情況就是會簽或多實例任務,當人工任務 單元中配置需要會簽時,將會根據執行人員的數量產生對應數目的人工任務,但它不一定 需要所有任務都完成才驅動流程令牌執行,只需要滿足驅動的條件即可驅動令牌流轉,如 任務完成百分比達到50%或者任務完成達到3個時即可驅動流程令牌流轉,這些會簽流轉 條件可以預先予以配置。
在本發明的人工任務單元中,擴展了兩種單元,一種為多實例單元,另一種為會簽 單元。多實例單元其實為會簽單元的一種特殊形式,在實際的應用中,該種多實例單元多與 子流程單元共存,用以生成不定數量的子流程,待所有子流程都完成后父流程才能繼續流 轉。而會簽單元比較容易理解,在各種管理類系統中,需要上級審批和會簽的功能大范圍存 在,所以本發明設計了這種單元,同時可以對會簽規則進行設定,根據百分比、具體數目來 指定會簽結束并往下流轉的條件。
通常在管理類系統的建設中,都需要納入對執行人員的執行時間的考核要求,以提高執行人員工作效率,因此,本發明的工作流引擎也設計實現了一與人工任務單元配合使用的時限考核模塊,用于在人工任務單元上配置相應的考核時限,以對人工任務的執行時間進行考核。其中還可配置是否把節假日、下班時間等剔除出考核時限。而對于考核時限的計算大致包含兩種方式
I)時間點。時間點即某個時刻,在人工任務單元上配置相應的考核時限,當流程執行到該單元時,任務管理器會根據配置的考核時限計算出該任務完成的時間點。當系統時間到達該時刻時,如果業務上有配置如預警或告警等的動作,會觸發相應的提示功能。2)歷時。歷時表示該單元從創建出來后經歷了多長的時間后超時,同樣的,系統根據單元創建時間加上這個時長計算出超時時間點,當系統時間到達該時刻時,如果業務上有配置如預警或告警等的動作,會觸發相應的提示功能。當然如果無需對執行時間進行考核,也可不配置考核時限模塊。上述任務管理器主要是配合人工任務單元使用,用于根據人工任務單元配置信息來進行人工任務的創建、分配以及流程驅動的判斷等,并結合考核時限模塊對人工任務的執行時間進行計算和考核。它的實現邏輯其實已經融入到人工任務單元的實現邏輯、考核時限、規則引擎中了。上述規則引擎用于計算各種復雜的邏輯條件,規則引擎支持的規則表達方式有邏輯表達式,比如A>B等,其中A和B都為條件變量名稱;腳本語言(BSH腳本語言)以及JAVA類。腳本語言和JAVA類都是為了滿足個性化的復雜規則需求而設計的。規則引擎主要用于判斷后續單元是否需要創建,它作用于人工任務、條件、分支、子流程單元。如人工任務后續有多條路徑可以選擇,但只能執行其中的一條路徑,此時就需要配置相應的規則,也可不配置規則,由人工判斷執行哪條路徑。規則引擎實現了如下幾種方式來判斷路徑走向
I)邏輯表達式
根據已有的業務數據判斷,如審核是否通過等來計算結果。從實現來說,通常將頁面或者后臺的某個變量值與某個固定值進行邏輯計算得出true或者false,來判斷路徑的走向。比如設置邏輯表達式為param>l,貝U頁面或后臺就需要對變量param進行賦值,該值將與I進行比較大小,得出true還是false的結果。2)腳本語言
腳本語言,本發明實施例使用BSH作為腳本語言,便于修改。使用腳本語言主要考慮復雜業務邏輯或規則改動較頻繁的情況,因為腳本語言修改后可實時生效,這樣就無需重啟流程引擎即可達到想要的效果。配置的BSH腳本需要返回一個result變量,流程引擎將根據該變量的值來判斷流程的走向。3) JAVA 方法
配置JAVA方法其實是對腳本語言的一種補充,在應用過程中較少用到。它的實現方式為通過繼承相應的接口,實現接口中的邏輯來判斷,最終也需要返回一個結果值給規則引擎來判定后續的流程走向,此種方法主要用于改動不是很頻繁但業務邏輯非常復雜的情況。以上是本發明的較佳實施例,凡依本發明技術方案所作的改變,所產生的功能作用未超出本發明技術方案的范圍時,均屬于本發明的保護范圍。
權利要求
1.一種可個性化定制業務流程的工作流引擎,包括開始單元、執行單元模板和結束單元,其特征在于所述工作流引擎基于令牌流方式實現,所述執行單元模板包括人工任務單元、分支單元、匯聚單元、自動執行單元、子流程單元和條件判斷單元; 所述分支單元用于處理并行分支任務,其實現邏輯為當流程父令牌執行到分支單元時,所述分支單元判定后續路徑的生成情況,然后根據后續路徑的條數產生相應的子令牌; 所述匯聚單元與所述分支單元配對使用,用于匯聚分支任務,其實現邏輯為當分支單元中的子令牌到達匯聚單元時,所述匯聚單元判斷所述子令牌對應的流程父令牌的其它子令牌是否都已到達了匯聚單元,是則取出對應的流程父令牌,然后銷毀所述子令牌,并驅動所述流程父令牌流轉到匯聚單元并從所述匯聚單元往下流轉,否則銷毀所述子令牌; 用于生成一個或多個子流程,其實現邏輯為當流程父令牌執行到子流程單元時,所述子流程單元根據設定的子流程數相應的創建一個或多個子令牌,并驅動子令牌在對應的子流程中流轉;當有子流程結束時,判斷其它子流程是否都已結束,即判斷其它子流程上的子令牌是否都已經銷毀,是則驅動流程父令牌往下流轉,否則僅銷毀已結束子流程上的子令牌,不做其它操作; 所述條件判斷單元用于配置流轉規則以及根據流轉規則從多條后續路徑中選擇滿足流轉條件的一條進行任務流轉,需與規則引擎配合使用,所述條件判斷單元的實現邏輯為當流程令牌執行到條件判斷單元時,所述條件判斷單元取出預先配置的判斷規則并傳給規則引擎,以對各條后續路徑是否滿足流轉條件進行邏輯計算,然后根據規則引擎的計算返回結果選擇滿足流轉條件的后續路徑進行流轉; 用于執行后臺數據操作或調用外系統的接口,需要預先配置任務執行需調用的程序,其實現邏輯為當流程令牌執行到自動執行單元時,所述自動執行單元調用并執行相應的程序;所述自動執行單元設有一個是否自動執行的屬性,當該屬性為true時,執行完相應的程序后流程令牌直接流轉到下一單元,否則流程令牌將在所述自動執行單元等待外界驅動才能往下流轉; 所述人工任務單元用于生成并執行需要執行人員完成一定的動作才能往下流轉的人工任務,其實現邏輯為當流程令牌執行到人工任務單元時,所述人工任務單元調用任務管理器產生相應的人工任務,此時流程令牌停在當前單元直至人工任務完成后再繼續往下流轉。
2.根據權利要求1所述的可個性化定制業務流程的工作流引擎,其特征在于還設有一與人工任務單元配合使用的時限考核模塊,用于在人工任務單元上配置相應的考核時限,以對人工任務的執行時間進行考核。
3.根據權利要求2所述的可個性化定制業務流程的工作流引擎,其特征在于所述任務管理器用于根據人工任務單元配置信息來進行人工任務的創建、分配以及流程驅動的判斷,并結合考核時限模塊對人工任務的執行時間進行計算和考核。
4.根據權利要求1所述的可個性化定制業務流程的工作流引擎,其特征在于所述規則引擎用于計算各種邏輯條件,判斷后續單元是否需要創建,規則引擎支持的規則表達方式有邏輯表達式,腳本語言以及JAVA類。
全文摘要
本發明涉及一種可個性化定制業務流程的工作流引擎,包括開始單元、執行單元模板和結束單元,該工作流引擎基于令牌流方式實現,執行單元模板包括人工任務、分支、匯聚、自動執行、子流程和條件判斷等單元,分支單元用于處理分支任務,匯聚單元用于匯聚分支任務,子流程單元用于生成一個或多個子流程,條件判斷單元用于配置流轉規則以及根據流轉規則從多條后續路徑中選擇一條進行任務流轉,自動執行單元用于執行后臺數據操作或調用外系統的接口,人工任務單元用于生成并執行需要執行人員完成某些動作才能往下流轉的人工任務。該工作流引擎有利于分離軟件系統的控制邏輯和業務邏輯,實現在無需修改控制邏輯或源代碼的前提下定制個性化的業務流程。
文檔編號G06Q10/06GK102999816SQ20121051354
公開日2013年3月27日 申請日期2012年12月5日 優先權日2012年12月5日
發明者林富欽, 鄭生華, 張航, 陳春 申請人:福建郵科通信技術有限公司