BPEL4People淺讀

BPEL引起了人們史無前例的興趣,它最早是在軟件供應商中獲得大量認可,後來被認爲是下一代編程架構中不可或缺的組成部分。

SOA的主要目的就是讓每個IT系統都有自己的自主力,靈活的發展空間,同時又能夠隨需共享,讓IT變得更有彈性,更快的速度響應業務單位的需求,實現Gartner爲SOA描述的實時企業(Real-Time Enterprise)的願景目標。

BPEL思想預熱

爲了達到這個目標,SOA強調信息、人員、流程三者的無縫整合。其中業務流程自動化是最爲重要的流程整合方式。

BPEL:流程自動化

BPEL是一門用於自動化業務流程的流程執行語言。BPEL中的流程能在Web服務之間以標準化的交互方式得到精心組織,這些流程能夠在任何一個符合BPEL規範的平臺或產品上執行。

所以,通過允許顧客們在各種各樣的創作工具和執行平臺之間移動這些流程,BPEL保護了在流程自動化上的投資。

業務流程的完全自動化雖然非常不錯,但在實際中卻是不可能完全實現的,因爲有些活動要求相關人員做出判斷,或要藉助人員的業務知識。從傳統視角來看,人員與IT系統的交互主要集中於輸入與輸出界面,用戶在UI界面上輸入業務數據,系統執行特定的業務邏輯然後將計算結果返回給用戶,這樣就構成了一個完整的交互場景。

在SOA編程模型中,人員活動可以作爲Web服務實現。該服務被調用時,將通知承擔任務的個人進行相關工作,並將輸入數據以恰當的形式傳遞給此人。任務完成後,將產生相應的結果,服務會返回到其調用方,並將此結果作爲輸出數據傳遞給調用方。

BPEL4People:人員活動實現

WS-BPEL主要設計用於支持基於Web服務的自動化業務流程,但是將人工任務透明封裝爲Web 服務並非總是適當的選擇。比如實現基於角色的任務分配,在活動出現問題時及時通知更高級別的管理人員,支持決策制定的迴避規則等。

BPEL4People定義了在BPEL過程中包含人工任務的方式。BPEL4People使用BPEL擴展機制將人工任務作爲活動加入到一個 BPEL過程中。

這個規範定義了BPEL引擎和任務組件之間的消息交換協議。BPEL4People引入了人員鏈接的概念,規定了人員或組的描述方式。

WS-HumanTask:人工任務

BPEL4People加入的工作流功能,通常被視爲是對BPEL修正,這有助於BPEL更好的與BPM相適應。但這種情況不現實。當分析員建模活動時,他們通常將之對應到人工任務或系統處理。BPEL仍然強制活動之間的通信需由基於XML的過程變量完成,對變量執行XSLT的轉換是必須的操作,但是業務分析師根本不想關心這樣的技術細節。

BPEL過程圖的圖形活動佈局仍然與Web服務和XML技術的耦合過於緊密,以致於無法在保持分析圖完整的同時使過程可執行。

爲了解決這個問題,WS- Human Task定義了獨立人工任務,包括任務的屬性、行爲和運作,允許將人類任務作爲服務引入 SOA的接口,這些接口獨立於 WS-BPEL。

規範中的各種規定還可以用於 BPEL流程之外的其他基於Web服務的應用之中,BPEL4People規範包括了WS-HumanTask的內容。

人工任務的使用場景

按使用場景的不同,人工任務可以劃分爲:參與任務、發起任務和純粹的人工任務、管理任務四類。

參與任務。參與任務支持 Web 服務與人員之間的交互,它表示流程會調用一個服務,而這個服務是由人員提供出來的。

即業務人員提供了服務接口實現,可以認爲是機器在調用人,在於任務的顯示和完成是通過計算機頁面還是通過其他方式並不重要。所以平常也稱之爲M2H任務 (Machine-to-Human)。

發起任務。發起任務是一種常見的使用場景,人通過輸入特定的業務參 數(可能是一般的web頁面或者其他方式),調用系統的業務邏輯並獲取計算結果,此時是人在調用機器,所以發起任務又被稱爲H2M任務(Human-to-Machine)。

純人工任務。純粹人工任務是一種單純的人調用人的服務,它擁有兩種參與角色:服務請求者與服務提供者。服務請求者爲服務提供者創建待處理任務(比如服務請求者調用服務提供者的通知任務),服務提供者提供了該服務接口的具體實現,所以人工任務也被稱爲H2H任務 (Human-to-Human)。

管理任務。管理人員使用管理任務來管理異常的流程,比如終止異常的流程實例、任務的代理代辦等。

人工任務實現方式

人工任務的實現方式多種多樣,具體可以分爲下面幾個情況:

人員活動內置任務。本實現方式的人工任務,內置於人員活動中,在這個情況下,人工任務的使用侷限於人員活動內部,它可以訪問流程上下文信息(比如流程啓動者和特定活動的使用者等)。人工任務不具備複用性和彈性,需要在特定的情況下才能使用。

流程內置任務。本實現方式的人工任務,內置於流程中,在這個情況下,人工任務的使用侷限於流程內部,它可以訪問流程上下文信息(比如流程啓動者和特定活動的使用者等)。人工任務具備流程範圍內的複用性和彈性。

流程外置任務。本實現方式的人工任務,不內置於流程中,又分爲兩個情況。流程外置任務的共性是,他們都獨立於流程而存在,不能訪問流程上下文。

第一個情況是流程外置任務與人員活動存在於同一個運行環境中。他們之間的調用不依賴於web服務,而可能是內部的私有協議。

第二個情況是流程外置任務與人員活動存在於不同的運行環境中。他們之間的調用依賴於web服務,他們的交互協議基於WS—HumanTask協議。

人工任務的不同使用場景和不同實現方式,保證了BPEL4People的廣泛接受和推廣,是SOA的人員集成的基本技術支撐。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章