共用方式為


Oracle E-Business Suite 中的 ExecuteReader、ExecuteScalar 或 ExecuteNonQuery 作業

Oracle E-Business 配接器會公開泛型作業,例如 ExecuteNonQueryExecuteReaderExecuteScalar。 您可以使用這些作業在 Oracle 資料庫上執行任何 SQL 語句。 這些作業會根據您為 SQL 語句取得的回應類型而有所不同。 如需配接器如何支持這些作業的詳細資訊,請參閱 ExecuteNonQuery、ExecuteReader 和 ExecuteScalar 作業的支援

本主題示範如何使用 Oracle E-Business 配接器搭配 BizTalk Server 來執行 ExecuteReader 作業。 您可以遵循本主題中所述的相同程式集來執行 ExecuteNonQueryExecuteScalar 作業。

如何在 Oracle 資料庫上叫用 ExecuteReader 作業

搭配使用 Oracle E-Business 配接器搭配 BizTalk Server 在 Oracle 資料庫上執行作業,牽涉到建立 Oracle E-Business Suite 應用程式的建置組塊中所述的程式性工作。 若要在 Oracle 資料庫上叫用 ExecuteReader 作業,這些工作如下:

  1. 建立 BizTalk 專案,併產生 ExecuteReader 作業的架構。

  2. 在 BizTalk 專案中建立訊息,以便從 Oracle 資料庫傳送和接收訊息。

  3. 建立協調流程以叫用 Oracle 資料庫的作業。

  4. 建置和部署 BizTalk 專案。

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

  6. 啟動 BizTalk 應用程式。

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

產生架構

本主題示範如何使用 Oracle E-Business 配接器搭配 BizTalk Server,在 Oracle 資料庫上叫用 ExecuteReader 作業。 ExecuteReader 作業會接受任何 SQL 語句做為參數,並將作業的結果集當做 DataSet 的數位傳回。 針對本主題,我們會使用 ExecuteReader 作業在 ACCOUNTACTIVITY 資料表上執行 SELECT 語句。 ACCOUNTACTIVITY 數據表是藉由執行範例所提供的腳本來建立。 如需腳本的詳細資訊,請參閱 範例

為了示範如何叫用 ExecuteReader 作業,會產生 ExecuteReader 作業的架構。 您必須建立 BizTalk 專案,並使用取用配接器服務載入宏來產生架構。 如需如何產生架構的詳細資訊,請參閱 在Visual Studio中擷取 Oracle E-Business Suite Operations 的元數據

定義訊息和訊息類型

您稍早產生的架構描述協調流程中訊息所需的「類型」。 訊息通常是變數,也就是對應架構所定義的類型。 您現在必須建立協調流程的訊息,並將其連結至您在上一個步驟中產生的架構。

  1. 將協調流程新增至 BizTalk 專案。 從 方案總管,以滑鼠右鍵按兩下 BizTalk 項目名稱,指向 [新增],然後按兩下 [新增專案]。 輸入 BizTalk 協調流程的名稱,然後按兩下 [ 新增]。

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

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

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

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

    使用 作法
    識別碼 輸入 Request
    訊息類型 從下拉式清單中,展開 [ 架構],然後選取 [Execute_Reader.GenericOperation.ExecuteReader],其中 Execute_Reader 是您 BizTalk 專案的名稱。 GenericOperation針對 ExecuteReader 作業產生的架構。
  6. 重複步驟 2 以建立新的訊息。 在新訊息的 [ 屬性 ] 窗格中,執行下列動作:

    使用 作法
    識別碼 輸入 Response
    訊息類型 從下拉式清單中,展開 [ 架構],然後選取 [Execute_Reader.GenericOperation.ExecuteReaderResponse]。

設定協調流程

您必須建立 BizTalk 協調流程,才能使用 BizTalk Server 在 Oracle 資料庫上執行作業。 在此協調流程中,您會在定義的接收位置卸除要求訊息。 Oracle E-Business 配接器會取用此訊息,並將其傳遞至 Oracle 資料庫。 Oracle 資料庫的回應會儲存至另一個位置。 叫用泛型作業的一般協調流程,例如 ExecuteReader 會包含:

  • 傳送和接收圖形,以從 Oracle 資料庫傳送和接收訊息。

  • 雙向接收埠,可從 Oracle 資料庫傳送和接收訊息。

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

    叫用 ExecuteReader 作業的範例協調流程如下所示:

    叫用 ExecuteReader 作業的協調流程

新增訊息圖形

您必須為每個訊息圖形設定下列屬性。 Shape 數據行中所列的名稱會對應至如剛才提及協調流程中顯示的訊息圖形名稱。

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

新增埠

針對每個邏輯埠,設定下表中的屬性。 [埠] 資料行中所列的名稱會對應至協調流程中顯示的埠名稱。

連接埠 屬性
MessageIn - 將 標識碼 設定為 MessageIn
- 將 類型 設定為 MessageInType
- 將 通訊模式 設定為 單向
- 將 通訊方向 設定為 接收
LOBPort - 將 識別碼 設定為 LOBPort
- 將 Type 設定為 LOBPortType
- 將 通訊模式 設定為 Request-Response
- 將 通訊方向 設定為 Send-Receive
ResponseOut - 將 標識碼 設定為 ResponseOut
- 將 類型 設定為 ResponseOutType
- 將 通訊模式 設定為 單向
- 設定要傳送的通訊方向

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

