Oracle 服務總線介紹

大數(shù)據(jù)

我們正設(shè)計一套針對電信供應商的新系統(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代碼。

關(guān)于 OSB 需要注意的幾點如下:

代理服務:?正如其名字所表明的,代理服務是為外部客戶提供的服務,扮演了內(nèi)部服務外觀的角色。通過代理服務,你可以更好地控制內(nèi)部服務中的變化,因為如果你的內(nèi)部服務發(fā)生變化,代理服務可以執(zhí)行需要的轉(zhuǎn)換。業(yè)務服務:?在 OSB中, 業(yè)務服務表示內(nèi)部應用服務。它可以是 WebService, JMS 隊列/主題, REST 服務, FTP 服務以及其他服務. 業(yè)務服務將會包含調(diào)用實際服務的功能。

所以本文中關(guān)注的場景如下:

我們有一個內(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)

大數(shù)據(jù)

然后到“Transport” 選項卡,并且將?URI改為:: http://localhost:8088/mockInstalledBaseSubscriberClassificationQueryWSServiceSoapBinding. 這是因為我們將使用SOAPUI 模擬服務特征來測試,?URI 代表由WSDL表示的SOAPUI的模擬服務端點。本例中的SOAPUI項目可以在此下載。

這就是我們配置業(yè)務服務所需要做的所有操作。然后進入我們的代理服務,這是所有的動作發(fā)生的地方。

配置代理服務

右鍵點擊創(chuàng)建的 “proxy” 目錄, 選擇 New->Proxy Service 并提供一個有效的名稱.在 “General” 標簽頁, 選擇 “WSDL Web Service” 并點擊瀏覽.現(xiàn)在代理服務中,你需要選擇我們創(chuàng)建的代理 WSDL 文件,該文件會提供給外部客戶端。

大數(shù)據(jù)

進入 “Message Flow” 標簽頁. 在該標簽頁, 首先由右側(cè)的 “Design Palette” 中拖拽一個 “Route” 元素.然后,拖拽一個 “Routing” 元素到 “Route” 元素中.點擊 “Routing” 元素, 并在底部面板中, 進入 “Properties” 標簽頁, 在該標簽頁中你將提供代理服務將會訪問的業(yè)務服務與操作名稱.

大數(shù)據(jù)

結(jié)果如下:

大數(shù)據(jù)

然后拖拽一個 “Replace” 到 “Request Action” 組件.在 “Properties” 標簽頁為? “Replace” 動作提供信息之前, 我們需要創(chuàng)建 XQuery 轉(zhuǎn)換文件, 該文件會將代理服務映射為業(yè)務服務請求,然后將業(yè)務服務響應映射回代理服務響應.右鍵點擊 “transformation” 目錄并選擇 New->XQuery Transformation. 輸入有效名稱. 對請求與響應轉(zhuǎn)換文件也需要進行同樣的操作。所用的請求轉(zhuǎn)換文件如下:
(:: 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è)務服務中設(shè)置相應的元素。

所用的響應轉(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:

大數(shù)據(jù)

然后選擇 “OK” 從而會將你帶回 “Properties” 標簽.選擇以 “Replace node contents” 單選按鈕. 結(jié)果如下所示:

大數(shù)據(jù)

現(xiàn)在讓我們拖拽一個 “Replace” 動作到 “Response Action” 組件.與之前相同,選擇響應轉(zhuǎn)換“$body/ins:InstalledBaseSubscriberClassificationQueryResponse”.你會遇到一個錯誤,表明 “ins” 命名空間沒有被識別.為解決該錯誤,在同一個 “Properties” 標簽內(nèi), 選擇標簽 “Namespaces” 并點擊添加. 輸入 “ins” 作為前綴, “http://www.openuri.org/” 作為 URI.

大數(shù)據(jù)

就是這樣,現(xiàn)在我們就可以測試該功能。 在你動手之前,請記住首先啟動在SOAP UI上創(chuàng)建的模擬服務。

大數(shù)據(jù)

現(xiàn)在,我們登錄服務總線控制臺,轉(zhuǎn)到代理服務并啟動測試控制臺。? 下面是過運行示例得到的結(jié)果:

大數(shù)據(jù)

你以在“ Invocation Trace”部分中的同一個屏幕上進一步了解發(fā)生的詳細過程。 OSB進行的請求和響應轉(zhuǎn)換可以在下面的圖片中看到:

大數(shù)據(jù)

到這里我們將結(jié)束對Oracle Service Bus的介紹。 如果你有任何疑問,請隨時留言,我將盡快回復。 另外,如果有任何改善的地方,請留下你的反饋,我們將一如既往的非常感謝。

極客網(wǎng)企業(yè)會員

免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。

2017-10-19
Oracle 服務總線介紹
我們正設(shè)計一套針對電信供應商的新系統(tǒng),并且鎖定Oracle服務總線(OSB)作為企業(yè)服務總線。對我來說這款工具的最好的加分項就是強大的工具支持。Oracle已經(jīng)

長按掃碼 閱讀全文