亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種分布式工作流處理方法及分布式工作流引擎系統(tǒng)的制作方法

文檔序號(hào):6334672閱讀:332來(lái)源:國(guó)知局
專利名稱:一種分布式工作流處理方法及分布式工作流引擎系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于信息處理領(lǐng)域,尤其涉及一種分布式工作流處理方法及分布式工作流引擎系統(tǒng)。
背景技術(shù)
工作流(Workflow)是工作流程的計(jì)算模型,即將工作流程中的工作如何前后組織在一起的邏輯和規(guī)則在計(jì)算機(jī)中以恰當(dāng)?shù)哪P瓦M(jìn)行表示,并實(shí)施工作。工作流要解決的主要問(wèn)題是為實(shí)現(xiàn)某個(gè)業(yè)務(wù)目標(biāo),在多個(gè)參與者之間,利用計(jì)算機(jī),按某種預(yù)定規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù)。工作流屬于計(jì)算機(jī)支持的協(xié)同工作(Computer Supported Cooperative Work, CSCff)的一部分。在分布式環(huán)境下,工作流作為現(xiàn)在企業(yè)行政化管理的重要中間件,經(jīng)常面臨主管理系統(tǒng)與子管理系統(tǒng)在不同的地區(qū),而管理流程完成又依賴于子管理系統(tǒng)的數(shù)據(jù)等等資源的局面,目前,在分布式環(huán)境下的工作流引擎是通過(guò)第三方組件協(xié)調(diào)部署在多個(gè)服務(wù)器上工作流引擎的工作,導(dǎo)致在集團(tuán)級(jí)管理系統(tǒng)中網(wǎng)絡(luò)數(shù)據(jù)傳輸量過(guò)大,造成網(wǎng)絡(luò)1/0的瓶頸, 增加了系統(tǒng)的復(fù)雜性,系統(tǒng)耦合度高,系統(tǒng)擴(kuò)展性差,難以維護(hù),無(wú)法最大化利用資源。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種分布式工作流處理方法,旨在解決由于通過(guò)第三方組件協(xié)調(diào)部署在多個(gè)服務(wù)器上工作流引擎的工作,導(dǎo)致系統(tǒng)復(fù)雜性增加,耦合度高,系統(tǒng)擴(kuò)展性差,難以維護(hù)的問(wèn)題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種分布式工作流處理方法,所述方法包括下述步驟監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息;根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件;根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎,接收所述執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及所述流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,當(dāng)流程實(shí)例組件中封裝的流程實(shí)例尚未執(zhí)行完成時(shí),循環(huán)執(zhí)行該步驟直至完成所述流程實(shí)例組件中封裝的流程實(shí)例。本發(fā)明實(shí)施例的另一目的在于提供一種分布式工作流引擎系統(tǒng),所述系統(tǒng)包括主控制引擎,所述主控制引擎包括流程事件監(jiān)聽單元,用于監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息;流程實(shí)例創(chuàng)建組件單元,用于根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件;以及
執(zhí)行引擎管理單元,用于根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例創(chuàng)建組件單元啟動(dòng)的流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎,接收所述執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及所述流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,當(dāng)流程實(shí)例組件中封裝的流程實(shí)例尚未執(zhí)行完成時(shí),根據(jù)預(yù)置的執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎。本發(fā)明實(shí)施例的另一目的在于提供一種分布式工作流處理方法,所述方法包括下述步驟通過(guò)執(zhí)行引擎調(diào)用接口接收主控制引擎發(fā)送的流程實(shí)例組件;根據(jù)流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行所述流程實(shí)例;當(dāng)完成所述流程實(shí)例的執(zhí)行時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,并發(fā)送給主控制引擎。本發(fā)明實(shí)施例的另一目的在于提供一種分布式工作流引擎系統(tǒng),所述系統(tǒng)包括執(zhí)行引擎,所述執(zhí)行引擎包括執(zhí)行引擎調(diào)用接口,用于接收主控制引擎發(fā)送的流程實(shí)例組件; 流程實(shí)例執(zhí)行單元,用于根據(jù)執(zhí)行引擎調(diào)用接口接收到的流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行所述流程實(shí)例;以及狀態(tài)信息發(fā)送單元,用于當(dāng)完成所述流程實(shí)例的執(zhí)行時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,并發(fā)送給主控制引擎。本發(fā)明實(shí)施例的另一目的在于提供一種分布式工作流引擎系統(tǒng),所述系統(tǒng)包括主控制引擎和執(zhí)行引擎,其中主控制引擎,用于監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息,根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件,將流程實(shí)例組件通過(guò)執(zhí)行引擎提供的調(diào)用接口發(fā)送給執(zhí)行引擎;以及執(zhí)行引擎,用于通過(guò)執(zhí)行引擎調(diào)用接口接收主控制引擎發(fā)送的流程實(shí)例組件,根據(jù)流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行所述流程實(shí)例,當(dāng)完成所述流程實(shí)例的執(zhí)行時(shí),將執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息發(fā)送給主控制引擎。本發(fā)明實(shí)施例根據(jù)預(yù)置的執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息以及封裝的流程實(shí)例組件關(guān)聯(lián)信息,調(diào)用流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將流程實(shí)例組件發(fā)送給關(guān)聯(lián)的執(zhí)行引擎執(zhí)行,從而無(wú)需第三方組件來(lái)協(xié)調(diào)部署分布式的工作流引擎,減少了數(shù)據(jù)的傳輸過(guò)程,從而減少了集團(tuán)級(jí)管理系統(tǒng)中網(wǎng)絡(luò)數(shù)據(jù)的傳輸量,簡(jiǎn)化了主控制引擎與執(zhí)行引擎之間的調(diào)用過(guò)程,從而實(shí)現(xiàn)組件之間的低耦合,高內(nèi)聚,使得分布式環(huán)境下工作流引擎系統(tǒng)的擴(kuò)展更加靈活、方便。