下表指定屬性值,以指定動作圖形的訊息,以及將訊息連結至埠。 Shape 數據行中列出的名稱會對應至稍早協調流程圖中顯示的訊息圖形名稱。

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

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

圖形 屬性
ReceiveMessage - 將 訊息 設定為 要求
- 將 作業 設定為 MessageIn.Exec_Reader.Request
SendMessage - 將 訊息 設定為 要求
- 將 作業 設定為 LOBPort.Exec_Reader.Request
ReceiveResponse - 將 訊息 設定為 回應
- 將 作業 設定為 LOBPort.Exec_Reader.Response
SendResponse - 將 訊息 設定為 回應
- 將 作業 設定為 ResponseOut.Exec_Reader.Request

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

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

設定 BizTalk 應用程式

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

設定應用程式牽涉到:

  • 選取應用程式的主機。

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

    • 定義硬碟上的位置,以及您將卸除要求訊息的對應檔案埠。 BizTalk 協調流程會取用要求訊息,並將其傳送至 Oracle 資料庫。

    • 定義硬碟上的位置和對應的檔案埠,BizTalk 協調流程會卸除包含 Oracle 資料庫回應的回應訊息。

    • 定義實體 WCF-Custom 或 WCF-OracleEBS 傳送埠,以將訊息傳送至 Oracle 資料庫。 您也必須在傳送埠中指定動作。 如需如何建立傳送埠的詳細資訊,請參閱 手動設定實體埠系結至 Oracle E-Business 配接器

      重要

      作為泛型作業的一部分,如果您在對象上執行作業,例如預存程式、函式、介面數據表或屬於 Oracle E-Business Suite 應用程式的介面檢視,您必須指定必要的系結屬性來設定應用程式內容。 如需設定應用程式內容的詳細資訊,請參閱 設定應用程式內容

      您可以藉由指定系結屬性或設定 Oracle E-Business 配接器所公開的訊息內容屬性,來設定應用程式內容。 如需如何設定系結屬性的指示,請參閱 設定 Oracle E-Business Suite 的系結屬性。 如需如何使用訊息內容屬性設定應用程式內容的指示,請參閱 在 Oracle E-Business Suite 中使用訊息內容屬性設定應用程式內容

      注意

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

啟動應用程式

在 Oracle 資料庫上叫用 ExecuteReader 作業之前,您必須先啟動 BizTalk 應用程式。 如需啟動 BizTalk 應用程式的指示,請參閱 如何啟動協調流程

在此階段,請確定:

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

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

  • WCF-Custom 或 WCF-OracleEBS 傳送埠,以將訊息傳送至 Oracle 資料庫正在執行。

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

執行作業

執行應用程式之後,您必須將要求訊息卸除至 FILE 接收位置。 要求訊息的架構必須符合您稍早產生的 ExecuteReader 作業架構。 例如,使用 ExecuteReader 作業執行 SELECT 語句的要求訊息為:

<ExecuteReader xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/GenericOperation/">  
  <Query>SELECT * FROM ACCOUNTACTIVITY</Query>  
</ExecuteReader>  

如需使用 Oracle E-Business 配接器叫用 ExecuteReader 作業的要求訊息架構的詳細資訊,請參閱 ExecuteReader、ExecuteScalar 和 ExecuteNonQuery 作業的訊息架構。

協調流程會取用訊息,並將其傳送至 Oracle 資料庫。 Oracle 資料庫的回應會儲存在定義為協調流程一部分的其他 FILE 位置。 ExecuteReader 作業的回應包含作為 DataSet 的結果集。 例如,上述要求訊息的 Oracle 資料庫回應如下:

<?xml version="1.0" encoding="utf-8" ?>   
<ExecuteReaderResponse xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/GenericOperation/">  
  <ExecuteReaderResult>  
    <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  
      <xs:element msdata:IsDataSet="true" name="NewDataSet">  
        <xs:complexType>  
          <xs:sequence>  
            <xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable">  
              <xs:complexType>  
                <xs:sequence>  
                  <xs:element minOccurs="0" name="TID" type="xs:decimal" />   
                  <xs:element minOccurs="0" name="ACCOUNT" type="xs:decimal" />   
                  <xs:element minOccurs="0" name="AMOUNT" type="xs:decimal" />   
                  <xs:element minOccurs="0" name="DESCRIPTION" type="xs:string" />   
                  <xs:element minOccurs="0" name="TRANSDATE" type="xs:dateTime" />   
                  <xs:element minOccurs="0" name="PROCESSED" type="xs:string" />   
                </xs:sequence>  
              </xs:complexType>  
            </xs:element>  
          </xs:sequence>  
        </xs:complexType>  
      </xs:element>  
    </xs:schema>  
    <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">  
      <NewDataSet xmlns="">  
        <NewTable>  
          <TID>1</TID>   
          <ACCOUNT>100001</ACCOUNT>   
          <AMOUNT>500</AMOUNT>   
          <DESCRIPTION />   
          <TRANSDATE>2008-08-04T13:04:20</TRANSDATE>   
          <PROCESSED>n</PROCESSED>   
        </NewTable>  
        <NewTable>  
          ......  
          ......  
        </NewTable>  
        ......  
        ......  
      </NewDataSet>  
    </diffgr:diffgram>  
  </ExecuteReaderResult>  
</ExecuteReaderResponse>  

最佳做法

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

另請參閱

使用 Oracle E-Business Suite 配接器開發 BizTalk 應用程式