在 Oracle 資料庫中具有大型物件資料類型的資料表上執行作業
Microsoft BizTalk Adapter for Oracle Database 支援 Oracle 大型物件 (LOB) 資料類型:
二進位大型物件 (BLOB)
CLOB (字元大型物件)
NCLOB) (國家字元大型物件
BFILE) (二進位檔案。 如需詳細資訊,請參閱使用 BizTalk Server 在 Oracle 資料庫中使用 BFILE 資料類型對資料表執行作業。
Microsoft BizTalk Adapter for Oracle Database 會針對包含 LOB 資料行的資料表呈現 ReadLOB 和 UpdateLOB 作業,以執行這項操作。 如需這些作業的詳細資訊,請參閱 在 Oracle 資料庫中包含 LOB 資料的資料表和檢視表上的作業。 如需叫用這些作業之 SOAP 訊息結構的詳細資訊,請參閱 特殊 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 作業,這些工作如下:
建立 BizTalk 專案並產生 ReadLOB 和 UpdateLOB 作業的架構。
在 BizTalk 專案中建立訊息,以便從 Oracle 資料庫傳送和接收訊息。 您必須為這兩項作業的傳送要求和接收回應建立訊息。
建立協調流程以叫用 ReadLOB 和 UpdateLOB 作業。
建置和部署 BizTalk 專案。
藉由建立實體傳送和接收埠來設定 BizTalk 應用程式。
啟動 BizTalk 應用程式。
本主題提供執行這些工作的指示。
根據本主題的範例
根據本主題的範例Operate_LOB也會隨附 BizTalk 配接器套件。 如需詳細資訊,請參閱 配接器範例。
產生架構
在本主題中,為了示範如何執行 ReadLOB 和 UpdateLOB 作業,我們將針對 Oracle 資料庫中 SCOTT 架構下的 CUSTOMER 資料表產生這些作業的中繼資料。 此資料表會藉由執行範例所提供的 SQL 腳本,在 SCOTT 架構下建立。 若要深入瞭解範例,請參閱 架構範例。
定義訊息和訊息類型
您稍早產生的架構描述協調流程中訊息所需的「類型」。 訊息通常是變數,其類型是由對應的架構所定義。 您必須將您在第一個步驟中產生的架構連結到 BizTalk 專案的 [協調流程檢視] 視窗的訊息。
針對本主題,您必須建立兩個要求-回應訊息集—一個 ReadLOB 作業的要求-回應集,以及 UpdateLOB 作業的第二個要求-回應集。
執行下列步驟來建立訊息,並將其連結至架構。
建立訊息並連結至架構
如果 BizTalk 專案尚未開啟,請開啟 [協調流程檢視] 視窗。 若要這樣做,請按一下 [ 檢視],指向 [其他視窗],然後按一下 [ 協調流程檢視]。
在 [協調流程檢視] 中,以滑鼠右鍵按一下 [ 訊息],然後按一下 [ 新增訊息]。
以滑鼠右鍵按一下新建立的訊息,然後選取 [ 屬性視窗]。
在Message_1的 [屬性]窗格中,執行下列動作:
使用 作法 識別碼 輸入 要求。 訊息類型 從下拉式清單中,展開 [ 架構],然後選取 [Operate_LOB]。OracleDBBindingSchema.ReadLOB, 其中 Operate_LOB 是您 BizTalk 專案的名稱。 OracleDBBindingSchema 是針對 CUSTOMER 資料表上的 ReadLOB 和 UpdateLOB 作業所產生的架構。 重複上一個步驟,以建立三個以上的訊息。 在新訊息的 [ 屬性 ] 窗格中,執行下列動作:
將識別碼設定為 將訊息類型設定為 回應 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 資料庫的回應傳送至資料夾。
範例協調流程如下所示:
新增訊息圖形
請確定您為每個訊息圖形指定下列屬性。 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。
使用相互關聯
相互關聯是將內送訊息與適當協調流程執行個體相比對的程序。 在協調流程中,您將卸載兩個要求訊息,每個多載各一個。 使用相互關聯,您會將要求訊息與正確的協調流程產生關聯。 如需相互關聯的詳細資訊,請參閱 在協調流程中使用相互關聯。
使用相互關聯
從針對每個作業產生的架構升級屬性。 例如,從 ReadLOB 作業架構升級 LOB_COLUMN 屬性;從 UpdateLOB 作業架構升級 FILTER 屬性。 若要升級屬性,請以滑鼠右鍵按一下架構檢視中的屬性,指向 [ 升級],然後選取 [ 快速升級]。 這會將 PropertySchema.xsd 檔案新增至 BizTalk 專案。
如需升級屬性的相關資訊,請參閱 升級屬性。
在 [協調流程檢視] 中,以滑鼠右鍵按一下 [ 相互關聯類型],然後選取 [ 新增相互關聯類型]。
[ 相互關聯屬性 ] 對話方塊會列出您在步驟 1 中升級的屬性。 選取屬性,然後按一下 [ 新增]。
按一下 [確定]。
若要為其他升級的屬性建立相互關聯類型,請重複這些步驟。
根據關聯類型的作業重新命名相互關聯類型。 您可以將 ReadLOB 作業) 的相互關聯類型重新命名為 CorrelationType_ReadLOB (,CorrelationType_UpdateLOB UpdateLOB 作業 () 。
在 [協調流程檢視] 中,以滑鼠右鍵按一下 [相互關聯集],然後選取 [ 新增相互關聯集]。
以滑鼠右鍵按一下新增的相互關聯集,然後按一下 [ 屬性]。 在 [ 屬性] 窗格中,執行下列動作:
使用 作法 相互關聯類型 Operate_LOB。CorrelationType_ReadLOB 識別碼 Correlation_ReadLOB 新增另一個相互關聯集,然後從 [屬性] 窗格指定下列屬性。
使用 作法 相互關聯類型 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 資料庫配接器系結。