

下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、使用 BPEL 構建 Web 服務網(wǎng)絡 【2005-12-27 09:47 】【】【Oracle 】 受不斷成熟的 Web 服務標準的鼓舞,越來越多的組織正在協(xié)作環(huán)境中使用 Web 服務。 BPEL 正快速成為為實現(xiàn)企業(yè)間協(xié)作而編排這些 Web 服務的平臺。BPEL 為構建在線市場 或協(xié)作網(wǎng)絡的公司提供了引人矚目的好處,即基于標準的方法和松散耦合的流程集成。 而 Web 服務提供的激動人心的新功能卻隱藏著某些風險。 在許多情況下,如果在設計 時未解決某些技術和管理難題,則合作伙伴關系將會破裂或集成成本飆升 : 合作伙伴必須事先進行充分的協(xié)商,約定根據(jù)特定標準開展業(yè)務。傳輸協(xié)議、交互目 的、消息
2、格式以及業(yè)務約束必須實現(xiàn)清晰地通信。 連接網(wǎng)絡必須是一個簡單的過程;協(xié)作網(wǎng)絡主要通過不斷壯大取得成功。 用戶必須在運行時輕松地找到業(yè)務服務, 否則將在很大程度上無法實現(xiàn)面向服務體系 結構(SOA)這一承諾。(服務信息庫在這方面很有用。 )如果開發(fā)人員無法輕松地找到和重 用服務,則這些服務本質上就算不存在。 合作伙伴應能夠實時監(jiān)控 Web 服務。最終用戶應能跟蹤特定訂單的進度,并且貿(mào)易 合作伙伴應能診斷業(yè)務流程中的特定瓶頸。 如果協(xié)作網(wǎng)絡在托管環(huán)境中運行, 這些難題將變得更為棘手。 在該模型中,合作伙伴將 他們原有應用程序提供的功能公開到 Web 服務中,并將此 Web 服務發(fā)布到集中的信息庫
3、中。主機負責編排復雜的業(yè)務流程,后者反過來利用合作伙伴的 Web 服務。 在 BPEL 指南的這一部分中,我將把歐洲航天局 (ESA)項目(來自 Spacebel sa 的小 組參與了該項目)作為一個案例分析,介紹與這些挑戰(zhàn)相關的體系結構注意事項。此外,我 還將介紹該項目如何利用 BPEL 作用域、BPEL 域和 Oracle BPEL 流程管理器 API構建一 個易于合作伙伴使用的”協(xié)作網(wǎng)絡。 ESA 網(wǎng)絡概述 ESA 已著手制定一個戰(zhàn)略性計劃,旨在完全基于開放標準創(chuàng)建一個 BPEL 驅動的服務 提供商協(xié)作網(wǎng)絡。該網(wǎng)絡稱作服務支持環(huán)境 (SSE)網(wǎng)絡,它組合第三方的地球觀測 (EO)和 地理
4、信息系統(tǒng)(GIS)服務,提供增值的復合型服務。 SSE 是一個不斷壯大的網(wǎng)絡,目前包 括遍布 9 個不同國家/地區(qū)的 20 多個合作伙伴。 如圖 1 所示,SSE 是一個支持 BPEL 的網(wǎng)絡的簡單實現(xiàn)。ESA 充當中介,它使用各種 Web 服務標準(如 SOAP、WSDL、WS-Addressing、WS-Inspection 等)為不同合作伙伴之 間基于流程的協(xié)作提供支持。該網(wǎng)絡在集中星型拓撲環(huán)境中運行 :服務提供商使用 Oracle BPEL Designer 將不同類型的地球觀測和 GIS 服務集中到一個信息庫中,從而創(chuàng)建了一個 不斷擴大的服務目錄。 Oracle BPEL PM 圖
5、1 SSE 體系結構 SSE 提供執(zhí)行以下任務所必需的基礎架構 -承載和管理充當可用服務目錄的中央信息庫 -在中央目錄內(nèi)部注冊和搜索服務 在 Oracle BPEL 引擎內(nèi)部執(zhí)行短期和長期的業(yè)務流程 使合作伙伴能夠使用 Oracle BPEL 流程管理器控制臺監(jiān)控 Web 服務的執(zhí)行 最終用戶通過瀏覽可用服務目錄請求特定服務。 SSE 根據(jù)請求調(diào)用相關的業(yè)務流程。 該業(yè)務流程調(diào)用 Web 服務(運行在服務提供商處)來完成請求。 SSE 支持同步和異步的交互模型。 ESA 廣泛使用 Oracle BPEL 流程管理器 API來為提 供商和最終用戶提供最大程度的靈活性和易用性體驗。 設計 Web
6、服務網(wǎng)絡 開放標準正在不斷改變集成的規(guī)則。 BPEL 提供了一個以流程為中心的跨企業(yè)集成方 法,因此可以使用 BPEL 流程流定義合作伙伴集成。SOA 與 BPEL 的這一組合為構建松散 耦合的協(xié)作網(wǎng)絡提供了一個前所未有的良機。 集中星型(SSE 采用的方法)是一個廣泛使用的網(wǎng)絡拓撲, 組織通過它與各種合作伙伴建 立連接。網(wǎng)絡也可以采用單向對等模型。這種情況下,每個合作伙伴都為 Web 服務安全性 和供應提供了一個平臺。 現(xiàn)在,我們來看網(wǎng)絡設計的四個方面 : 設置接口關系 簡化合作伙伴支持 創(chuàng)建集中的服務注冊表 為合作伙伴和最終用戶提供自助監(jiān)視功能 設置接口關系。協(xié)作網(wǎng)絡設計從定義參與規(guī)則開始
7、。 這些規(guī)則指定在業(yè)務流程中交換的 消息、這些消息的交換順序以及該消息的物理屬性。 要正確通信,所有合作伙伴都必須能夠 回答以下問題。 交互的目的 一是請求報價還是訂單? 消息格式-消息是如何編碼的? 詞匯一應如何構造消息,以便其他各方可以理解和處理它們 ? 業(yè)務約束-應在多長時間內(nèi)響應請求 ? -通信渠道-是否應把消息加密? 為幫助合作伙伴回答以上問題, ESA 公布了一個接口控制文檔來定義這些術語。本文 檔正式確定了在多個 ESA 贊助的項目中建立、改進和驗證的技術集成規(guī)則?;谙⒌?SOAP(通過HTTP 或 HTTPS 實現(xiàn)安全通信)是 SSE 服務器與服務提供商之間采用的通信 協(xié)議
8、。(對于本文檔,我們將分析 WS-Security 的用法。)Web 服務定義語言(WSDL)是唯 一一個綁定了所有實體的接口協(xié)定;服務提供商必須創(chuàng)建一個 WSDL 文件,用于描述它的 SOAP 接口并使其他合作伙伴可以訪問該接口。 WSDL 文件中包含的某些信息是固定的, 但 必須提供以下信息: 根據(jù)選定的交互模型(搜索、RFQ、訂購)選擇的操作 服務的物理位置 服務 XSD 模式的導入 為便于服務、一致性和消息轉換的比較,ESA 要求使用 XSD 模式表示 XML 有效載荷。 SSE 還要求使用主 XSLT 文檔來確保表示層中的一致性。必須按如下所示在每個服務中導 入模板樣式表: xsl:
9、apply-imports 使用從 SSE 樣式表中導入的模板規(guī)則處理根節(jié)點。注冊該服務時, 服務提供商提供 XML 模式、 WSDL 和 XSLT 文件的 URL。SSE 強制使用文檔樣式的 SOAP。 該方法允許使用 XML模式對輸入服務和服務輸出的數(shù)據(jù)進行詳細的指定并驗證傳 入和傳出的消息。 ESA 采用的方法為打算構建一個合作伙伴數(shù)量有限的 Web 服務網(wǎng)絡的公司提供了一 個便捷解決方案。隨著網(wǎng)絡規(guī)模的增長, 將需要引入新的消息格式、通信規(guī)則、安全性以及 傳輸機制。 簡化合作伙伴的參與。 任何網(wǎng)絡的壯大都離不開合作伙伴的輕松參與。 下列因素將對此 過程產(chǎn)生很大的影響。 與集線器的集成-
10、合作伙伴如何創(chuàng)建和提交他們的 Web 服務?集線器能否支持不同 的傳輸協(xié)議? 流程管理-不同合作伙伴流程之間是否有清晰的界限 ?合作伙伴能否修改它的業(yè)務流 程而不影響整個網(wǎng)絡的可靠性 ?能否使用元數(shù)據(jù)定義即時生成流程 ? SSE 通過降低對服務提供商的技術要求成功穩(wěn)固了與其合作伙伴的聯(lián)系。 ESA 通過分 發(fā)合作伙伴連接軟件、劃分開發(fā)平臺以及自動代表合作伙伴生成流程流實現(xiàn)了該目標。 例如,為加快集成流程的速度, ESA 分發(fā)了 SSE Toolbox,這是一個在 SSE 與服務提 供商的現(xiàn)有系統(tǒng)間充當接口的免費工具包。 基于 Sun Java Web Services Developer Pa
11、ck 的 SSE Toolbox 提供了一個支持各種后端集成機制 (如 FTP、文件交換、JDBC、調(diào)用 Java API、 HTTP等)的 XML 腳本語言。它還自動生成注冊服務所需的 WSDL 文件。 不同的合作伙伴將多個服務提供給中央信息庫。 開發(fā)和部署環(huán)境的劃分使合作伙伴間的更改 互不影響。SSE 通過在 Oracle BPEL 流程管理器中使用 BPEL 域有效地利用了劃分功能。 BPEL 域使開發(fā)人員或管理員能夠將 Oracle BPEL 流程管理器的單個實例劃分為多個虛擬 BPEL 沙箱。BPEL 域由一個 ID 標識,并由一個口令保護。 當服務提供商在 SSE 上注冊時, 將調(diào)
12、用 Oracle BPEL 流程管理器 API自動創(chuàng)建一個 BPEL 域保存服務定義文件。 以下是一個 createDomain 方法示例: /* * Create new doma in space for a service provider to hold her/his services workflow * defi niti ons files in * param doma inN ame The Id to ide ntify the doma in * param password The password used to logi n to the corresp ondi
13、ng doma in * excepti on RemoteExcepti on System com muni cati on error * excepti on WorkflowExcepti on Throw n if any error happe ns on the server that preve nt the delete */ public void createDoma in( Stri ng doma inN ame, Stri ng password) throws RemoteExcepti on, WorkflowExcepti on if(ml.isDebugE
14、 nabled() ml.debug(E nter createDoma in( doma in = ” + doma inN ame + password = + password); /* * check if the being created doma in exist? */ try Locator locator = new Locator(doma inN ame, password); (Stop creating domain: + domainName + because it has already existed.); throw new Workflow
15、Exceptio n(1019); catch (com.oracle.bpel.clie nt.ServerExceptio n e) J try /obtai n the domai n admin password from the system con figuratio n SSE.properties file String doma in Adm in Password = SystemCo nfigurati onln fo.getProperty(WorkflowCo nsta nt.BPEL_DOMAIN_ADMI N_PASSWORD); ServerAuth auth
16、= ServerAuthFactory.authe nticate( doma in Adm in Password, localhost); if(ml.isDebugE nabled() ml.debug(obta in authe nticati on ok); / Create server object . this is our service in terface / Server server = new Server( auth ); / Domain id is newDomain, the password is myPassword if(ml.isDebugE nab
17、led() ml.debug(create server in sta nee ok); / Map doma in Properties = new HashMap(); domai nProperties.put( Con figuratio n.DATASOURCE_JNDI, SystemC on figurati onln fo.getProperty (Commo nCo nsta nt.DEFAULT_BPELDOMAIN_DS_JNDI); domai nProperties.put( Con figuratio n.TX_DATASOURCE_JNDI, SystemC on
18、 figurati onln fo.getProperty (Commo nCo nsta nt.DEFAULT_BPELDOMAIN_DS_JNDI); if(ml.isDebugE nabled() ml.debug(create doma in - ds jndi property key/value: + Con figuratio n.DATASOURCE_JNDI + / + SystemC on figurati onln fo.getProperty (Commo nCo nsta nt.DEFAULT_BPELDOMAIN_DS_JNDI); if(ml.isDebugE n
19、abled() ml.debug(create doma in - tx_ds jndi property key/value: + Con figuratio n.TX_DATASOURCE_JNDI + / + SystemC on figurati onln fo.getProperty (Commo nCo nsta nt.DEFAULT_BPELDOMAIN_DS_JNDI); server.createDoma in( doma inN ame, password, doma in Properties); if(ml.isDebugE nabled() ml.debug(E nt
20、er createDomai n(doma in = ” + doma inN ame + password = + password); catch( com.oracle.bpel.clie nt.ServerExcepti on se ) ml.error(se.getMessage(); if(ml.isDebugE nabled() se.pri ntStackTrace(); throw new WorkflowExceptio n(1018, se.getCause(); 在下面 runBuildScript 方法的實現(xiàn)中,通過一個 Ant 構建腳本訪問 數(shù)。runBuildSc
21、ript 方法調(diào)用一個 Ant 項目文件,后者隨后調(diào)用 bpelc 供商的 BPEL流程。 * execute the ant script to build an Oracle BPEL process that impleme nts the workflow. * The script also deploys the workflow to the service doma ins. * All in put i nformati on is provided un der the props at the in put param. * param props Contain all
22、 n ecessary properties used to build/deploy the workflow BPEL process * throws WorkflowExcepti on */ private void runBuildScript(String buildFilename, Properties props) throws WorkflowExceptio n if(ml.isDebugE nabled()ml.debug(E nter run BuildScript(buildFileName = + buildFile name + , properties =.
23、); try Project project = new Project(); project.i nit(); File buildFile = new File(buildFile name); if (!buildFile.exists() throw new WorkflowExceptio n(1015); if(ml.isDebugEnabled() ml.debug(ant build file: + buildFile.getAbsolutePath(); ProjectHelper.c on figureProject(project, buildFile); /prepar
24、e logger for the project build Prin tStream out = System.out; BuildLogger logger = new DefaultLogger(); logger.setMessageOutputLevel(Project.MSG_DEBUG); logger.setOutputPri ntStream(out); Oracle bpelc 函 編譯和部署服務提 logger.setErrorPri ntStream(out); project.addBuildListe ner(logger); /set project proper
25、ties Enu merati on keys = props.keys(); while(keys.hasMoreEleme nts() Stri ng key = keys. nextEleme nt().toStri ng(); project.setProperty(key, props.getProperty(key); / test /excute default target project.executeTarget(project.getDefaultTarget(); if(ml.isDebugE nabled()ml.debug(Exit run BuildScript(
26、buildFileName = + buildFile name + , properties =.); catch (Excepti on ex) ml.error(ex.getMessage(); if(ml.isDebugE nabled() ex.pri ntStackTrace(); throw new WorkflowExceptio n(1002,ex.getCause(); 在 Web 服務網(wǎng)絡設計中,應考慮使用 BPEL 域為所有相關各方劃分流程設計和部署平臺。 以下是一些可能的應用: 將單個 Oracle BPEL 流程管理器實例劃分為多開發(fā)人員環(huán)境。 這種情況下,域 ID
27、 通 常標識擁有該域的開發(fā)人員。 將單個 Oracle BPEL 流程管理器實例劃分為開發(fā)環(huán)境和 QA 環(huán)境。這種情況下,域 ID 可能為“ test 和”“ QA” 將單個 Oracle BPEL 流程管理器實例劃分為一個可以由多個部門或合作伙伴使用的 環(huán)境。這些情況下,域 ID 是部門或合作伙伴的名稱。 創(chuàng)建中央服務信息庫。定義了網(wǎng)絡關系后,合作伙伴便可以免費加入并提供他們的服務。 當然,發(fā)布和搜索這些服務的功能是 SOA 平臺的一個基礎功能。 在該流程中,合作伙伴將他們的 Web 服務發(fā)布到一個中央信息庫, 有關該服務的所有 信息都在這里進行管理。 這個中央框架提高了服務的可重用性, 最
28、大限度地降低了定位服務 所需的工作量和時間。沒有中央信息庫將導致不一致和混亂。 這反過來會降低網(wǎng)絡的靈活性 和開放性。 SSE 網(wǎng)絡頻繁使用中央 Web 服務信息庫;合作伙伴使用 Web 服務檢查語言(WSIL) 發(fā)現(xiàn)可用服務。服務提供商可以通過選擇相應的 WSDL 文件重用現(xiàn)有的 Web 服務(由網(wǎng)絡 中的其他提供商提供 )??梢栽?Oracle BPEL Designer 工具配置文件 UDDIProviderList.xml 中添加 WS-Inspection URL /inspection.wsil 來完成此任務,如 下所示。 ES
29、A SSE Portal wsil /in spect ion. wsil 位于服務提供商處的 Oracle BPEL Designer 連接到 SSE 服務器并使用 WS-lnspection 協(xié)議發(fā)現(xiàn)可用服務及其 WSDL 文件。連接到 WS-lnspection 服務器后,將 顯示所有可用服務列表,如圖 2 中所示。 圖 2 可用 SSE 服務列表 對于每個服務,將提供相應的 WSDL 文件和簡短的文字描述。 可以通過選擇 WSDL 文 件為該服務添加一個合作伙伴鏈接。 構建流程流后,可以使用 BPEL 控制臺將其部署在 SSE 門戶
30、上。(在它的下個版本中,SSE 將實現(xiàn) UDDI注冊表與 Oracle BPEL 的集成。注冊新服 務時,還將在此 UDDI注冊表中自動注冊該服務。該集成將簡化使用外部工具的服務發(fā)現(xiàn), 目前僅當這些工具支持 WS-I nspection 時才能發(fā)現(xiàn)服務。) 盡管您不必建立服務信息庫即可構建 SOA 并獲得它的眾多好處,但從長遠來看,信息 庫是不可或缺的。如果服務的作用域只是一個項目, 則架構師不用信息庫也能處理。 但大多 數(shù)企業(yè)都擁有各種服務和合作伙伴,并且這些服務和合作伙伴的大部分都在不斷變化。 提供自助式監(jiān)視。在多方參與業(yè)務流程的協(xié)作網(wǎng)絡中, 對業(yè)務流程執(zhí)行情況的監(jiān)視非常 關鍵,因此可以將
31、圍繞業(yè)務流程的關鍵性能指標與服務級協(xié)議相聯(lián)系。 (例如,加入網(wǎng)絡的 關鍵要求之一可能是確認兩小時內(nèi)的報價請求。 )監(jiān)視業(yè)務流程可以更好地獲知特定業(yè)務流 程實例執(zhí)行的時間、出現(xiàn)延遲的原因以及如何為未來事務修復此問題。 應向合作伙伴和最終用戶提供該級別的診斷。 通過創(chuàng)建自助式環(huán)境,合作伙伴和最終用 戶可以跟蹤他們的單個流程,從而減輕中央監(jiān)視框架檢測到的問題。 可以使用 Oracle BPEL 控制臺監(jiān)視和調(diào)試業(yè)務流程 (參見圖 3)。 ESA 和服務提供商利 用 BPEL 控制臺跟蹤正在運行和已經(jīng)完成的 BPEL 流程實例數(shù)量、流程實例的平均持續(xù)時 間(從而細分流程中消耗的時間 )以及文本格式的流
32、程實例審計線索, 從而使合作伙伴可以查 看中間結果。ORACLE BPEL Conwle M*rage &PEL n | Logout I Support Dashboard BPEL Prccesfes In stare1 Acthdith&i j Iri BPEL Pracwt【HEtagK H arehtG r#enCe tE 瓷.嘩 en JCirde Pryjtt&rroilu cti 曠封 b *rc_5 tndOrdr NfPb&efidOrttr INPD.DB卵FQ 料 4% cfl E 忻戟爭iWrOQiuct口息 Mi 療-帰 ndOrrj
33、r rin*K /P rod u Hi &as.icsndord6 iencft-3 ( V i.o ) CcnflP.FQ ( IX ) M-1CH G40C791 :t:01;+4.0 7 醜犯:Odw it NPP_D& lantjO- dr ( V. l.Q 2CCM -10 13 15 : 2&:17 D “盤料 1 HerrnenPridkjet*seftcKrder ( CC04-10 13 CmQQ 1.0】 i:3i:u m 7 JIM - X * NetPnrrdr Tpraiuctivptvf airndOrdgr 2QO4-1O If O Dsd
34、&r Nw Prongs C340M44 f v. 1.0 ) U:57:30 Lged to doriri; vitd C 吋論 &FEL Cw sle Y .1 圖 3 使用 Oracle BPEL 控制臺監(jiān)視業(yè)務流程 此外,訂購了特定服務的最終用戶可以跟蹤其訂單的狀態(tài)??梢允褂?Oracle BPEL 流程管 理器 API在 BPEL 控制臺的外部顯示該信息。建議服務提供商在他們的 BPEL 流程中使用 有意義的作用域名稱;在運行時,門戶使用 lln sta nceHa ndle.getStatus() API 提取當前 BPEL 作用域”的名稱向最終用戶顯示該進度的信息
35、。 作用域按層次結構組織,一個復雜的業(yè)務流程可以分為幾個作用域。它們?yōu)榛顒犹峁?了行為上下文。通過在 BPEL 流程中使用有意義的作用域名稱,合作伙伴可以跟蹤 短期” 和長期業(yè)務流程的狀態(tài)。 例如以下 getOrderSubstatus 方法的實現(xiàn)。該方法使 ESS 合作伙伴可以使用在 bpel 文件中執(zhí)行的作用域的名稱獲取 BPEL 流程實例的當前狀態(tài)。 * call the Oracle BPEL API to get current status of the workflow instanee, corresp onding to * the ordered supplied at t
36、he in put * param ordered The order ide ntified * param workflowld The workflow n ame (or Id) that is process ing the order stage. * Normally, there are two stages of an order:se nd(process)rfq and sen d(process) order * param doma in The doma in that the order workflow bel ongs to * param password The password used to logi n to the workflow domai n * retur n the curre nt status of the workflow in sta nee - particularly, it is the n ame of the curre nt * active scope in the workflow BPEL file. * throws RemoteExcepti on * throws WorkflowExcepti on */ public String getOr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 手術室護理不良事件培訓
- 3.15消費者權益保護日專題活動策劃與執(zhí)行
- 幼兒平衡車培訓方案
- 2025年餐飲管理專業(yè)能力考試試題及答案
- 2025年船舶工程師職業(yè)資格考試試卷及答案
- 2025年電商運營實務能力測試卷及答案
- 2025云南省初中學業(yè)水平考試數(shù)學
- 出納半年工作總結和計劃
- 口腔疾病護理知識
- 2025年湖北出租車司機上崗證考試題
- 服裝工藝師崗位職責
- 深圳市體育場館租賃合同
- 福建省廈門市廈門一中2024年數(shù)學高一下期末質量檢測試題含解析
- 軸承座基本工藝專業(yè)課程設計
- MOOC 計算機系統(tǒng)局限性-華東師范大學 中國大學慕課答案
- MOOC 管理學原理-東北財經(jīng)大學 中國大學慕課答案
- 《校園安全用電知識講座》課件模板(三套)
- 中國十大名畫
- 幼兒園教育事業(yè)統(tǒng)計領導小組會議紀要
- 邊緣計算在工業(yè)互聯(lián)網(wǎng)中的應用課件
- 家庭生活中的安全隱患及預防方法
評論
0/150
提交評論