共用方式為


在 Oracle 資料庫中具有大型物件資料類型的資料表上執行作業

Microsoft BizTalk Adapter for Oracle Database 支援 Oracle 大型物件 (LOB) 資料類型:

注意

搭配BizTalk Server使用 Oracle Database 配接器時,ReadLOB 作業不支援從 Oracle 資料庫串流 LOB 類型資料。 若要使用 BizTalk Server 從 Oracle 資料庫串流 LOB 資料,您應該改用選取作業。 如需串流的詳細資訊,請參閱 Oracle 資料庫中 LOB 資料類型的串流支援。 此外,來自 Oracle 資料庫的 ReadLOB 作業回應將會針對 WSDL 進行驗證失敗。 如需如何因應失敗的指示,請參閱 針對操作問題進行疑難排解

如何對 LOB 資料執行作業?

使用 Oracle Database 配接器搭配 BizTalk Server 在 Oracle 資料庫上執行作業牽涉到建置組塊中所述的程式性工作,以使用 Oracle Database 開發 BizTalk 應用程式。 若要在 Oracle 資料庫中的資料表上叫用 ReadLOB 和 UpdateLOB 作業,這些工作如下:

  1. 建立 BizTalk 專案並產生 ReadLOB 和 UpdateLOB 作業的架構。

  2. 在 BizTalk 專案中建立訊息,以便從 Oracle 資料庫傳送和接收訊息。 您必須為這兩項作業的傳送要求和接收回應建立訊息。

  3. 建立協調流程以叫用 ReadLOB 和 UpdateLOB 作業。

  4. 建置和部署 BizTalk 專案。

  5. 藉由建立實體傳送和接收埠來設定 BizTalk 應用程式。

  6. 啟動 BizTalk 應用程式。

    本主題提供執行這些工作的指示。

根據本主題的範例

根據本主題的範例Operate_LOB也會隨附 BizTalk 配接器套件。 如需詳細資訊,請參閱 配接器範例

產生架構

在本主題中,為了示範如何執行 ReadLOB 和 UpdateLOB 作業,我們將針對 Oracle 資料庫中 SCOTT 架構下的 CUSTOMER 資料表產生這些作業的中繼資料。 此資料表會藉由執行範例所提供的 SQL 腳本,在 SCOTT 架構下建立。 若要深入瞭解範例,請參閱 架構範例

定義訊息和訊息類型

您稍早產生的架構描述協調流程中訊息所需的「類型」。 訊息通常是變數,其類型是由對應的架構所定義。 您必須將您在第一個步驟中產生的架構連結到 BizTalk 專案的 [協調流程檢視] 視窗的訊息。

針對本主題,您必須建立兩個要求-回應訊息集—一個 ReadLOB 作業的要求-回應集,以及 UpdateLOB 作業的第二個要求-回應集。

執行下列步驟來建立訊息,並將其連結至架構。

  1. 如果 BizTalk 專案尚未開啟,請開啟 [協調流程檢視] 視窗。 若要這樣做,請按一下 [ 檢視],指向 [其他視窗],然後按一下 [ 協調流程檢視]。

  2. 在 [協調流程檢視] 中,以滑鼠右鍵按一下 [ 訊息],然後按一下 [ 新增訊息]。

  3. 以滑鼠右鍵按一下新建立的訊息,然後選取 [ 屬性視窗]。

  4. Message_1的 [屬性]窗格中,執行下列動作:

    使用 作法
    識別碼 輸入 要求
    訊息類型 從下拉式清單中,展開 [ 架構],然後選取 [Operate_LOB]。OracleDBBindingSchema.ReadLOB 其中 Operate_LOB 是您 BizTalk 專案的名稱。 OracleDBBindingSchema 是針對 CUSTOMER 資料表上的 ReadLOB 和 UpdateLOB 作業所產生的架構。
  5. 重複上一個步驟,以建立三個以上的訊息。 在新訊息的 [ 屬性 ] 窗格中,執行下列動作:

    將識別碼設定為 將訊息類型設定為
    回應 Operate_LOB。OracleDBBindingSchema.ReadLOBResponse
    Request2 Operate_LOB。OracleDBBindingSchema.UpdateLOB
    Response2 Operate_LOB。OracleDBBindingSchema.UpdateLOBResponse

設定協調流程