圖1是本發(fā)明第一實(shí)施例提供的分布式工作流引擎系統(tǒng)的交互流程圖;圖2是本發(fā)明第二實(shí)施例提供的分布式工作流引擎系統(tǒng)的應(yīng)用場(chǎng)景5
圖3是本發(fā)明第三實(shí)施例提供的分布式工作流引擎系統(tǒng)的結(jié)構(gòu)圖;圖4是本發(fā)明第三實(shí)施例提供的主控制引擎的結(jié)構(gòu)圖;圖5是本發(fā)明第三實(shí)施例提供的執(zhí)行引擎的結(jié)構(gòu)圖;圖6是本發(fā)明第四實(shí)施例提供的主控制引擎的實(shí)例圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實(shí)施例根據(jù)預(yù)置的執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息,通過(guò)調(diào)用流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將流程實(shí)例組件發(fā)送給關(guān)聯(lián)的執(zhí)行引擎執(zhí)行,簡(jiǎn)化了主控制引擎與執(zhí)行引擎之間的調(diào)用過(guò)程,實(shí)現(xiàn)了組件之間的低耦合,高內(nèi)聚,使得分布式環(huán)境下工作流引擎系統(tǒng)的擴(kuò)展更加靈活、方便。本發(fā)明實(shí)施例提供了一種分布式工作流處理方法,所述方法包括下述步驟監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息;根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件;根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎,接收所述執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及所述流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,當(dāng)流程實(shí)例組件中封裝的流程實(shí)例尚未執(zhí)行完成時(shí),循環(huán)執(zhí)行該步驟直至完成所述流程實(shí)例組件中封裝的流程實(shí)例。本發(fā)明實(shí)施例還提供了一種分布式工作流引擎系統(tǒng),所述系統(tǒng)包括主控制引擎, 所述主控制引擎包括流程事件監(jiān)聽單元,用于監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息;流程實(shí)例創(chuàng)建組件單元,用于根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件;以及執(zhí)行引擎管理單元,用于根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例創(chuàng)建組件單元啟動(dòng)的流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎,接收所述執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及所述流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,當(dāng)流程實(shí)例組件中封裝的流程實(shí)例尚未執(zhí)行完成時(shí),根據(jù)預(yù)置的執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎。 本發(fā)明實(shí)施例還提供了一種分布式工作流處理方法,所述方法包括下述步驟通過(guò)執(zhí)行引擎調(diào)用接口接收主控制引擎發(fā)送的流程實(shí)例組件;根據(jù)流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行所述流程實(shí)例;當(dāng)完成所述流程實(shí)例的執(zhí)行時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,并發(fā)送給主控制引擎。
本發(fā)明實(shí)施例還提供了一種分布式工作流引擎系統(tǒng),所述系統(tǒng)包括執(zhí)行引擎,所述執(zhí)行引擎包括執(zhí)行引擎調(diào)用接口,用于接收主控制引擎發(fā)送的流程實(shí)例組件;流程實(shí)例執(zhí)行單元,用于根據(jù)執(zhí)行引擎調(diào)用接口接收到的流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行所述流程實(shí)例;以及狀態(tài)信息發(fā)送單元,用于當(dāng)完成所述流程實(shí)例的執(zhí)行時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,并發(fā)送給主控制引擎。本發(fā)明實(shí)施例還提供了一種分布式工作流引擎系統(tǒng),所述系統(tǒng)包括主控制引擎和執(zhí)行引擎,其中主控制引擎,用于監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息,根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件,將流程實(shí)例組件通過(guò)執(zhí)行引擎提供的調(diào)用接口發(fā)送給執(zhí)行引擎;以及執(zhí)行引擎,用于通過(guò)執(zhí)行引擎調(diào)用接口接收主控制引擎發(fā)送的流程實(shí)例組件,根據(jù)流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行所述流程實(shí)例,當(dāng)完成所述流程實(shí)例的執(zhí)行時(shí),將執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息發(fā)送給主控制引擎。本發(fā)明實(shí)施例根據(jù)預(yù)置的執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息以及封裝的流程實(shí)例組件關(guān)聯(lián)信息,調(diào)用流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將流程實(shí)例組件發(fā)送給關(guān)聯(lián)的執(zhí)行引擎執(zhí)行,從而無(wú)需外部組件來(lái)協(xié)調(diào)部署分布式的工作流引擎,減少了數(shù)據(jù)的傳輸過(guò)程,從而減少了集團(tuán)級(jí)管理系統(tǒng)中網(wǎng)絡(luò)數(shù)據(jù)的傳輸量,簡(jiǎn)化了主控制引擎與執(zhí)行引擎之間的調(diào)用過(guò)程,從而實(shí)現(xiàn)組件之間的低耦合,高內(nèi)聚,使得分布式環(huán)境下工作流引擎系統(tǒng)的擴(kuò)展更加靈活、方便。以下結(jié)合具體實(shí)施例對(duì)本發(fā)明的具體實(shí)現(xiàn)進(jìn)行詳細(xì)描述實(shí)施例一工作流(Workflow)是工作流程的計(jì)算模型,即將工作流程中的工作如何前后組織在一起的邏輯和規(guī)則在計(jì)算機(jī)中以恰當(dāng)?shù)哪P瓦M(jìn)行表示并對(duì)其實(shí)施計(jì)算,在本發(fā)明實(shí)施例中,將工作流程以流程實(shí)例的形式在主控制引擎和執(zhí)行引擎之間進(jìn)行傳遞和執(zhí)行,通過(guò)主控制引擎直接調(diào)用執(zhí)行引擎提供的調(diào)用接口,完成工作流程的處理。圖1示出了本發(fā)明第一實(shí)施例提供的分布式工作流引擎系統(tǒng)的交互過(guò)程,詳述如下1.主控制引擎監(jiān)聽觸發(fā)的流程事件,獲取該流程事件的事件信息;在本發(fā)明實(shí)施例中,流程事件可以是用戶輸入預(yù)定條件觸發(fā)的相應(yīng)流程事件。例如用戶輸入單據(jù)時(shí),將觸發(fā)與該單據(jù)相關(guān)的處理流程。每個(gè)流程事件包括事件ID等信息, 主控制引擎根據(jù)事件ID獲取關(guān)聯(lián)的流程模板。2.主控制引擎根據(jù)步驟1獲取的流程事件信息,獲取預(yù)先存儲(chǔ)的該流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件;在本發(fā)明實(shí)施例中,預(yù)先建立了企業(yè)中工作流程對(duì)應(yīng)的流程事件信息,如事件ID 信息,以及該流程事件關(guān)聯(lián)的流程模板,可以以數(shù)據(jù)庫(kù)、配置文件等形式進(jìn)行存儲(chǔ)。根據(jù)步驟1獲取的事件ID與數(shù)據(jù)庫(kù)的事件ID進(jìn)行比較,獲得關(guān)聯(lián)的流程模板,從而生成相應(yīng)的流程實(shí)例。為了后續(xù)流程實(shí)例的自動(dòng)化處理,在本發(fā)明實(shí)施例中,應(yīng)將創(chuàng)建的流程實(shí)例的關(guān)聯(lián)信息與流程實(shí)例進(jìn)行封裝,該關(guān)聯(lián)信息主要包括流程實(shí)例類型、流程參與者信息,以及擴(kuò)展腳本等,其中流程實(shí)例類型可用于主控制引擎選擇合適的執(zhí)行引擎執(zhí)行流程實(shí)例,流程參與者信息用于執(zhí)行引擎選擇具有相應(yīng)權(quán)限的參與者,擴(kuò)展腳本則用于實(shí)現(xiàn)流程實(shí)例的自動(dòng)流轉(zhuǎn)。3.根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用流程實(shí)例關(guān)聯(lián)的執(zhí)行弓I擎提供的接口,將該流程實(shí)例組件發(fā)送給關(guān)聯(lián)的執(zhí)行引擎;在本發(fā)明實(shí)施例中,在主控制引擎中,保存了在其注冊(cè)的執(zhí)行引擎,以及各個(gè)執(zhí)行引擎的狀態(tài)信息(空閑、忙碌),具體實(shí)施過(guò)程中,注冊(cè)的執(zhí)行引擎大多數(shù)為分布式的執(zhí)行引擎,并以調(diào)用接口的形式在主控制引擎中進(jìn)行注冊(cè),一個(gè)執(zhí)行引擎可以執(zhí)行不同的流程實(shí)例或流程實(shí)例的部分工作,主控制引擎根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息、流程實(shí)例、以及流程實(shí)例關(guān)聯(lián)信息調(diào)用相應(yīng)的執(zhí)行引擎,將流程實(shí)例組件發(fā)送給該執(zhí)行引擎。4.執(zhí)行引擎通過(guò)執(zhí)行引擎調(diào)用接口接收主控制引擎發(fā)送的流程實(shí)例組件,根據(jù)流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行該流程實(shí)例;在本發(fā)明實(shí)施例中,執(zhí)行引擎通過(guò)執(zhí)行引擎的調(diào)用接口接收主控制引擎發(fā)送的流程實(shí)例組件,該調(diào)用接口可以是遠(yuǎn)程調(diào)用接口,例如EJB接口、Web服務(wù)接口以及其它遠(yuǎn)程調(diào)用接口。流程實(shí)例中有些流程只需要本地系統(tǒng)根據(jù)封裝的擴(kuò)展腳本進(jìn)行自動(dòng)執(zhí)行,有些則需要關(guān)聯(lián)的流程參與者進(jìn)行手動(dòng)處理,進(jìn)行流程的人工流轉(zhuǎn),通過(guò)提供外部系統(tǒng)接口與外部系統(tǒng)進(jìn)行交互,獲取流程處理過(guò)程中所需要的數(shù)據(jù)信息,或保存相應(yīng)的數(shù)據(jù)到外部系統(tǒng)。5.當(dāng)完成流程實(shí)例的執(zhí)行時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息;在本發(fā)明實(shí)施例中,當(dāng)執(zhí)行引擎完成流程實(shí)例在該執(zhí)行引擎所需要完成的流程時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例的狀態(tài)信息,其中流程實(shí)例的狀態(tài)信息包括流程實(shí)例執(zhí)行完成情況等信息,以方便主控制引擎的調(diào)度。6.執(zhí)行引擎將獲取的執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息發(fā)送給主控制引擎;7.主控制引擎接收?qǐng)?zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,當(dāng)流程實(shí)例組件中封裝的流程實(shí)例尚未執(zhí)行完成時(shí),重復(fù)執(zhí)行步驟3-6直至流程實(shí)例執(zhí)行完成。在本發(fā)明實(shí)施例中,主控制引擎接收到執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、 以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息后,更新執(zhí)行的狀態(tài),以方便后續(xù)的調(diào)用, 檢查流程實(shí)例的狀態(tài),判斷流程實(shí)例是否執(zhí)行完成,當(dāng)流程實(shí)例尚未執(zhí)行完成時(shí),重復(fù)執(zhí)行步驟3-6,直至流程實(shí)例所包含的流程全部處理完畢。在本發(fā)明實(shí)施例中,主控制引擎通過(guò)執(zhí)行引擎的調(diào)用接口,如EJB接口、Web服務(wù)接口,實(shí)現(xiàn)分布式環(huán)境下執(zhí)行引擎的協(xié)調(diào)工作,無(wú)需第三方協(xié)調(diào)組件來(lái)協(xié)調(diào)各執(zhí)行引擎的工作,從而簡(jiǎn)化了主控制引擎與執(zhí)行引擎之間的調(diào)用過(guò)程,實(shí)現(xiàn)了組件之間的低耦合,高內(nèi)
8聚,使得分布式環(huán)境下工作流引擎系統(tǒng)的擴(kuò)展更加靈活、方便。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中, 所述的存儲(chǔ)介質(zhì),如ROM/RAM、磁盤、光盤等。實(shí)施例二 根據(jù)實(shí)施例一,圖2示出了本發(fā)明第二實(shí)施例提供的分布式工作流引擎系統(tǒng)的具體應(yīng)用場(chǎng)景,詳述如下主控制引擎位于服務(wù)器A,三個(gè)執(zhí)行引擎分別位于服務(wù)器B、服務(wù)器C和服務(wù)器D, 當(dāng)服務(wù)器A上的主控制引擎接收到觸發(fā)的流程事件后,獲取該流程事件的事件信息,例如關(guān)聯(lián)的審核人員等,根據(jù)事件信息,獲取預(yù)先存儲(chǔ)的流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件,選擇處理該流程實(shí)例的執(zhí)行引擎,例如服務(wù)器B上的執(zhí)行引擎B、服務(wù)器C上的執(zhí)行引擎C或服務(wù)器D上的執(zhí)行引擎D,執(zhí)行引擎完成其執(zhí)行的流程實(shí)例部分后,向主控制引擎返回其狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,主控制引擎根據(jù)返回的信息,再次選擇相應(yīng)的執(zhí)行引擎,直至流程實(shí)例所包含的所有流程執(zhí)行完畢。在具體的實(shí)施過(guò)程中,該系統(tǒng)可以用于集團(tuán)級(jí)企業(yè)用戶,將主控制引擎設(shè)置在集團(tuán)總部系統(tǒng),而執(zhí)行引擎B、執(zhí)行引擎C以及執(zhí)行引擎D可以設(shè)置在集團(tuán)的分公司,從而完成分布環(huán)境下流程實(shí)例的執(zhí)行。實(shí)施例三圖3示出了本發(fā)明第三實(shí)施例提供的分布式工作流引擎系統(tǒng)的結(jié)構(gòu),為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。在本發(fā)明實(shí)施例中,分布式工作流引擎系統(tǒng)包括主控制引擎1以及執(zhí)行引擎2,其中主控制引擎1包括流程事件監(jiān)聽單元11,用于監(jiān)聽觸發(fā)的流程事件,獲取該流程事件的事件信息。在本發(fā)明實(shí)施例中,流程事件可以是用戶輸入的預(yù)定條件觸發(fā)的相應(yīng)流程事件, 例如,當(dāng)企業(yè)人事部門用戶輸入簡(jiǎn)歷,或者財(cái)務(wù)部門輸入報(bào)表時(shí),觸發(fā)相應(yīng)的招聘事件,以及財(cái)務(wù)報(bào)銷事件,每個(gè)流程事件對(duì)應(yīng)一個(gè)事件ID,主控制引擎根據(jù)事件ID獲取關(guān)聯(lián)的流程模板。流程實(shí)例創(chuàng)建組件單元12,用于根據(jù)流程事件監(jiān)聽單元11獲取的事件信息,獲取預(yù)先存儲(chǔ)的流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件。在本發(fā)明實(shí)施例中,預(yù)先建立了企業(yè)中流程事件信息,如事件ID信息,以及該業(yè)務(wù)事件關(guān)聯(lián)的流程模板,該流程事件信息可以以數(shù)據(jù)庫(kù)、配置文件等形式進(jìn)行存儲(chǔ)。根據(jù)流程事件監(jiān)聽單元11獲取的事件ID與數(shù)據(jù)庫(kù)的事件ID進(jìn)行比較,獲得關(guān)聯(lián)的流程模板,從而生成相應(yīng)的流程實(shí)例。為了后續(xù)流程實(shí)例的自動(dòng)化處理,在本發(fā)明實(shí)施例中,應(yīng)將創(chuàng)建的流程實(shí)例的關(guān)聯(lián)信息與流程實(shí)例進(jìn)行封裝,該關(guān)聯(lián)信息主要包括流程實(shí)例類型、流程參與者,以及擴(kuò)展腳本等,其中流程實(shí)例類型可用于主控制引擎選擇合適的執(zhí)行引擎執(zhí)行流程實(shí)例,流程參與者信息用于執(zhí)行引擎選擇具有相應(yīng)權(quán)限的參與者,擴(kuò)展腳本則用于實(shí)現(xiàn)流程實(shí)例的自動(dòng)流轉(zhuǎn)。執(zhí)行引擎管理單元13,用于根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用流程實(shí)例創(chuàng)建組件單元啟動(dòng)的流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將流程實(shí)例組件發(fā)送給執(zhí)行引擎,接收?qǐng)?zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及該流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,當(dāng)流程實(shí)例組件中封裝的流程實(shí)例尚未執(zhí)行完成時(shí),根據(jù)預(yù)置的執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息,調(diào)用流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎,將流程實(shí)例組件發(fā)送給執(zhí)行引擎。在本發(fā)明實(shí)施例中,執(zhí)行引擎管理單元13接收到執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息后,更新執(zhí)行的狀態(tài),以方便后續(xù)的調(diào)用,檢查流程實(shí)例的狀態(tài),判斷流程實(shí)例是否執(zhí)行完成,當(dāng)流程實(shí)例尚未執(zhí)行完成時(shí),將流程實(shí)例發(fā)送給關(guān)聯(lián)的執(zhí)行引擎,直至流程實(shí)例所包含的流程全部處理完畢。在本發(fā)明實(shí)施例中,為了更好地實(shí)現(xiàn)組件的高內(nèi)聚,執(zhí)行引擎管理單元13在具體的實(shí)施過(guò)程中,如圖4所示,執(zhí)行引擎管理單元13可以由以下三個(gè)單元組成狀態(tài)信息接收單元131,用于接收、保存執(zhí)行引擎的狀態(tài)信息、執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息;執(zhí)行引擎列表132,用于存儲(chǔ)注冊(cè)的執(zhí)行引擎及其調(diào)用接口、以及執(zhí)行引擎的狀態(tài)信息;以及執(zhí)行引擎動(dòng)態(tài)調(diào)度單元133,用于根據(jù)執(zhí)行引擎列表132中注冊(cè)的執(zhí)行引擎及其狀態(tài)信息,調(diào)用接收的流程實(shí)例組件中封裝的流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎,將流程實(shí)例組件發(fā)送給執(zhí)行引擎。在本發(fā)明實(shí)施例中,該主控制引擎可以包含在分布式工作流引擎系統(tǒng)的軟件單元、硬件單元或軟硬件結(jié)合單元。在本發(fā)明實(shí)施例中,分布式工作流引擎系統(tǒng)包括主控制引擎1以及執(zhí)行引擎2,其中執(zhí)行引擎2包括執(zhí)行引擎調(diào)用接口 21,用于接收主控制引擎發(fā)送的流程實(shí)例組件;在本發(fā)明實(shí)施例中,執(zhí)行引擎通過(guò)執(zhí)行引擎的調(diào)用接口接收主控制引擎發(fā)送的流程實(shí)例組件,該調(diào)用接口可以是遠(yuǎn)程調(diào)用接口,例如EJB接口、Web服務(wù)接口等。流程實(shí)例執(zhí)行單元22,用于根據(jù)執(zhí)行引擎調(diào)用接口接收到的流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行該流程實(shí)例;在本發(fā)明實(shí)施例中,流程實(shí)例中有些流程只需要本地系統(tǒng)根據(jù)接收到的流程實(shí)例組件中封裝的擴(kuò)展腳本進(jìn)行自動(dòng)執(zhí)行,有些則需要關(guān)聯(lián)的流程參與者進(jìn)行手動(dòng)處理,進(jìn)行工作流程的人工流轉(zhuǎn),通過(guò)提供外部系統(tǒng)接口與外部系統(tǒng)進(jìn)行交互,獲取流程處理過(guò)程中所需要的數(shù)據(jù)信息,或保存相應(yīng)的數(shù)據(jù)到外部系統(tǒng)。狀態(tài)信息發(fā)送單元23,用于當(dāng)執(zhí)行引擎完成流程實(shí)例的執(zhí)行時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,并發(fā)送給主控制引擎。在本發(fā)明實(shí)施例中,當(dāng)執(zhí)行引擎完成流程實(shí)例在該執(zhí)行引擎所需要完成的流程時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例的狀態(tài)信息,以方便主控制引擎的調(diào)度。在本發(fā)明實(shí)施例中,為了更好地實(shí)現(xiàn)組件的高內(nèi)聚,流程實(shí)例執(zhí)行單元22可以進(jìn)一步分為由圖5所示的組件
自動(dòng)流轉(zhuǎn)單元221,用于執(zhí)行流程實(shí)例中自動(dòng)執(zhí)行的流程實(shí)例部分;在本發(fā)明實(shí)施例中,對(duì)于流程實(shí)例中自動(dòng)執(zhí)行的流程實(shí)例部分,則可以根據(jù)封裝的擴(kuò)展腳本進(jìn)行自動(dòng)執(zhí)行。人工流轉(zhuǎn)單元222,用于執(zhí)行流程實(shí)例中需要人工執(zhí)行的流程實(shí)例部分;在本發(fā)明實(shí)施例中,對(duì)于流程實(shí)例中需要人工參與執(zhí)行的流程實(shí)例部分,則在人工流轉(zhuǎn)過(guò)程中,在接收流程參與者輸入的數(shù)據(jù)或指令后,執(zhí)行其輸入的指令,完成流程實(shí)例中人工流轉(zhuǎn)部分。外部系統(tǒng)接口 223,用于與外部系統(tǒng)交互,獲取自動(dòng)流轉(zhuǎn)單元221以及人工流轉(zhuǎn)單元222執(zhí)行流程實(shí)例所需數(shù)據(jù)。在本發(fā)明實(shí)施例中,執(zhí)行引擎位于不同的子系統(tǒng)中,而流程實(shí)例的執(zhí)行則可能依靠子系統(tǒng)中的數(shù)據(jù),或需要對(duì)子系統(tǒng)中的數(shù)據(jù)進(jìn)行相關(guān)的操作,因此外部系統(tǒng)接口 223在具體的實(shí)施過(guò)程中,主要用于獲取外部數(shù)據(jù)或操作外部數(shù)據(jù)等與外部系統(tǒng)的交互。在本發(fā)明實(shí)施例中,該執(zhí)行引擎可以內(nèi)置于分布式工作流引擎系統(tǒng)的軟件單元、 硬件單元或軟硬件結(jié)合單元。實(shí)施例四為了實(shí)現(xiàn)主控制引擎內(nèi)部組件之間的高內(nèi)聚,根據(jù)實(shí)施例一和三,圖6示出了本發(fā)明第四實(shí)施例提供的分布式工作流引擎系統(tǒng)中主控制引擎的具體實(shí)施,詳述如下在本發(fā)明實(shí)施例中,主控制引擎61包括單據(jù)管理器611,用于接收用戶輸入的單據(jù),觸發(fā)該單據(jù)對(duì)應(yīng)的流程事件;在本發(fā)明實(shí)施例中,觸發(fā)事件的單據(jù)可以是簡(jiǎn)歷,或者財(cái)務(wù)報(bào)表,例如,當(dāng)企業(yè)人事部分需要招聘新員工時(shí),輸入一個(gè)簡(jiǎn)歷,從而觸發(fā)一個(gè)招聘流程事件。流程監(jiān)聽器612,用于監(jiān)聽單據(jù)管理器611所觸發(fā)的流程事件,當(dāng)監(jiān)聽到流程事件時(shí),獲取事件信息;在本發(fā)明實(shí)施例中,事件信息包括事件ID等信息,以方便主控制引擎根據(jù)事件信息調(diào)用關(guān)聯(lián)的執(zhí)行引擎
流程解釋器613,用于根據(jù)流程監(jiān)聽器612獲取的事件信息,獲取數(shù)據(jù)庫(kù)中預(yù)置的事件關(guān)聯(lián)的流程模板,生成該事件對(duì)應(yīng)的流程實(shí)例;流程創(chuàng)建器614,用于將流程解釋器613生成的流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件;在本發(fā)明實(shí)施例中,為了后續(xù)流程實(shí)例的自動(dòng)化處理,應(yīng)將創(chuàng)建的流程實(shí)例的關(guān)聯(lián)信息與流程實(shí)例進(jìn)行封裝,該關(guān)聯(lián)信息主要包括用于選擇執(zhí)行引擎的流程實(shí)例類型、流程參與者,以及擴(kuò)展腳本等。流程加載器615,用于將流程創(chuàng)建器614創(chuàng)建的流程實(shí)例組件加載到流程啟動(dòng)器中;流程啟動(dòng)器616,用于啟動(dòng)加載的流程實(shí)例組件中封裝的流程實(shí)例;執(zhí)行引擎管理器617,用于根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,調(diào)用該流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎,將流程實(shí)例組件發(fā)送給關(guān)聯(lián)的執(zhí)行引擎,接收?qǐng)?zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,當(dāng)流程實(shí)例組件中封裝的流程實(shí)例尚未執(zhí)行完成時(shí),根據(jù)預(yù)置的執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息,調(diào)用流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎,將流程實(shí)例組件發(fā)送給執(zhí)行引擎。在本發(fā)明實(shí)施例中,為了更好地實(shí)現(xiàn)組件的高內(nèi)聚,執(zhí)行引擎管理單元617在具體的實(shí)施過(guò)程中,執(zhí)行引擎管理器617可以由引擎狀態(tài)器、執(zhí)行引擎列表、以及執(zhí)行引擎動(dòng)態(tài)調(diào)度器組成,其中引擎狀態(tài)器,用于接收、保存執(zhí)行引擎的狀態(tài)信息、執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息;執(zhí)行引擎列表,用于存儲(chǔ)注冊(cè)的執(zhí)行引擎及其調(diào)用接口、以及執(zhí)行引擎的狀態(tài)信息;以及執(zhí)行引擎動(dòng)態(tài)調(diào)度單元,用于根據(jù)執(zhí)行引擎列表中注冊(cè)的執(zhí)行引擎及其狀態(tài)信息,調(diào)用接收的流程實(shí)例組件中封裝的流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎,將流程實(shí)例組件發(fā)送給執(zhí)行引擎。數(shù)據(jù)庫(kù)618,用于預(yù)先存儲(chǔ)事件信息以及其關(guān)聯(lián)的流程模板。在本發(fā)明實(shí)施例中,數(shù)據(jù)中預(yù)先存儲(chǔ)的事件ID、流程發(fā)起人等信息以及其關(guān)聯(lián)的流程模板,流程模板為企業(yè)經(jīng)常需要處理到的業(yè)務(wù)流程,經(jīng)模板化后形成的流程模板。在本發(fā)明實(shí)施例中,將主控制引擎的內(nèi)部組件進(jìn)行了進(jìn)一步的劃分,使得主控制引擎的內(nèi)部組件內(nèi)聚度更強(qiáng)。本發(fā)明實(shí)施例將流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件,根據(jù)預(yù)置的執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息,通過(guò)調(diào)用流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口, 將流程實(shí)例組件發(fā)送給關(guān)聯(lián)的執(zhí)行引擎執(zhí)行,克服了分布式環(huán)境下的工作流引擎是通過(guò)第三方組件協(xié)調(diào)分布式工作流引擎的工作,系統(tǒng)復(fù)雜性增加,耦合度高,系統(tǒng)擴(kuò)展性差,難以維護(hù)的問(wèn)題,減少了集團(tuán)級(jí)管理系統(tǒng)中網(wǎng)絡(luò)數(shù)據(jù)的傳輸量,簡(jiǎn)化了主控制引擎與執(zhí)行引擎之間的調(diào)用過(guò)程,從而實(shí)現(xiàn)組件之間的低耦合,高內(nèi)聚,使得分布式環(huán)境下工作流引擎系統(tǒng)的擴(kuò)展更加靈活、方便。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種分布式工作流處理方法,其特征在于,所述方法包括下述步驟 監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息;根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件;根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎,接收所述執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及所述流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,當(dāng)流程實(shí)例組件中封裝的流程實(shí)例尚未執(zhí)行完成時(shí),循環(huán)執(zhí)行該步驟直至完成所述流程實(shí)例組件中封裝的流程實(shí)例。
2.一種分布式工作流引擎系統(tǒng),其特征在于,所述系統(tǒng)包括主控制引擎,所述主控制引擎包括流程事件監(jiān)聽單元,用于監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息; 流程實(shí)例創(chuàng)建組件單元,用于根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件;以及執(zhí)行引擎管理單元,用于根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例創(chuàng)建組件單元啟動(dòng)的流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎,接收所述執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及所述流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,當(dāng)流程實(shí)例組件中封裝的流程實(shí)例尚未執(zhí)行完成時(shí),根據(jù)預(yù)置的執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎。
3.如權(quán)利要求2所述的系統(tǒng),其特征在于,所述執(zhí)行引擎管理單元具體包括狀態(tài)信息接收單元,用于接收并保存執(zhí)行引擎的狀態(tài)信息、執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及所述流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息;執(zhí)行引擎列表,用于保存注冊(cè)的執(zhí)行引擎、執(zhí)行引擎提供的調(diào)用接口信息、以及所述執(zhí)行引擎的狀態(tài)信息;以及執(zhí)行引擎動(dòng)態(tài)調(diào)度單元,用于根據(jù)所述執(zhí)行引擎列表中注冊(cè)的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎。
4.一種分布式工作流處理方法,其特征在于,所述方法包括下述步驟 通過(guò)執(zhí)行引擎調(diào)用接口接收主控制引擎發(fā)送的流程實(shí)例組件; 根據(jù)流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行所述流程實(shí)例;當(dāng)完成所述流程實(shí)例的執(zhí)行時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,并發(fā)送給主控制引擎。
5.如權(quán)利要求4所述的方法,其特征在于,所述執(zhí)行引擎調(diào)用接口為EJB接口以及Web 服務(wù)接口。
6.一種分布式工作流引擎系統(tǒng),其特征在于,所述系統(tǒng)包括執(zhí)行引擎,所述執(zhí)行引擎包括執(zhí)行引擎調(diào)用接口,用于接收主控制引擎發(fā)送的流程實(shí)例組件; 流程實(shí)例執(zhí)行單元,用于根據(jù)執(zhí)行引擎調(diào)用接口接收到的流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行所述流程實(shí)例;以及狀態(tài)信息發(fā)送單元,用于當(dāng)完成所述流程實(shí)例的執(zhí)行時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,并發(fā)送給主控制引擎。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述流程實(shí)例執(zhí)行單元具體包括 自動(dòng)流轉(zhuǎn)單元,用于執(zhí)行流程實(shí)例中自動(dòng)執(zhí)行的流程實(shí)例部分;人工流轉(zhuǎn)單元,用于執(zhí)行流程實(shí)例中需要人工執(zhí)行的流程實(shí)例部分;以及外部系統(tǒng)接口,用于與外部系統(tǒng)交互,獲取所述自動(dòng)流轉(zhuǎn)單元以及所述人工流轉(zhuǎn)單元執(zhí)行流程實(shí)例所需數(shù)據(jù)。
8.一種分布式工作流引擎系統(tǒng),其特征在于,所述系統(tǒng)包括主控制引擎和執(zhí)行引擎,其中主控制引擎,用于監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息,根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件,將流程實(shí)例組件通過(guò)執(zhí)行引擎提供的調(diào)用接口發(fā)送給執(zhí)行引擎;以及執(zhí)行引擎,用于通過(guò)執(zhí)行引擎調(diào)用接口接收主控制引擎發(fā)送的流程實(shí)例組件,根據(jù)流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行所述流程實(shí)例,當(dāng)完成所述流程實(shí)例的執(zhí)行時(shí),將執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息發(fā)送給主控制引擎。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述主控制引擎包括流程事件監(jiān)聽單元,用于監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息; 流程實(shí)例創(chuàng)建組件單元,用于根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件;以及執(zhí)行引擎管理單元,用于根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例創(chuàng)建組件單元啟動(dòng)的流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎,接收所述執(zhí)行引擎發(fā)送的執(zhí)行后的流程實(shí)例組件、以及所述流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,當(dāng)流程實(shí)例組件中封裝的流程實(shí)例尚未執(zhí)行完成時(shí),根據(jù)預(yù)置的執(zhí)行引擎列表中保存的執(zhí)行引擎的狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例關(guān)聯(lián)的執(zhí)行弓I擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述執(zhí)行引擎包括 執(zhí)行引擎調(diào)用接口,用于接收主控制引擎發(fā)送的流程實(shí)例組件;流程實(shí)例執(zhí)行單元,用于根據(jù)執(zhí)行引擎調(diào)用接口接收到的流程實(shí)例組件中封裝的流程實(shí)例的關(guān)聯(lián)信息,執(zhí)行所述流程實(shí)例;以及狀態(tài)信息發(fā)送單元,用于當(dāng)完成所述流程實(shí)例的執(zhí)行時(shí),獲取執(zhí)行引擎的狀態(tài)信息、流程實(shí)例組件以及流程實(shí)例組件中封裝的流程實(shí)例的狀態(tài)信息,并發(fā)送給主控制引擎。
全文摘要
本發(fā)明適用于信息處理領(lǐng)域,提供了一種分布式工作流處理方法及分布式工作流引擎系統(tǒng),包括監(jiān)聽觸發(fā)的流程事件,獲取所述流程事件的事件信息;根據(jù)所述事件信息,獲取預(yù)先存儲(chǔ)的所述流程事件關(guān)聯(lián)的流程模板,生成流程實(shí)例,將所述流程實(shí)例以及其關(guān)聯(lián)信息封裝為流程實(shí)例組件;根據(jù)執(zhí)行引擎列表中保存的執(zhí)行引擎及其狀態(tài)信息,通過(guò)調(diào)用所述流程實(shí)例關(guān)聯(lián)的執(zhí)行引擎提供的接口,將所述流程實(shí)例組件發(fā)送給所述執(zhí)行引擎。本發(fā)明通過(guò)主控制引擎調(diào)用執(zhí)行引擎提供的接口將流程實(shí)例發(fā)送執(zhí)行引擎執(zhí)行,簡(jiǎn)化了主控制引擎與執(zhí)行引擎之間的調(diào)用過(guò)程,使得分布式環(huán)境下工作流引擎系統(tǒng)的擴(kuò)展更加靈活、方便。
文檔編號(hào)G06Q10/06GK102456185SQ20101052496
公開日2012年5月16日 申請(qǐng)日期2010年10月29日 優(yōu)先權(quán)日2010年10月29日
發(fā)明者殷切 申請(qǐng)人:金蝶軟件(中國(guó))有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1