本發(fā)明涉及工作流管理技術領域以及云計算技術領域,其特征是云計算環(huán)境下的工作流流程管理、執(zhí)行服務、監(jiān)控、負載均衡、預警、自動伸縮、執(zhí)行服務克隆以及計費。本發(fā)明主要應用于政府、企業(yè)、事業(yè)單位的具有流程特征的業(yè)務(簡稱業(yè)務流程)的管理。
背景技術:
工作流是1995年由工作流管理聯盟根據辦公自動化技術發(fā)展而提出的業(yè)務流程自動化概念。工作流技術旨在用信息技術對政府、企業(yè)、事業(yè)單位的業(yè)務流程(如辦公流程,費用報銷流程、行政審批流程、保險業(yè)務審批流程、信貸審批、進銷存流程、客服流程、移動電話短信計費處理流程等)其進行建模,這些模型由多個業(yè)務環(huán)節(jié)或活動組成,并可按照一定的順序在工作流技術控制下執(zhí)行,每個模型執(zhí)行完畢將達到既定的業(yè)務目標。經過20年的發(fā)展,工作流技術已經逐漸成熟,并成為很多業(yè)務系統(tǒng)產品的核心功能之一。業(yè)務系統(tǒng)中帶有流程特征的業(yè)務都可以交給工作流技術來解決。
隨著企業(yè)業(yè)務的不斷增長,出現了許多超大規(guī)模的實例密集型工作流應用,典型的如電子政務中的行政審批、手機通話短信計費、銀行業(yè)務審批、證交所的日交易數據處理流程等。這些工作流應用特點是每時每刻產生數以百萬乃至千萬計的案例,案例數量周期性或不定期地急劇上升或下降。面對這些大型的應用,現有的工作流管理技術已經無法有效支持此類應用,其主要存在著以下問題:
1、系統(tǒng)架構擴展性差,配置復雜。當前工作流管理系統(tǒng)建立高性能服務器集群來提高并發(fā)執(zhí)行工作流實例能力,隨著工作流實例數量急劇上升,所需系統(tǒng)資源也迅速增加,現有工作流管理系統(tǒng)通過擴展服務器集群來增加并發(fā)處理能力。但是服務器集群的擴展需要復雜的配置,同時一旦配置好了,當工作流實例數量下降時,又需要重新配置已縮減集群數量,否則會造成資源浪費。而對于工作流實例數量不斷變化的應用,服務器集群則只能保持最大的服務器數量,以防止系統(tǒng)無法在工作流實例數量最大時無法滿足需求。
2、系統(tǒng)軟件硬件成本高。現有工作流管理系統(tǒng)由于通過擴展高性能服務器集群來提高并發(fā)執(zhí)行工作流實例的能力,因而增加了硬件和軟件來投資成本。
3、無法實時感知系統(tǒng)狀態(tài)。當前的工作流管理系統(tǒng)中,在服務器集群中每個服務器各自獨立執(zhí)行工作流執(zhí)行服務處理請求,系統(tǒng)就無法感知其負載狀態(tài),任何一個服務器超負載運行,則存在服務器死機的風險,而造成業(yè)務數據丟失。
云計算是近年來在計算機軟件界興起的具有革命性的新技術,它已經深深的影響甚至改變了傳統(tǒng)軟件設計和生產模式,甚至在逐漸變革著軟件產業(yè)的商業(yè)和服務模式。在云計算環(huán)境下,軟件設計由傳統(tǒng)的客戶-服務器模式轉換為客戶端-云端模式??蛻舳塑浖c傳統(tǒng)的客戶服務器模式的客戶端一樣,但是云端軟件則與傳統(tǒng)的服務器模式的服務器端不同,它是一個虛擬化的,大規(guī)模的,可伸縮的(彈性的),可計費的服務器集群,這個集群可以根據客戶端的請求數量來擴展規(guī)模和縮小規(guī)模以保證服務質量,這種伸縮性使得云計算軟件產品能夠為客戶最大限度的節(jié)約信息技術投資,并同時能最大限度地保證軟件服務質量。客戶不需要再像過去那樣,付出高額投資購買套裝軟件,而是用租賃的方式實現其軟件需求,根據使用量來支付軟件使用費用,用多少就支付多少錢。有個恰當的比喻來描述云計算,云計算使得軟件服務可以日常生活的自來水,天然氣以及電一樣,打開開關,服務就來了,開始計費,用完了服務,關上開關,就停止計費了。這是傳統(tǒng)的客戶-服務器模式軟件所無法做到的。應用本技術方案,工作流管理系統(tǒng)將能夠彈性地、經濟地支持大規(guī)模實例密集型工作流應用。
技術實現要素:
本發(fā)明的技術方案:如附圖1所示,在云工作流管理系統(tǒng)(以下簡稱云工作流)的設計中,將系統(tǒng)的服務組件架構在云計算環(huán)境中,在云工作流基本組件結構(云工作流基本工具和基本服務結構)中,設計添加新的伴隨工具和服務,這些組件在云工作流基本系統(tǒng)和云計算環(huán)境間構建了一個中間層,使云工作流在運行大規(guī)模實例密集型應用時,通過這些組件能夠實時地感知全系統(tǒng)負載狀態(tài),并動態(tài)地計算需要多少工作流執(zhí)行服務來完成當前以及未來的負載,同時如果工作流執(zhí)行服務空閑時,又可將空閑的服務關閉(釋放),以避免資源浪費,并節(jié)約成本,從而大大增強了系統(tǒng)的擴展性、可靠性、靈活性和經濟性。
本發(fā)明方法實現的云工作流主要以下兩部分組件構成:云工作流基本組件和伴隨組件?;窘M件包括基本工具和基本服務?;竟ぞ甙ǎ?/p>
1、流程定義工具,其特征在于,根據用戶的業(yè)務需求目標定義工作流流程模型,包括定義流程結構(順序、選擇、并行、循環(huán)結構)、流程內部全局變量、訪問外部API或服務的輸入輸出參數和等待時限、執(zhí)行異常處理規(guī)則、在工作流執(zhí)行服務中的啟動時間、啟動數量、結束時間。該工具可驗證模型中所有上述定義的靜態(tài)數據的正確性,并仿真其在工作流執(zhí)行服務中真實運行時的狀態(tài),從而進一步分析其動態(tài)執(zhí)行時的狀態(tài)參數、操作系統(tǒng)資源(CPU、內存、網絡、I/O)及工作流管理系統(tǒng)資源(線程池、連接池)占用、時間消耗、人力資源使用(如果存在手工任務的任務執(zhí)行者設置)、外部系統(tǒng)調用輸入輸出數據,為優(yōu)化模型提供決策支持,并將模型傳輸到工作流執(zhí)行服務中執(zhí)行。
2、監(jiān)控工具,其特征在于,能實時查找、監(jiān)控、跟蹤在云工作流中所有工作流執(zhí)行服務中正在運行的工作流實例,并可根據監(jiān)控需求分別在流程實例級別和任務級別上對其實施暫停、終止、繼續(xù)運行操作,在任務級別上還可以跳過一個或多個任務。對已經暫停的實例或任務,監(jiān)控人員可像在流程定義工具中一樣對實例進行編輯和修改,完成修改后繼續(xù)執(zhí)行。該工具還可以手工或者通過策略調度在工作流執(zhí)行服務中的工作流實例,也可以將暫停的工作流實例從一個工作流執(zhí)行服務移動到其他工作流執(zhí)行服務中執(zhí)行。
3、待辦事項列表,其特征在于,是云工作流執(zhí)行者參與執(zhí)行工作流的交互工具。云工作流展示任務內容給執(zhí)行者,如表單、數據文件(Word、Excel、Pdf、Txt、HTML、XML、計算機源程序文件)、圖表、音頻、視頻,并向其提供交互功能,執(zhí)行者可編輯修改任務內容、輸入處理意見、執(zhí)行命令或將該任務轉交給其他執(zhí)行者,并最終將任務提交給云工作流,以推動執(zhí)行服務繼續(xù)執(zhí)行后續(xù)任務。云工作流執(zhí)行者能夠通過該工具創(chuàng)建新工作流實例。
基本服務包括:
工作流執(zhí)行服務,其特征在于,包含一個或多個工作流執(zhí)行引擎,調度和控制每個引擎啟動、初始化、執(zhí)行、暫停、異常終止、結束一個工作流流程實例,引擎控制工作流實例一步一步地由起始任務執(zhí)行到終止任務。云工作流中包含一個或多個工作流執(zhí)行服務,這些服務均由工作流執(zhí)行服務克隆服務根據自動伸縮服務的需求創(chuàng)建。自動伸縮服務還可以根據系統(tǒng)需求關閉(釋放)工作流執(zhí)行服務。
云工作流伴隨組件包括伴隨工具和服務。伴隨工具包括:
1、伴隨服務定義工具,其特征在于,為云端伴隨服務提供定義工具,設計伴隨服務的系統(tǒng)資源配置、定義伴隨服務中執(zhí)行的規(guī)則和策略、定義伴隨服務中的數據模板和系統(tǒng)模板。
2、伴隨服務監(jiān)控工具,其特征在于,監(jiān)視云端伴隨服務的工作狀態(tài),為手工干預或控制伴隨服務執(zhí)行提供工具。
伴隨服務包括:
1、負載均衡服務,其特征在于,是云工作流中云端服務的入口,所有來自客戶端工具(基本工具和伴隨工具)的操作請求均首先發(fā)送到該服務。如果是工作流實例的操作請求,該服務轉發(fā)到工作流執(zhí)行服務中處理;如果是非工作流實例操作請求,則發(fā)送到相應的服務處理。
2、預警服務,其特征在于,負責綜合評估工作流執(zhí)行服務中的系統(tǒng)資源使用,并在系統(tǒng)空閑或超載狀態(tài)時發(fā)出預警。該服務能采集所有工作流執(zhí)行服務中各種資源,包括CPU、內存、I/O接口、硬盤、帶寬、線程池、連接池資源的狀態(tài),并對狀態(tài)數據進行綜合計算得出一個狀態(tài)綜合指數,這個指數以百分比來反映系統(tǒng)當前的狀態(tài),當該指數為0%表示系統(tǒng)空閑,100%表示系統(tǒng)無響應,在0-100%之間,定義多個半開半閉區(qū)間表示系統(tǒng)的低負載、標準負載、高負載、滿負載、超負載五個狀態(tài)。同時該服務還將監(jiān)控時間段切分為多個時間窗口,在窗口內每一個時刻計算狀態(tài)綜合指數,并用二次曲線回歸擬合出綜合指數的曲線,進而對該曲線求導,來計算當前狀態(tài)綜合指數的狀態(tài)轉換趨勢,然后運用離散的馬爾科夫鏈來計算系統(tǒng)下一個時刻或多個時刻的狀態(tài)的可能概率,其中系統(tǒng)將處于最大概率的狀態(tài)。同時,該服務還能獲取每個工作流執(zhí)行服務的狀態(tài),為負載均衡服務提供支持。
3、自動伸縮服務,其特征在于,伸是指在當前所有工作流執(zhí)行服務均趨于超載和無法處理更多操作請求時,通過工作流執(zhí)行服務組件克隆服務創(chuàng)建出更多新的云工作流執(zhí)行服務來處理操作請求,它是云工作流的一種擴展工作流執(zhí)行資源的自主行為;縮是指在當前工作流執(zhí)行服務趨于空閑而出現資源過剩時,可關閉(釋放)一個或多個空閑的工作流執(zhí)行服務,以節(jié)約系統(tǒng)資源,它同樣是云工作流收縮工作流執(zhí)行資源規(guī)模的自主行為。該服務每次執(zhí)行伸縮行為后,會通知預警服務對系統(tǒng)資源的使用情況進行綜合評估,如果仍然是超載或空閑,將持續(xù)伸縮,直至系統(tǒng)資源的使用情況趨于平穩(wěn)(處于超載和空閑之間)。
4、工作流執(zhí)行服務組件克隆服務,其特征在于,負責接收自動伸縮服務發(fā)來的創(chuàng)建工作流執(zhí)行服務組件的請求,根據請求來創(chuàng)建出云工作流執(zhí)行服務組件加入到系統(tǒng)中處理來自客戶端的操作請求,以降低當前中所有工作流執(zhí)行服務的負載。
5、計費服務,其特征在于,根據云工作流的計費規(guī)則或方案對系統(tǒng)中的工作流實例進行統(tǒng)計和計費,以控制云工作流用戶的支出成本。計費管理使云工作流系統(tǒng)可以作為托管服務系統(tǒng)提供工作流服務給客戶。
云工作流的工具和服務組件間的協同工作原理:
過程定義工具根據業(yè)務需求建模工作流流程,然后對流程驗證和仿真通過后,傳輸該工作流模型到工作流執(zhí)行服務中準備執(zhí)行。監(jiān)控工具實時監(jiān)控云工作流各組件的運行情況,能夠對系統(tǒng)任何異常發(fā)出預警,并應用異常事故策略來自動解決,如果無法解決,則通知系統(tǒng)管理員手工解決。
客戶端向云端服務發(fā)出操作請求,負載均衡服務首先接到請求,根據請求內容將請求轉發(fā)到相應的服務去處理。如果是非工作流實例操作請求,如伴隨工具的更改資源配置請求,則根據請求的內容,發(fā)送到相應的服務處理;如果是工作流實例操作請求,如創(chuàng)建工作流實例、獲取實例列表、獲取待辦任務列表、暫停實例/任務、提交/跳過任務、終止任務/實例,該服務需要先查詢預警服務以獲知每個工作流執(zhí)行服務組件的工作狀態(tài)或負載程度,然后將請求轉發(fā)到最低負載的工作流執(zhí)行服務中處理,而對滿負載或超負載的工作流執(zhí)行服務,該服務都不會再分配新的請求給其處理,避免其因負載持續(xù)增大而導致異常。
工作流執(zhí)行服務負責執(zhí)行工作流執(zhí)行并處理來處理工作流實例操作請求,請求處理完畢,處理結果發(fā)送給負載均衡服務,由該服務響應給客戶端。如果是創(chuàng)建工作流實例請求,工作流執(zhí)行服務則搜索工作流模型,并為創(chuàng)建一個工作流引擎。引擎初始化并啟動工作流實例,激活第一個任務,然后根據工作流實例的流程結構(順序、選擇、并行和循環(huán)),按照模型中預設執(zhí)行規(guī)則依次激活、執(zhí)行和完成任務;如果是獲取實例列表、獲取待辦任務列表請求,工作流執(zhí)行服務則獲取列表并響應給客戶端;如果是暫停、終止實例,工作流執(zhí)行在接到請求后,處理請求并將結果響應給客戶端;工作流實例中任務包括人工任務和自動任務,如果是人工任務,工作流執(zhí)行服務將任務信息通過負載均衡服務發(fā)往待辦事項列表,等待任務執(zhí)行者發(fā)送操作請求,如暫停任務、提交/跳過任務、終止任務,工作流執(zhí)行服務在接到請求后,處理請求并將結果發(fā)送給客戶端并完成任務;如果是自動任務,則直接執(zhí)行并完成任務。工作流引擎執(zhí)行完最后一個任務后,被工作流執(zhí)行服務關閉,釋放所占用的資源。
預警服務采集系統(tǒng)中工作流執(zhí)行服務信息,建立一張登記表記錄所有工作流執(zhí)行服務信息,監(jiān)視表中工作流執(zhí)行服務狀態(tài)并計算全系統(tǒng)狀態(tài)綜合指數,實時預測云工作流系統(tǒng)狀態(tài)的未來轉換趨勢。如果監(jiān)測到系統(tǒng)未來將出現空閑,預警服務將發(fā)送空閑預警消息通知自動伸縮服務,預警消息包含系統(tǒng)空閑工作流執(zhí)行服務詳細信息,自動伸縮服務根據預警消息關閉并釋放空閑的工作流執(zhí)行服務;如果監(jiān)測到系統(tǒng)未來將出現超負荷,該服務將發(fā)送超載預警消息給自動伸縮服務,預警消息包含系統(tǒng)未來出現超載的時刻和超載工作流實例數量,自動伸縮服務根據預警消息計算所需擴展的工作流執(zhí)行服務數量,并發(fā)送擴展消息給工作流執(zhí)行服務組件克隆服務創(chuàng)建新的工作流執(zhí)行服務加入系統(tǒng),以緩解系統(tǒng)超負荷狀態(tài)。自動伸縮服務完成釋放或擴展操作后,發(fā)送伸縮完成消息通知預警服務,伸縮完成消息包含釋放和擴展的工作流執(zhí)行服務數量信息,預警服務將根據消息更新工作流執(zhí)行服務登記表,重新開始計算系統(tǒng)狀態(tài)綜合指數,繼續(xù)實時監(jiān)視系統(tǒng)狀態(tài),預測系統(tǒng)未來轉換趨勢。
計費服務統(tǒng)計系統(tǒng)中所有工作流執(zhí)行服務中已啟動的、運行中的和完成的工作流實例數量,計算系統(tǒng)的工作流實例吞吐量以及每個實例所耗費的系統(tǒng)資源,包括每個時刻CPU的使用百分比,內存使用量,I/O操作量,帶寬使用量,線程池使用量,連接池使用量,根據計費規(guī)則計算實例密集型工作流應用的費用,控制云工作流應用的運行成本,并定期為客戶生成周賬單、月賬單、年賬單以及周報表、月報表和年報表。
本發(fā)明的有益效果:與其他工作流管理系統(tǒng)不同的是,本方法實現的系統(tǒng)在基本工作流體系結構上擴展了具有云計算特征的伴隨工具和服務組件,這些組件能夠利用云計算的虛擬化技術迅速擴展出或關閉掉多個工作流服務器,提高了擴展伸縮能力。同時,云計算技術虛擬化的工作流服務器成本低,性能好,需要時創(chuàng)建出來,不用時候關閉,有效地降低了工作流管理系統(tǒng)的投資成本。伴隨服務組件可以實時感知系統(tǒng)的狀態(tài),并對系統(tǒng)未來負載狀態(tài)進行預測,從而有效降低了服務器因負載過大而死機的風險,提高了系統(tǒng)的可靠性和安全性,避免了業(yè)務數據的丟失。
本方法實現的系統(tǒng)已經部署到商業(yè)云計算環(huán)境中,并應用于典型大規(guī)模實例密集型工作流應用——移動短信計費業(yè)務,并取得良好效果。該應用能夠在短時間內產生大量計費工作流實例,運用本方法實現的系統(tǒng)可以有效地實現均衡處理,同時降低了大量的軟件和硬件投資成本。
附圖說明
圖1為本發(fā)明系統(tǒng)結構圖
具體實施方式
云工作流管理系統(tǒng)運用Java、HTML、JavaScript、Java Server Pages、XML等編程技術研發(fā),運用MySQL數據庫存儲數據,用Apache Tomcat作為工作流執(zhí)行服務容器。在此基礎上,云工作流管系統(tǒng)還運用了多個基于Java的框架作為基礎平臺:
1、云工作流客戶端組件:客戶端組件包括基本組件和伴隨組件,使用Eclipse Rich Platform(RCP)插件框架開發(fā)。RCP是符合OSGi標準的插件框架,在該框架下開發(fā)的任何軟件都是一個標準插件,這些插件通過標準的配置文件plugin.xml可以集成到一個軟件中。因此云工作流客戶端組件在設計階段能夠將每個功能設計成為高度內聚的插件,然后通過RCP集成到一起,最大限度地降低了功能耦合性,并提高了系統(tǒng)的擴展性。未來如果增加新功能,只要設計成符合OSGi設計標準的插件,都可集成到云工作流客戶端工具中。
2、云工作流云端組件:云端服務組件使用基于Java的Apache AXIS2 Web服務框架來實現。Apache AXIS2是一個Web服務/SOAP/WSDL引擎。使用Axis2可以將每個云端服務組件設計為一個Web服務,通過SOAP協議來與客戶端組件通訊,實現遠程方法調用。在方法調用中,為了傳遞復雜的數據對象,發(fā)送方先將數據對象序列化為二進制數據流,在接收方在接收到二進制數據流之后,進行反序列化,再組裝成復雜對象。這種二進制數據流的序列化傳輸比傳統(tǒng)的序列化傳輸效率高數倍。
3、云端組件在云環(huán)境中的部署結構:云工作流可以部署在多個商業(yè)或開源云環(huán)境中,如亞馬遜云(Amazon Web Services),阿里云,Eucalyptus云,OpenStack云等。云工作流管理系統(tǒng)的每一個云端服務組件均部署在一個獨立的虛擬機服務器上,以保證系統(tǒng)的高可靠性。該服務器安裝Linux服務器操作系統(tǒng),如CentOS、Ubuntu、RedHat等,在服務器上安裝Apache Tomcat提供中間件服務,并開放80和8099端口,80端口用于提供基于HTTP協議的Web訪問,8099端口用于系統(tǒng)內部數據傳輸,系統(tǒng)內部傳輸通過建立Java Socket,系統(tǒng)間傳輸的消息使用XML格式來描述內容,包括消息頭和消息體,消息頭由消息ID、消息名稱、消息類型和時間戳組成,消息體是消息的內容。在每個虛擬服務器上安裝有云計算環(huán)境的基于Java語言的API開發(fā)包以支持服務組件訪問,同時安裝Spring MVC框架以支持方法注入和數據庫訪問。
4、云工作流資源庫:資源庫用于存儲云工作流數據,本方法實施的系統(tǒng)在MySQL中建立資源庫,MySQL安裝在云計算環(huán)境下的數據Web服務上,如在Amazon上可選擇安裝在RDS上,在阿里云中可選擇安裝在阿里數據庫服務中。資源庫分為構造時(Build-Time)資源庫和運行時(Run-Time)資源庫,每個云端服務組件通過在Spring MVC框架上建立的基于JDBC的數據庫連接池訪問資源庫。
5、負載均衡服務組件:該組件部署在一個獨立的云環(huán)境下虛擬機服務器上,以HAProxy為核心,通過80端口接受和響應客戶端組件的操作請求。在服務中建立一個獨立的Java持續(xù)不間斷執(zhí)行的線程,訪問HAProxy的接口API,以截取每個客戶端組件操作請求的詳細信息,并通過消息從預警服務中獲取每個工作流執(zhí)行服務的負載狀態(tài),轉發(fā)請求給負載最小的執(zhí)行服務。云端服務組件處理完操作請求,處理結果通過負載均衡服務響應給客戶端組件。
6、工作流執(zhí)行服務組件:該組件是一個部署在Apache Tomcat上的獨立的Web服務。組件創(chuàng)建多個工作流引擎并使用Java內置線程池調度工作流引擎調度執(zhí)行工作流實例。工作流引擎被創(chuàng)建后,計算出執(zhí)行工作流實例所需資源(CPU、內存、帶寬、I/O、線程池、連接池)數量、可能的最長執(zhí)行路徑和最短路徑、任務的平均執(zhí)行時間以及總執(zhí)行時間,然后進入等待隊列中等待調度執(zhí)行,如果線程池有空閑線程,執(zhí)行服務首先計算當前所有資源(CPU、內存、帶寬、I/O、線程池、連接池),然后調度占用資源最多、總執(zhí)行時間最短的待執(zhí)行實例執(zhí)行;如果無空閑線程,引擎則在待執(zhí)行隊列中一直等待調度。引擎執(zhí)行過程中,如果遇到手工任務、異常、掛起外界原因要求引擎暫停,引擎則退出線程,重新進入等待隊列。引擎執(zhí)行完畢,工作流執(zhí)行服務則收回所有分配給該引擎的資源,關閉引擎,將線程重新放入線程池。為支持自動伸縮,工作流執(zhí)行服務組件克隆組件通過調用云環(huán)境API開發(fā)包創(chuàng)建一個或多個不同系統(tǒng)配置的工作流執(zhí)行服務克隆模板,克隆組件可用這些模板來創(chuàng)建(克隆)出新的工作流執(zhí)行服務組件加入系統(tǒng)。
7、預警服務組件:該組件是一個部署到Apache Tomcat上的獨立的Web服務,內部建立一個不間斷運行的Java線程,通過系統(tǒng)內部消息獲取執(zhí)行服務組件中資源使用率,如CPU、內存、帶寬、I/O、線程池及連接池,并計算每個執(zhí)行服務組件的系統(tǒng)綜合指數,然后計算所有執(zhí)行服務的系統(tǒng)狀態(tài)綜合指數,從而計算并預測未來一個或多個時刻系統(tǒng)的負載狀態(tài)。如果系統(tǒng)出現空閑或超載,將發(fā)送消息通知自動伸縮服務創(chuàng)建或關閉工作流執(zhí)行服務組件。
8、自動伸縮服務組件:該組件是一個部署到Apache Tomcat上的獨立的Web服務,內部建立一個不間斷運行的Java線程,接到預警服務發(fā)來的消息后,解析消息來決定創(chuàng)建新的或是關閉現有的工作流執(zhí)行服務組件。如果是請求創(chuàng)建新組件,自動伸縮服務發(fā)消息給工作流執(zhí)行服務組件克隆服務創(chuàng)建新的工作流執(zhí)行服務組件;如果是請求關閉現有的組件,自動伸縮服務組件將通過消息獲取空閑工作流執(zhí)行服務組件信息,調用云計算環(huán)境的API開發(fā)包關閉相應空閑服務。
9、工作流執(zhí)行服務克隆服務:該組件是一個部署到Apache Tomcat上獨立的Web服務,內部建立一個不間斷運行的Java線程,接受自動伸縮服務發(fā)來的消息,獲取需要創(chuàng)建的工作流執(zhí)行服務組件數量、系統(tǒng)資源配置需求信息,調用云計算環(huán)境的API開發(fā)包查詢符合需求的工作流執(zhí)行服務克隆模板創(chuàng)建新的工作流執(zhí)行服務組件。
10、計費服務組件:該組件同樣是一個部署到Apache Tomcat上獨立的Web服務,內部建立一個不間斷運行的Java線程,每隔3秒以輪詢的方式發(fā)送消息給所有工作流執(zhí)行服務組件,以獲取在過去3秒鐘啟動了的、正在執(zhí)行的和已結束的工作流實例數量以及這些實例所占用的系統(tǒng)資源信息,然后用計費規(guī)則對這些實例進行計費。該組件定期自動生成Excel計費統(tǒng)計報表,該報表以電子郵件的方式發(fā)送到系統(tǒng)指定的電子郵箱。
以上是云工作流的基本實現方式和工作過程。本發(fā)明所實現的云工作流與其他工作流管理系統(tǒng)主要有三點不同。第一,本系統(tǒng)支持實時的完全自動化的伸縮模式,而不需要人工干預;第二,本系統(tǒng)不是簡單地將工作流管理系統(tǒng)移植或部署到云環(huán)境下的云工作流管理系統(tǒng),而是充分利用云計算技術的全新的云工作流管理系統(tǒng);第三,本系統(tǒng)的負載均衡、預警、自動伸縮、工作流執(zhí)行服務克隆、計費功能是系統(tǒng)的一個組成部分,在感知系統(tǒng)狀態(tài)上具有更強的實時性和敏感性,在處理大規(guī)模實例密集型應用中,本系統(tǒng)能夠及時可靠地處理,而其他工作流管理系統(tǒng)則主要是利用了云計算環(huán)境提供的相應功能,只能被動等待云計算環(huán)境來感知系統(tǒng)狀態(tài),從而降低了實時性和敏感性。