您必須建立 BizTalk 協調流程,以使用BizTalk Server來叫用資料表上的 ReadLOB 和 UpdateLOB 作業。 在此協調流程中,您會卸載兩個要求訊息,一個用於 ReadLOB 作業,另一個用於 UpdateLOB 作業。 這些訊息會在接收位置卸載。 Oracle Database 配接器會取用訊息,並透過 ODP 將它們傳遞至 Oracle 資料庫。 Oracle 資料庫的回應會儲存至另一個位置。

因為協調流程會同時挑選兩個要求,所以您必須在協調流程中包含平行動作圖形。 針對每個平行動作,您必須包含傳送和接收圖形,以將訊息傳送至 Oracle 資料庫並接收回應。 不過,您可以使用相同的埠來傳送和接收這兩項作業的訊息。 同時執行 ReadLOB 和 UpdateLOB 作業的一般協調流程會包含:

  • 傳送和接收圖形,以將訊息傳送至 Oracle 資料庫並接收回應。

  • 單向接收埠,用來接收傳送至 Oracle 資料庫的要求訊息。

  • 雙向傳送埠,將要求訊息傳送至 Oracle 資料庫並接收回應。

  • 單向傳送埠,將來自 Oracle 資料庫的回應傳送至資料夾。

    範例協調流程如下所示:

    讀取和更新 LOB 資料的協調流程

新增訊息圖形

請確定您為每個訊息圖形指定下列屬性。 Shape 資料行中列出的名稱是訊息圖形的名稱,如剛才提到的協調流程所示。 下表列出其中一個平行動作必須包含的圖形。

圖形 圖形類型 屬性
ReceiveMessage 接收 - 將 名稱 設定為 ReceiveMessage
- 將 Activate 設定為 True
SendMessage 傳送 - 將 [名稱] 設定為 SendMessage
ReceiveResponse 接收 - 將 Name 設定為 ReceiveResponse
- 將 Activate 設定為 False
SendResponse 傳送 - 將 [名稱] 設定為 SendResponse

下表列出其他平行動作必須包含的圖形。

圖形 圖形類型 屬性
ReceiveMessage2 接收 - 將 Name 設定為 ReceiveMessage2
- 將 Activate 設定為 True
SendMessage2 傳送 - 將 [名稱] 設定為 SendMessage2
ReceiveResponse2 接收 - 將 Name 設定為 ReceiveResponse2
- 將 Activate 設定為 False
SendResponse2 傳送 - 將 [名稱 ] 設定為 SendResponse2

新增埠

請確定您為每個邏輯埠指定下列屬性。 [埠] 資料行中所列的名稱是協調流程中顯示的埠名稱。

連接埠 屬性
FileIn - 將 識別碼 設定為 FileIn
- 將 Type 設定為 FileInType
- 將 通訊模式 設定為 單向
- 將 通訊方向 設定為 接收
LOBPort - 將 識別碼 設定為 LOBPort
- 將 Type 設定為 LOBPortType
- 將 通訊模式 設定為 Request-Response
- 將 通訊方向 設定為 Send-Receive
SaveResponse - 將 識別碼 設定為 SaveResponse
- 將 類型 設定為 SaveResponseType
- 將 通訊模式 設定為 單向
- 設定要傳送的通訊方向

由於您將使用這些埠處理兩個要求和回應訊息,因此您必須為每個埠建立兩個作業,其中每個作業對應至一個訊息類型。 若要建立作業,請以滑鼠右鍵按一下埠圖形,然後選取 [ 新增作業]。 將每個埠的第一個作業命名為 ReadLOB ,並將每個埠的第二個作業命名為 UpdateLOB

使用相互關聯

相互關聯是將內送訊息與適當協調流程執行個體相比對的程序。 在協調流程中,您將卸載兩個要求訊息,每個多載各一個。 使用相互關聯,您會將要求訊息與正確的協調流程產生關聯。 如需相互關聯的詳細資訊,請參閱 在協調流程中使用相互關聯

