在實際工作中構建大型的應用很難通常你會把門戶(portal)和企業集成(EAI)搞混這樣你的工作更難完成你必須做出一系列的困難決定很多決定也許會對項目的其余部分產生或好或壞的影響
在你做出架構性的重要選擇之前都應該深入考慮你構建的應用的每一層( 從前端的負載平衡系統到後端的企業級的系統也許是全球性的)即使只是處理這些問題的一個子集(也許只是代表那些與門戶集成相關的一些問題)你也將面臨很多棘手問題
為了得到最好的效果我是不是應該把我的web層和一些流程組件連接起來讓這些組件充當工作流和應用集成層的業務代理讓集成層處理EAI的復雜問題?是不是每次都可以按這樣的套路進行呢?
我的web層和工作流層是不是應該采用松耦合(例如使用JMS)或者在某種情況下為了利用BMP(Business Process Management)的API提供的工作列表(worklist)功能的好處是否可以不用松耦合?
在創建統一用戶資料(Unified User Profile)時我如何精確的和CRMERP和安全系統打交道?
門戶內容管理參考實現是否提供了足夠多的功能?我是不是需要評估一下第三方的解決方案?
我們是否應該利用新的證書映射提供者(credential mapping provider)通過JEE CA Adapters傳遞認證信息?還是用Web services的SAML (Security Assertion Markup Language)?我們的第三方單點登陸(Single SignOn (SSO))安全系統是否支持這些機制?我有沒有SSO?我是否需要一個呢?
幸運的是這只是一篇雜志中的文章所以我們可以先把一些問題放在一邊以利於我們集中精力減少篇幅本文描述了WebLogic Enterprise Platform裡可以用來在門戶中用Web services進行集成的一些工具和技術在一個簡要的原型系統例子中我們對這些技術進行了演示這裡我定義的門戶集成是指把從不同的資源(通常是外部的)中獲得的信息通過檢索轉換組織顯示形成統一的個性化的整體本文主要是討論Web service所以只是簡要介紹這些門戶集成功能中對第三方的內容和文檔的管理的功能該功能在企業架構中應當被考慮我將簡要介紹以下內容
JEE CA 應用視圖(JEE CA Application Views)
Workshop Application集成控制(Workshop Application Integration Controls )
Liquid 數據視圖和源 (Liquid Data Views and Sources)
應用集成和Web services 工作流插件(Application integration and Web services workflow plugins)
統一用戶資料框架(The Unified User Profile Framework )
Web services Portlet向導 (The Web Services Portlet Wizard )
以上內容為使用Web services進行松耦合的企業門戶集成提供了非常強大的框架請注意本文假設讀者對WebLogic Portal 和Integration 非常熟悉在和BEA WebLogic Developers Journal雜志中都有關於WebLogic Portal 和Integration 的豐富的資料
門戶集成(Portal Integration)一個原型示例
我們的例子是一個IT技術支持部門的案例管理門戶問題單根據技術支持工程師的專業(例如數據庫用戶界面事務管理)和技術等級(一級二級等)分發每個工程師有一個相關的資料資料同時存在於一個安全的關系數據庫和一個外部的CRM系統中資料中有該工程師的專業和技術等級信息也可能有工程師的管理者——高級工程師的信息高級工程師可以分析下屬的案例歷史包括完成案例的平均時間和案例數量增長的百分比每個案例的實際數據存在兩個外部問題單系統中一個系統相對較新使用了Web services另一個系統較舊有一個專有界面除了核心的案例管理功能每個工程師的門戶都可以個性化使用另外的含有公開技術論壇的Portlet含有內部錯誤報告更新的Portlet以及類似的Portlet
應用視圖(Application Views)實際上所有的內容都可以展示
JEE Connector Architecture (JEE CA) 適配器是連接JEE組件和外部企業信息系統(EIS)的橋梁EIS所需的適配器接口經常使用專有的協議數據格式和認證機制WebLogic JEE CA適配器處理協議轉換也常用於處理數據格式的轉換或者利用WebLogic裡的證書映射提供者傳遞認證信息到EIS中如果EIS含有XA那麼XA事務也可以傳遞
JEE CA 規范沒有規定適配器的標准的接口(只提供了一個可選的接口)也沒有規定一個標准的信息格式或者EIS發出的異步事件規范(現在是建議最終草稿版的第二版)修補很多類似的漏洞版規范會包括在JEE 中
WebLogic 集成應用視圖框架(WebLogic Integration Application View Framework)在JEE CA 適配器之上提供了一層彌補了規范中的不足(規范中的改進在此由應用視圖提供)當你創建一個應用視圖的時候你也指定了一個和相關業務服務以及EIS中的事件相對應的XML schema當與請求schema相應的XML文件傳過來時服務被激活返回結果根據響應schema以相應的XML文件返回事件以異步的方式分發到客戶端同樣是按照協商好的schema以 XML文件的形式傳遞我們通過基於浏覽器的應用集成控制台(Application Integration console)來創建應用視圖在控制台裡把服務和事件同適配器連在一起指定相應的schema
應用視圖服務可以被激活事件監聽器使用的是應用集成API應用視圖可以在業務流程管理(BPM)工作流中使用也可以做成Web services相應的技術稍後介紹
在我們的案例管理門戶示例中我們把遺留系統的問題單和CRM系統的專有界面發布為應用視圖每個視圖提供與相關系統對應的一套業務服務和異步事件
Workshop應用集成控制應用視圖發布為Web service
使用WebLogic Workshop的IDE簡化了Web service的開發部署和調試 Workshop還提供了透明信息緩沖和帶對話功能的有狀態Web serviceWebLogic Workshop的開發人員可以利用一些特殊的控制(controls)輕松的把後端的JEE組件發布為Web service其中的一個控制允許Workshop的開發人員將應用視圖服務和事件發布為Web service這樣開發人員就可以通過Web service和所有的外部系統進行交互
在我們的案例管理門戶示例中我們使用Workshop應用集成控制把我們的遺留系統的專有界面對應的應用視圖發布為Web service這樣我們面對的兩種系統就有相同的風格
Liquid Data實際上所有的事情都可以轉變為其他的形式
Liquid Data是WebLogic Platform中新的功能強大的組件提供在眾多的數據源(應用視圖數據視圖FTP站點Web services等)之上創建視圖的能力這些視圖可以串在一起(例如視圖的視圖)Liquid Data一旦定義可以對這些視圖創建預先存儲的和動態的查詢查詢可以通過已經提供的EJB和基於JSP標記庫的API來配置和激活查詢也可以發布為Web servicesLiquid Data的理論基礎建立在XQuery()規范的一個實現之上Data View Builder包括Liquid Data的IDE(集成開發環境)和類似Workshop的GUI(圖形用戶界面)你可以創建針對數據源的視圖針對視圖的預先存儲的查詢(開發人員可以使用XQuery語法來手工編寫高級查詢)Data View Builder還提供測試和調試這些視圖和預先存貯的查詢的能力
本文的目的之一就是介紹一種關鍵能力即創建基於已有的應用視圖和Web services 的Liquid Data復合視圖一個視圖可以傳遞特殊的Portlet或用戶資料(User Profile)所需的信息轉換需要調整的信息相應的設置可以公開進行並不需要修改實際的應用視圖或Web services(或文件數據庫等等)
在我們的案例管理門戶示例中可以創建支持工程師的統一用戶資料視圖該視圖對應於安全關系數據庫和含有適配器的可以發布為CRM系統的應用視圖同樣可以創建一個或多個案例信息視圖來映射基於Web service的問題單和遺留系統遺留系統的接口通過一個應用視圖發布
工作流(Workflow)和Web servicesBMP(業務流程管理)集成
工作流控制著企業業務處理的流程它通過集成插件接入點和實際的業務邏輯緊密地聯結在一起工作流通過BPM Studio GUI創建Studio的界面有些像Visio可以通過拖放的方式創建工作流從工作流中可以直接呼叫應用視圖服務(Application view services)應用視圖事件可以通過應用集成插件來觸發工作流事件節點同樣從工作流事件中可以通過一個可以從BEA的開發人員站點 () 下載的插件調用Web servicesdevdev的Web service插件提供一個GUI允許開發人員把應用視圖服務發布為Web service(Workshop AI 控制的一個有限子集)
在我們例子中的portal通過在流水線組件中調用BPM API與問題票務分派工作流打交道一個工作流任務從兩套問題票務系統中獲取問題票務信息該工作流在較新的系統中激活適當的Web service在另一個系統中激活應用視圖服務(application view services)該工作流可以直接在BPM Studio GUI中創建不需要任何手工編程
統一用戶資料(Unified User Profile)分類化和個性化集成
門戶中的包含用戶資料的屬性位於一個預先定制好的關系數據庫中門戶的個性化和分類化組件(這些組件用來判斷你是誰是什麼有什麼興趣等等)使用用戶的資料屬性你可以通過門戶的統一用戶資料(UUP)框架來把用戶資料擴展為企業級的資料該框架允許一個開發人員從另一個可選資源(例如LDAPCRM/ERP系統)中把用戶屬性插入進來簡而言之開發人員只要執行一個EntityPropertyManager EJB就可以使用它來獲得擴展的用戶屬性這個EJB以ProfileManager EJB為基准(你在這個EJB的部署描述環境中加入你的EntityPropertyManager信息)
現在你開始使用EntityPropertyManager EJB那你實際上要使用什麼技術來獲得用戶的屬性?
如果外部系統的Web service是處於激活狀態或者同樣的你使用WorkshopLiquid Data或者Web service BMP插件的GUI界面發布的Web service的話你可以使用JAXRPC從Web service中獲得信息 你可以使用Liquid Data Query API來把外部系統發布為Liquid Data View 如果外部系統有相應的由應用視圖(Application View)公布的JEE CA 適配器的話你可以使用應用集成API 你可以直接和JEE CA 適配器交互 你可以使用私有的方法
示例中的門戶根據Unified User Profile中的專業和資歷來進行問題單的分配某個專業的工程師被指派為管理者的同時也成為一個管理權力集團(Management Entitlement Segment)的成員可以訪問Engineer Case History Portlets這些portlet允許管理人員根據某個工程師過去的案例處理情況來分析他或她的工作表現就像剛才講的本例中的EntityPropertyManager EJB可以使用JAXRPC來獲得我們的用戶信息發布為Liquid Data Web Services View
Web Services Portletsweb層的集成
Web Services Portlets如同它的名字所暗示使用Web Services然後以內容的形式把結果顯示出來這些portlet可以用Portal EBCC Portlet Wizard快速開發從非常基本的portlet類型到和使用用戶定義的數據類型進行動態的異步交互的portlet類型Web Services Portlets也可以參與到Workshop類型的交互中
當今大多數精心設計的Web應用都采用Model Web層結構模式被廣泛使用的Apache Jakarta的Struts就是這種模式的很好應用門戶的Webflow/Pipeline框架的工作模式與此類似Model 模式的基本原則是分離業務(controller model and view)和view(我們的例子中是portlet)的分離view的主要業務是顯示現在相關的model的內容從一個portlet中激活和使用一個或多個Web Service似乎會和以上原則沖突實際上有時會有沖突發生不過某些情況下不會有沖突發生
使用的portlet單獨存在(一個單獨的小型應用) Web Service提供model的當前狀態(JEE設計模式中Front Controller的View Helper策略) Web Service激活的結果的格式是portlet用戶界面的形式
在我們的原型示例系統中一個支持工程師專門接收他們使用的關系數據庫的廠商發布的技術公告該公告在門戶中的一個portlet中顯示這是一個單獨的服務和門戶中的其他portlet無關而且信息是調用外部的Web Service獲得的在這種情況下使用Web Services Portlet的另一個主要原因是從這個Web Services獲取信息就是用戶接口
總結
本文介紹了WebLogic Enterprise Platform的一些在構建企業門戶解決方案的時候可以使用的功能本文的目的不是提供一個單一的完整的結構(類似寵物商店的門戶集成簡單示例)也不是暗示在所有情況下(或者大多數情況下)必須使用某些工具和技術在一個給定的環境中有太多的因素需要考慮使用Web Service進行比較明智的門戶集成時可以創建一個非常靈活的架構但是如果不進行全盤考慮一些重要的問題(例如性能可擴展性安全和事務協同性)就可能發生這一點上Web Service和其他的技術一樣一個有經驗的架構師明白這一點所以既不會對Web Service過分狂熱也不會因為Web Service的缺點而懷疑Web Service
From:http://tw.wingwit.com/Article/program/Java/hx/201311/25914.html