我們正設計一套針對電信供應商的新系統(tǒng),并且鎖定Oracle服務總線(OSB)作為企業(yè)服務總線。對我來說這款工具的最好的加分項就是強大的工具支持。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è)務流程執(zhí)行語言)以及開發(fā)OSB代碼。
關于 OSB 需要注意的幾點如下:
代理服務:?正如其名字所表明的,代理服務是為外部客戶提供的服務,扮演了內(nèi)部服務外觀的角色。通過代理服務,你可以更好地控制內(nèi)部服務中的變化,因為如果你的內(nèi)部服務發(fā)生變化,代理服務可以執(zhí)行需要的轉(zhuǎn)換。業(yè)務服務:?在 OSB中, 業(yè)務服務表示內(nèi)部應用服務。它可以是 WebService, JMS 隊列/主題, REST 服務, FTP 服務以及其他服務. 業(yè)務服務將會包含調(diào)用實際服務的功能。所以本文中關注的場景如下:
我們有一個內(nèi)部的服務,回報用戶信息,如果用戶通過在MSISDN或SIM卡號碼,根據(jù)輸入,數(shù)據(jù)將被取回來。通過使用代理服務,這項服務必須以更有意義的方式開放給外部方。演示項目可以在這里下載。
首先創(chuàng)建企業(yè)服務,作為內(nèi)部服務的表面。?在OSB項目中,創(chuàng)建四個文件夾:
代理業(yè)務轉(zhuǎn)換WSDL然后需要復制本例中的 內(nèi)部服務WSDL和代理服務 WSDL文件到 “WSDL” 文件夾。
配置企業(yè)服務
右擊 “business” 文件夾,并選擇?New->Business服務。當企業(yè)服務創(chuàng)建好,“General” 選項卡彈出。在此,我們需要做如下操作:
選擇 “WSDL Web Service” ,然后點擊瀏覽器。 然后選擇“Browse,” 選擇?the WSDL file,然后有兩個選項。選擇the one ending with “(port)這就是我們配置業(yè)務服務所需要做的所有操作。然后進入我們的代理服務,這是所有的動作發(fā)生的地方。
配置代理服務右鍵點擊創(chuàng)建的 “proxy” 目錄, 選擇 New->Proxy Service 并提供一個有效的名稱.在 “General” 標簽頁, 選擇 “WSDL Web Service” 并點擊瀏覽.現(xiàn)在代理服務中,你需要選擇我們創(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)
在這里正如你所看到的,我們檢測設備類型是否等 “MSISDN” ,然后在業(yè)務服務中設置相應的元素。
所用的響應轉(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)換,在其中我們將響應元素映射到所需的代理響應元素。
現(xiàn)在我們回到代理服務,點擊? “Replace” 動作,進入 “Properties” 標簽頁.
在 “In Variable”? 中插入值 “body”.點擊 “Expression” 鏈接. 進入 “XQuery Resources” 標簽頁, 點擊 “Browse” 并選擇請求轉(zhuǎn)換文件.在右側(cè)的 “Variable Structures” 組件中,展開 “body” 元素,然后選擇請求元素并將其拖拽到 “Binding” 文本框中,如下所示:text box as follows:就是這樣,現(xiàn)在我們就可以測試該功能。 在你動手之前,請記住首先啟動在SOAP UI上創(chuàng)建的模擬服務。
現(xiàn)在,我們登錄服務總線控制臺,轉(zhuǎn)到代理服務并啟動測試控制臺。? 下面是過運行示例得到的結(jié)果:
你以在“ Invocation Trace”部分中的同一個屏幕上進一步了解發(fā)生的詳細過程。 OSB進行的請求和響應轉(zhuǎn)換可以在下面的圖片中看到:
到這里我們將結(jié)束對Oracle Service Bus的介紹。 如果你有任何疑問,請隨時留言,我將盡快回復。 另外,如果有任何改善的地方,請留下你的反饋,我們將一如既往的非常感謝。
- 閃存普惠,一步到位!華為商業(yè)市場極簡全閃數(shù)據(jù)中心Pro+重磅發(fā)布
- 《企業(yè)數(shù)據(jù)治理實踐白皮書》發(fā)布,啟信寶聯(lián)合六大數(shù)交所共同編制
- 業(yè)界首個!華為數(shù)據(jù)中心自動駕駛網(wǎng)絡通過EANTC L4自智網(wǎng)絡等級測評
- AI模型的耗電量驚人 下一步是建設太空數(shù)據(jù)中心?
- 為什么制造商必須協(xié)調(diào)IT和OT,才能實現(xiàn)智能工業(yè)的成功?
- 打造AI時代先進算力底座,鯤鵬開發(fā)者峰會2025即將開幕
- 金山辦公宣布未來五年戰(zhàn)略:重建海外基地,優(yōu)化WPS Office用戶體驗
- 是德科技攜KAI系列布局AI新時代
- 微軟全球再裁6000人:無關績效,關乎未來
- 華為發(fā)布AI數(shù)據(jù)湖解決方案,助力企業(yè)加速擁抱AI
免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權或存在不實內(nèi)容時,應及時向本網(wǎng)站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內(nèi)容或斷開相關鏈接。