我們正設(shè)計一套針對電信供應(yīng)商的新系統(tǒng),并且鎖定Oracle服務(wù)總線(OSB)作為企業(yè)服務(wù)總線。對我來說這款工具的最好的加分項就是強大的工具支持。Oracle已經(jīng)將其所有企業(yè)集成軟件棧集成為一個整體,將其捆綁為Oracle SOA套件。本文將把重點放在Oracle SOA套件11g的一部分,Oracle OSB 11g上。Oracle SOA Suite 12c有很大的變化。然而ORacle 12C套件中我喜歡的新功能是開發(fā)人員可以在一個IDE(集成開發(fā)環(huán)境)里,用JDeveloper開發(fā)BPEL(業(yè)務(wù)流程執(zhí)行語言)以及開發(fā)OSB代碼。
關(guān)于 OSB 需要注意的幾點如下:
代理服務(wù):?正如其名字所表明的,代理服務(wù)是為外部客戶提供的服務(wù),扮演了內(nèi)部服務(wù)外觀的角色。通過代理服務(wù),你可以更好地控制內(nèi)部服務(wù)中的變化,因為如果你的內(nèi)部服務(wù)發(fā)生變化,代理服務(wù)可以執(zhí)行需要的轉(zhuǎn)換。業(yè)務(wù)服務(wù):?在 OSB中, 業(yè)務(wù)服務(wù)表示內(nèi)部應(yīng)用服務(wù)。它可以是 WebService, JMS 隊列/主題, REST 服務(wù), FTP 服務(wù)以及其他服務(wù). 業(yè)務(wù)服務(wù)將會包含調(diào)用實際服務(wù)的功能。所以本文中關(guān)注的場景如下:
我們有一個內(nèi)部的服務(wù),回報用戶信息,如果用戶通過在MSISDN或SIM卡號碼,根據(jù)輸入,數(shù)據(jù)將被取回來。通過使用代理服務(wù),這項服務(wù)必須以更有意義的方式開放給外部方。演示項目可以在這里下載。
首先創(chuàng)建企業(yè)服務(wù),作為內(nèi)部服務(wù)的表面。?在OSB項目中,創(chuàng)建四個文件夾:
代理業(yè)務(wù)轉(zhuǎn)換WSDL然后需要復(fù)制本例中的 內(nèi)部服務(wù)WSDL和代理服務(wù) WSDL文件到 “WSDL” 文件夾。
配置企業(yè)服務(wù)
右擊 “business” 文件夾,并選擇?New->Business服務(wù)。當(dāng)企業(yè)服務(wù)創(chuàng)建好,“General” 選項卡彈出。在此,我們需要做如下操作:
選擇 “WSDL Web Service” ,然后點擊瀏覽器。 然后選擇“Browse,” 選擇?the WSDL file,然后有兩個選項。選擇the one ending with “(port)這就是我們配置業(yè)務(wù)服務(wù)所需要做的所有操作。然后進入我們的代理服務(wù),這是所有的動作發(fā)生的地方。
配置代理服務(wù)右鍵點擊創(chuàng)建的 “proxy” 目錄, 選擇 New->Proxy Service 并提供一個有效的名稱.在 “General” 標(biāo)簽頁, 選擇 “WSDL Web Service” 并點擊瀏覽.現(xiàn)在代理服務(wù)中,你需要選擇我們創(chuàng)建的代理 WSDL 文件,該文件會提供給外部客戶端。
結(jié)果如下:
(:: pragma bea:global-element-parameter parameter="$fetchSubscriber1" element="ns2:FetchSubscriber" location="../wsdl/SubscriberProxyService.wsdl" ::)(:: pragma bea:local-element-return type="ns1:InstalledBaseSubscriberClassificationQuery/ns0:InstalledBaseSubscriberClassificationQuery" location="../wsdl/subscriber_classfication.wsdl" ::)declare namespace ns2 = "http://www.example.org/SubscriberProxyService/";declare namespace ns1 = "http://www.openuri.org/";declare namespace ns0 = "http://mtnsa.co.za/si/IB/IBSubscriberClassificationQuery";declare namespace xf = "http://tempuri.org/OSB%20training%201/transformation/subscriberrequest/";declare function xf:subscriberrequest($fetchSubscriber1 as element(ns2:FetchSubscriber)) as element() { <ns1:InstalledBaseSubscriberClassificationQuery> <ns0:InstalledBaseSubscriberClassificationQuery> <ns0:Request> { if (data($fetchSubscriber1/EquipmentType) = "MSISDN") then <ns0:MSISDN> { (data($fetchSubscriber1/EquipmentValue))}</ns0:MSISDN> else <ns0:SIMCard> { data($fetchSubscriber1/EquipmentValue)}</ns0:SIMCard> } </ns0:Request> </ns0:InstalledBaseSubscriberClassificationQuery> </ns1:InstalledBaseSubscriberClassificationQuery>};declare variable $fetchSubscriber1 as element(ns2:FetchSubscriber) external;xf:subscriberrequest($fetchSubscriber1)
在這里正如你所看到的,我們檢測設(shè)備類型是否等 “MSISDN” ,然后在業(yè)務(wù)服務(wù)中設(shè)置相應(yīng)的元素。
所用的響應(yīng)轉(zhuǎn)換文件如下:(:: pragma bea:global-element-parameter parameter="$installedBaseSubscriberClassificationQueryResponse1" element="ns1:InstalledBaseSubscriberClassificationQueryResponse" location="../wsdl/subscriber_classfication.wsdl" ::)(:: pragma bea:global-element-return element="ns2:FetchSubscriberResponse" location="../wsdl/SubscriberProxyService.wsdl" ::)declare namespace ns2 = "http://www.example.org/SubscriberProxyService/";declare namespace ns1 = "http://www.openuri.org/";declare namespace ns0 = "http://mtnsa.co.za/si/IB/IBSubscriberClassificationQuery";declare namespace xf = "http://tempuri.org/OSB%20training%201/transformation/subscriberresponse/";declare function xf:subscriberresponse($installedBaseSubscriberClassificationQueryResponse1 as element(ns1:InstalledBaseSubscriberClassificationQueryResponse)) as element(ns2:FetchSubscriberResponse) { <ns2:FetchSubscriberResponse> <TradeCustomerCode>{ data($installedBaseSubscriberClassificationQueryResponse1/ns0:InstalledBaseSubscriberClassificationQuery/ns0:Response/ns0:Subscriber/@ServiceProviderCode) }</TradeCustomerCode> <PackageCode>{ data($installedBaseSubscriberClassificationQueryResponse1/ns0:InstalledBaseSubscriberClassificationQuery/ns0:Response/ns0:Subscriber/ns0:Package/@ProductCode) }</PackageCode> <PaymentOption>{ data($installedBaseSubscriberClassificationQueryResponse1/ns0:InstalledBaseSubscriberClassificationQuery/ns0:Response/ns0:Subscriber/@PaymentOption) }</PaymentOption> </ns2:FetchSubscriberResponse>};declare variable $installedBaseSubscriberClassificationQueryResponse1 as element(ns1:InstalledBaseSubscriberClassificationQueryResponse) external;xf:subscriberresponse($installedBaseSubscriberClassificationQueryResponse1)
這是一個簡單的轉(zhuǎn)換,在其中我們將響應(yīng)元素映射到所需的代理響應(yīng)元素。
現(xiàn)在我們回到代理服務(wù),點擊? “Replace” 動作,進入 “Properties” 標(biāo)簽頁.
在 “In Variable”? 中插入值 “body”.點擊 “Expression” 鏈接. 進入 “XQuery Resources” 標(biāo)簽頁, 點擊 “Browse” 并選擇請求轉(zhuǎn)換文件.在右側(cè)的 “Variable Structures” 組件中,展開 “body” 元素,然后選擇請求元素并將其拖拽到 “Binding” 文本框中,如下所示:text box as follows:就是這樣,現(xiàn)在我們就可以測試該功能。 在你動手之前,請記住首先啟動在SOAP UI上創(chuàng)建的模擬服務(wù)。
現(xiàn)在,我們登錄服務(wù)總線控制臺,轉(zhuǎn)到代理服務(wù)并啟動測試控制臺。? 下面是過運行示例得到的結(jié)果:
你以在“ Invocation Trace”部分中的同一個屏幕上進一步了解發(fā)生的詳細過程。 OSB進行的請求和響應(yīng)轉(zhuǎn)換可以在下面的圖片中看到:
到這里我們將結(jié)束對Oracle Service Bus的介紹。 如果你有任何疑問,請隨時留言,我將盡快回復(fù)。 另外,如果有任何改善的地方,請留下你的反饋,我們將一如既往的非常感謝。
- 英特爾火力全開炮轟AMD和英偉達:漏洞數(shù)量及危害性“遙遙領(lǐng)先”
- SUSE發(fā)布SUSE Edge Suite 與Edge 3.2 ,助力零售企業(yè)實現(xiàn)無縫化運營
- Gartner:2025年全球IT支出將達到5.61億美元,同比增長9.8%
- 消息稱去年全球IT支出超過5萬億美元 數(shù)據(jù)中心系統(tǒng)支出大幅增加
- 2025年全球數(shù)據(jù)中心:數(shù)字基礎(chǔ)設(shè)施的演變
- 谷歌押注多模態(tài)AI,BigQuery湖倉一體是核心支柱
- 數(shù)字化轉(zhuǎn)型支出將飆升:到2027年將達到4萬億美元
- 量子與人工智能:數(shù)字化轉(zhuǎn)型的力量倍增器
- 華為OceanStor Dorado全閃存存儲榮獲CC認證存儲設(shè)備最高認證級別證書
- 2024年終盤點 | 華為攜手伙伴共筑鯤鵬生態(tài),openEuler與openGauss雙星閃耀
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責(zé)任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。