引言
在上一篇文章中,我們介紹了WBSF動態調用商務服務的基本概念和工作原理。WBSF讓我們在SOA 開發中能夠根據服務策略動態調用商務服務。WBSF V6.02 提供了SCA 編程模型,讓開發商務服務更加靈活,方便。本文通過一個具體的例子,介紹如何通過 WBSF V6.02 的 SCA 編程模型動態調用商務服務。我們將基於內容屬性制定服務策略;在ResponseListener 擴充中設定基於服務內容的斷言;通過 ContextExtractor 擴充更新事務中的內容屬性;
業務情境與建模
業務情境:
考慮一個如下的銀行帳戶餘額查詢的業務情境:使用者向帳戶查詢系統提交使用者名稱和帳戶名稱,系統首先通過授權服務擷取使用者服務層級,接著調用帳戶查詢服務,將賬戶餘額資訊返回給客戶。對於通過門戶網站通道進行的查詢,授權服務採用 HTTP 基本認證方式;對於通過 WebService 通道進行的查詢,授權服務採用 HTTPS 客戶機認證方式。對於不同服務等級的使用者,將使用不同處理能力的查詢服務。
業務建模:
商務程序:
AccountQueryProcess:輸入為使用者名稱與使用者帳號。首先調用 AuthorizationService擷取使用者服務層級;然後調用AccountQueryService查詢帳戶餘額作為返回。
Web Services:
AuthorizationService:輸入為使用者名稱,返回使用者服務層級
AccountQueryService:輸入為帳戶名稱,返回帳戶餘額
準備 Web Service
在WID中建立AccountQueryModule項目
開啟 WID,切換至Business Integration Perspective,建立Module 如圖 1 所示。
圖 1 建立AccountQueryModule項目
建立Authorization Service:
在AccountQueryModule中建立AuthorizaitonService 介面,該介面包括getServiceLevel方法,如圖 2 所示:
圖 2 建立AuthorizationService 介面
開啟 AccountQueryModule 的 Assembly Diagram,添加 AuthorizationService_HTTPBA 組件,該組件類比採用 HTTP 基本認證方式的授權服務。為該組件添加 AuthorizaitonService 介面,如圖 3 所示。雙擊組件,實作類別型選擇”java”。主要實現代碼如樣本 1 所示。
樣本 1 AuthorizationService_HTTPBA 組件實現
public class AuthorizationService_HTTPBAImpl {
public String getServiceLevel(String userId) {
return "SILVER";
}
}
圖 3 為組件添加 AuthorizationService 介面