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