使用相互關聯
  1. 從針對每個作業產生的架構升級屬性。 例如,從 ReadLOB 作業架構升級 LOB_COLUMN 屬性;從 UpdateLOB 作業架構升級 FILTER 屬性。 若要升級屬性,請以滑鼠右鍵按一下架構檢視中的屬性,指向 [ 升級],然後選取 [ 快速升級]。 這會將 PropertySchema.xsd 檔案新增至 BizTalk 專案。

    如需升級屬性的相關資訊,請參閱 升級屬性

  2. 在 [協調流程檢視] 中,以滑鼠右鍵按一下 [ 相互關聯類型],然後選取 [ 新增相互關聯類型]。

  3. [ 相互關聯屬性 ] 對話方塊會列出您在步驟 1 中升級的屬性。 選取屬性,然後按一下 [ 新增]。

  4. 按一下 [確定]。

  5. 若要為其他升級的屬性建立相互關聯類型,請重複這些步驟。

  6. 根據關聯類型的作業重新命名相互關聯類型。 您可以將 ReadLOB 作業) 的相互關聯類型重新命名為 CorrelationType_ReadLOB (,CorrelationType_UpdateLOB UpdateLOB 作業 () 。

  7. 在 [協調流程檢視] 中,以滑鼠右鍵按一下 [相互關聯集],然後選取 [ 新增相互關聯集]。

  8. 以滑鼠右鍵按一下新增的相互關聯集,然後按一下 [ 屬性]。 在 [ 屬性] 窗格中,執行下列動作:

    使用 作法
    相互關聯類型 Operate_LOB。CorrelationType_ReadLOB
    識別碼 Correlation_ReadLOB
  9. 新增另一個相互關聯集,然後從 [屬性] 窗格指定下列屬性。

    使用 作法
    相互關聯類型 Operate_LOB。CorrelationType_UpdateLOB
    識別碼 Correlation_UpdateLOB

指定動作圖形的訊息,並將其連接到埠

下表指定屬性及其值,您應該設定為指定動作圖形的訊息,並將其連結至埠。 Shape 資料行中所列的名稱是如先前所述協調流程中顯示的訊息圖形名稱。

圖形 屬性
ReceiveMessage - 將 [初始化相互關聯集] 設定為 [Correlation_ReadLOB
- 將 訊息 設定為 要求
- 將 作業 設定為 FileIn.ReadLOB.Request
SendMessage - 將 訊息 設定為 要求
- 將 作業 設定為 LOBPort.ReadLOB.Request
ReceiveResponse - 將 訊息 設定為 回應
- 將 作業 設定為 LOBPort.ReadLOB.Response
SendResponse - 將 訊息 設定為 回應
- 將 作業 設定為 SaveResponse.ReadLOB.Request
ReceiveMessage2 - 將 [初始化相互關聯集] 設定為 [Correlation_UpdateLOB
- 將 訊息 設定為 Request2
- 將 作業 設定為 FileIn.UpdateLOB.Request
SendMessage2 - 將 訊息 設定為 Request2
- 將 作業 設定為 LOBPort.UpdateLOB.Request
ReceiveResponse2 - 將 訊息 設定為 Response2
- 將 作業 設定為 LOBPort.UpdateLOB.Response
SendResponse2 - 將 訊息 設定為 回應
- 將 作業 設定為 SaveResponse.UpdateLOB.Request

指定這些屬性之後,訊息圖形和埠就會連線,而且您的協調流程已完成。

您現在必須建置 BizTalk 解決方案,並將其部署至BizTalk Server。 如需詳細資訊,請參閱 建置和執行協調流程

設定 BizTalk 應用程式

部署 BizTalk 專案之後,您稍早建立的協調流程會列在 [BizTalk Server 管理主控台] 的 [協調流程] 窗格中。 您必須使用 BizTalk Server 管理主控台來設定應用程式。 如需逐步解說,請參閱逐步解說 :部署基本 BizTalk 應用程式

設定應用程式牽涉到:

  • 選取應用程式的主機。

  • 將您在協調流程中建立的埠對應至 BizTalk Server 管理主控台中的實體埠。 針對此協調流程,您必須:

    • 定義硬碟上的位置,以及您將卸載要求訊息的對應檔案埠,每一個用於 ReadLOB 和 UpdateLOB 作業。 BizTalk 協調流程會取用要求訊息,並將其傳送至 Oracle 資料庫。

    • 定義硬碟上的位置和對應的檔案埠,其中 BizTalk 協調流程會卸載回應訊息,每個作業各有一個,其中包含 Oracle 資料庫的回應。

    • 定義實體 WCF-Custom 或 WCF-OracleDB 傳送埠,以將訊息傳送至 Oracle 資料庫。 您也必須在傳送埠中指定動作。 如需如何建立 WCF-Custom 或 WCF-OracleDB 埠的資訊,請參閱 手動設定實體埠系結至 Oracle 資料庫配接器。 由於 WCF-Custom 或 WCF-OracleDB 傳送埠傳送和接收符合多個架構的訊息並執行兩項作業,因此您必須為這兩個作業設定動態動作。 如需動作的詳細資訊,請參閱 設定 Oracle 資料庫的 SOAP 動作。 針對此協調流程,動作應該設定如下:

      <BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
        <Operation Name="ReadLOB" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER/ReadLOB" />  
        <Operation Name="UpdateLOB" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER/UpdateLOB" />  
      </BtsActionMapping>  
      

      注意

      使用取用配接器服務 BizTalk 專案增益集產生架構也會建立系結檔案,其中包含埠的相關資訊,以及要為這些埠設定的動作。 您可以從 BizTalk Server 管理主控台匯入此系結檔案,以建立輸出呼叫的傳送埠 () ,或針對輸入呼叫) 接收埠 (。 如需詳細資訊,請參閱 使用埠系結檔案設定實體埠系結至 Oracle 資料庫

啟動應用程式

您必須啟動 BizTalk 應用程式,才能在 Oracle 資料庫上執行作業。 如需啟動 BizTalk 應用程式的指示,請參閱 如何啟動協調流程

在此階段,請確定:

  • 要接收協調流程要求訊息的 FILE 接收埠正在執行。

  • 從協調流程接收回應訊息的 FILE 傳送埠正在執行中。

  • WCF-Custom 傳送埠或傳送訊息至 Oracle 資料庫的 WCF-OracleDB 正在執行。

  • 作業的 BizTalk 協調流程正在執行。

執行作業

執行應用程式之後,您必須將要求訊息卸載至 FILE 接收位置。 要求訊息的架構必須符合您稍早產生的作業架構。 如需使用 Oracle 資料庫配接器叫用 LOB 資料類型作業之要求訊息架構的詳細資訊,請參閱 特殊 LOB 作業的訊息架構

協調流程會取用要求訊息,並將其傳送至 Oracle 資料庫。 Oracle 資料庫的回應會儲存在其他定義為協調流程一部分的 FILE 位置。

在此協調流程中,我們會先卸載 UpdateLOB 作業的要求訊息,以更新 CUSTOMER 資料表之 BLOB 資料類型) 的 PHOTO 資料行 (。 叫用特定客戶 PHOTO 資料行更新的要求訊息如下:

<UpdateLOB xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <LOB_COLUMN>PHOTO</LOB_COLUMN>  
  <FILTER>Name='Mindy Martin'</FILTER>  
  <Stream>YWJjZA==</Stream>  
</UpdateLOB>  

注意

篩選字串一律必須擷取一個相符的資料列,否則 Oracle 資料庫配接器會擲回 XmlReaderParsingException。 Stream 元素的值 <> 也必須是 base64Binary 類型。

UpdateLOB 作業的回應為:

<?xml version="1.0" encoding="utf-8"?>  
<UpdateLOBResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER"></UpdateLOBResponse>  

我們現在會卸載 ReadLOB 作業的要求訊息,以讀取 UpdateLOB 作業所更新的資料。 在特定客戶的 PHOTO 資料行上叫用 ReadLOB 作業的要求訊息如下:

<ReadLOB xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <LOB_COLUMN>PHOTO</LOB_COLUMN>  
  <FILTER>NAME='Mindy Martin'</FILTER>  
</ReadLOB>  

注意

篩選字串一律必須擷取一個相符的資料列。 如果有一個以上的相符資料列,Oracle 資料庫配接器只會傳回第一個 (相符) 資料列的 LOB 資料行。

ReadLOB 作業的回應為:

<?xml version="1.0" encoding="utf-8"?>  
<ReadLOBResponse mlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/CUSTOMER">  
  <ReadLOBResult>YWJjZA==</ReadLOBResult>  
</ReadLOBResponse>  

注意

ReadLOB 作業的回應可能無法針對 WSDL 進行驗證。 您必須執行某些工作,以針對 WSDL 驗證 ReadLOB。 如需詳細資訊,請參閱 針對作業問題進行疑難排解

可能的例外狀況

如需您在使用 BizTalk Server 對包含 LOB 資料的資料表執行作業時可能會遇到的例外狀況相關資訊,請參閱例外狀況和錯誤處理

最佳做法

部署並設定 BizTalk 專案之後,您可以將組態設定匯出至稱為系結檔案的 XML 檔案。 產生系結檔案之後,您可以從檔案匯入組態設定,如此您就不需要為相同的協調流程建立傳送埠、接收埠等。 如需系結檔案的詳細資訊,請參閱 重複使用 Oracle 資料庫配接器系結

另請參閱

使用 Oracle 資料庫開發 BizTalk 應用程式的建置組塊