共用方式為


使用 SELECT 語句輪詢 Oracle E-Business Suite

您可以設定 Oracle E-Business 配接器,以使用 SELECT 語句來持續輪詢 Oracle E-Business Suite 中的介面資料表、介面檢視、資料表和檢視,以接收週期性資料變更訊息。 您可以將 SELECT 語句指定為配接器定期執行的輪詢語句,以輪詢 Oracle E-Business Suite。 您也可以指定輪詢後 PL/SQL 程式碼區塊,配接器在執行輪詢語句之後執行。

若要啟用輪詢,您必須在 WCF-Custom 或 WCF-OracleEBS 接收埠上指定特定系結屬性。 如需配接器如何支援輪詢的詳細資訊,請參閱 使用輪詢支援輸入呼叫。 如需輪詢作業之 SOAP 訊息結構的相關資訊,請參閱 輪詢作業的訊息架構

使用 Oracle E-Business Suite 配接器系結屬性設定輪詢作業

下表摘要說明您用來設定配接器以接收資料變更訊息的 Oracle E-Business 配接器系結屬性。 您必須在 BizTalk Server 管理主控台中設定接收埠時,指定這些系結屬性。

Binding 屬性 Description
InboundOperationType 指定您是否要執行 輪詢通知 輸入作業。 預設值為 輪詢
PolledDataAvailableStatement 指定配接器執行的 SQL 語句,以判斷是否有任何資料可供輪詢。 只有當記錄可用時,您為 PollingInput 系結屬性指定的 SELECT 語句才會執行。
PollingInterval 指定 Oracle E-Business 配接器針對 PolledDataAvailableStatement 系結屬性指定的語句,以秒為單位指定間隔。 預設值為 30 秒。 輪詢間隔會決定連續輪詢之間的時間間隔。 如果語句是在指定的間隔內執行,配接器會睡眠間隔中的剩餘時間。
PollingInput 指定輪詢語句。 若要使用 SELECT 語句輪詢,您必須為此系結屬性指定 SELECT 語句。 預設值是 null。

您必須指定 PollingInput 系結屬性的值,才能啟用輪詢。 只有在有資料可供輪詢時,才會執行輪詢語句,這是 由 PolledDataAvailableStatement 系結屬性所決定。
PollingAction 指定輪詢作業的動作。 您可以從您使用取用配接器服務增益集為作業產生的中繼資料,判斷特定作業的輪詢動作。
PostPollStatement 指定執行 PollingInput 系結屬性所指定語句之後所執行的語句區塊。
PollWhileDataFound 指定如果輪詢資料表中有資料可用,Oracle E-Business 配接器是否忽略輪詢間隔,並持續執行輪詢語句。 如果資料表中沒有可用的資料,配接器會還原為在指定的輪詢間隔執行輪詢語句。 預設值為 false。

如需這些屬性的更完整描述,請參閱 閱讀 BizTalk Adapter for Oracle E-Business Suite 系結屬性。 如需如何使用 Oracle E-Business 配接器輪詢 Oracle 資料庫的完整描述,請參閱進一步閱讀。

本主題示範輪詢的方式

在本主題中,若要示範 Oracle E-Business 配接器如何支援使用 SELECT 語句接收資料變更訊息、建立 BizTalk 專案,並針對您要輪詢的資料表產生 輪詢 作業的架構。 在本主題中,我們會針對應用程式物件庫應用程式中MS_SAMPLE_EMPLOYEE介面資料表的輪詢作業產生架構。 當您執行範例提供的 create_apps_artifacts.sql 腳本,以在 Oracle E-Business Suite 中建立這些物件時,就會建立此資料表。

接下來,我們將在 BizTalk Server 中使用以內容為基礎的路由 (CBR) ,以接收來自MS_SAMPLE_EMPLOYEE介面資料表輪詢訊息的接收埠來設定應用程式,然後將它路由傳送至傳送埠。 在此情況下,我們會在傳送埠上建立篩選,以檢查指定的接收位置,並將訊息路由傳送至傳送埠。

為了示範輪詢作業,我們會執行下列動作:

  • 指定 PolledDataAvailableStatement 系結屬性的 SELECT 語句,以判斷要輪詢的介面資料表 (MS_SAMPLE_EMPLOYEE) 具有任何資料的位置。 在此範例中,您可以將這個系結屬性設定為:

    SELECT COUNT (*) FROM MS_SAMPLE_EMPLOYEE  
    

    這可確保配接器只有在MS_SAMPLE_EMPLOYEE介面資料表有一些記錄時,才會執行輪詢語句。

  • 指定 PollingInput 系結屬性的 SELECT 語句。 此語句會擷取MS_SAMPLE_EMPLOYEE介面資料表中的所有資料列。 在此範例中,您可以將這個系結屬性設定為:

    SELECT * FROM MS_SAMPLE_EMPLOYEE FOR UPDATE  
    

    注意

    如需 SELECT 語句中使用的 FOR UPDATE 子句相關資訊,請參閱 使用 SELECT 語句輪詢 Oracle E-Business Suite

  • 將 DELETE 子句指定為 PostPollStatement 系結屬性的一部分。 此語句會從 MS_SAMPLE_EMPLOYEE 介面資料表中刪除所有資料。 在此範例中,您可以將這個系結屬性設定為:

    DELETE FROM MS_SAMPLE_EMPLOYEE  
    

    一旦發生這種情況,下次執行 針對 PollingInput 指定的語句時,它將不會擷取任何資料。

  • 在將更多資料新增至 MS_SAMPLE_EMPLOYEE 介面資料表之前,您將不會收到任何輪詢訊息。 因此,您必須使用新的記錄重新填入MS_SAMPLE_EMPLOYEE介面資料表。 您可以執行範例所提供的 insert_apps_data.sql 腳本來執行此動作。 執行此腳本之後,下一個輪詢作業會擷取插入資料表的新記錄。

如何從 Oracle E-Business Suite 接收資料變更訊息

使用 Oracle E-Business 配接器搭配 BizTalk Server在 Oracle 資料庫上執行作業,牽涉到建立 Oracle E-Business Suite 應用程式的建置組塊中所述的下列程式工作。 若要使用 SELECT 語句設定配接器來輪詢 Oracle E-Business Suite,這些工作如下:

  1. 建立 BizTalk 專案,並針對您要輪詢的介面資料表產生 輪詢 作業的架構。

  2. 建置和部署 BizTalk 專案。

  3. 藉由建立接收和傳送埠來設定 BizTalk 應用程式。 此外,在傳送埠上新增篩選,使其檢查接收埠中指定的接收位置,並將輪詢訊息路由傳送至傳送埠。

    重要

    針對輸入輪詢案例,您必須一律設定單向接收埠。 輸入作業不支援雙向接收埠。

  4. 啟動 BizTalk 應用程式。

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

以本主題為基礎的範例

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

產生架構

您必須在應用程式物件庫應用程式中MS_SAMPLE_EMPLOYEE介面資料表上產生輪詢作業的架構。 使用取用配接器服務增益集產生架構時,請執行下列工作。

  • 選取合約類型作為 服務 (輸入作業)

  • 在MS_SAMPLE_EMPLOYEE介面資料表上產生 輪詢 作業的架構。 您可以從 [應用程式型檢視 ] 節點或 [ 成品型檢視 ] 節點選取作業和介面資料表。

    如需如何產生架構的詳細資訊,請參閱 流覽、搜尋及取得 Oracle E-Business Suite 作業的中繼資料

建置和部署 BizTalk 專案

您現在必須建置 BizTalk 解決方案,並將其部署至BizTalk Server。 如需將解決方案部署至BizTalk Server的詳細資訊,請參閱將 BizTalk 元件從 Visual Studio 部署至 BizTalk 應用程式

設定 BizTalk 應用程式

部署 BizTalk 專案之後,應用程式會列在 [BizTalk Server管理主控台] 中的 [應用程式] 節點底下。 您必須使用 BizTalk Server 管理主控台來設定應用程式。 在設定應用程式時,您必須在應用程式中建立接收埠和傳送埠,然後將篩選新增至傳送埠,讓接收埠中的所有訊息都會路由傳送至傳送埠。

設定應用程式牽涉到:

  • 選取應用程式的主機。

  • 建立接收和傳送埠。

建立接收埠

您必須建立 WCF-Custom 或 WCF-OracleEBS 單向接收埠,以使用 PollingInput 系結屬性指定的 SELECT 語句輪詢 Oracle。 如需如何建立接收埠的詳細資訊,請參閱 手動設定實體埠系結至 Oracle E-Business 配接器。 建立接收埠時,請確定您指定下列系結屬性。

輪詢

Binding 屬性
InboundOperationType 將此設定為 [輪詢]。
PolledDataAvailableStatement 在此範例中,將此系結屬性設定為:

SELECT COUNT (*) FROM MS_SAMPLE_EMPLOYEE
PollingAction 從MS_SAMPLE_EMPLOYEE介面資料表上輪詢作業所產生的架構擷取輪 動作。 在此範例中,將此系結屬性設定為 InterfaceTables/Poll/FND/APPS/MS_SAMPLE_EMPLOYEE
PollingInput 針對這個系結屬性,請指定 SELECT 語句,以從MS_SAMPLE_EMPLOYEE介面資料表擷取所有記錄。 在此範例中,將此系結屬性設定為:

SELECT * FROM MS_SAMPLE_EMPLOYEE FOR UPDATE
PostPollStatement 指定輪詢後語句,以刪除MS_SAMPLE_EMPLOYEE介面資料表中的所有資料。 在此範例中,將此系結屬性設定為:

DELETE FROM MS_SAMPLE_EMPLOYEE

用於設定應用程式內容

如果您要在 Oracle E-Business Suite 成品上執行作業,您必須指定適當系結屬性的值,才能設定應用程式內容。 如需設定應用程式內容所需的應用程式內容和系結屬性的詳細資訊,請參閱 設定應用程式內容

在此範例中,請為 oracleUserNameoraclePasswordoracleEBSResponsibility 系結屬性指定適當的值。

注意

建議您在使用 Oracle E-Business 配接器執行輸入作業時,設定交易隔離等級和交易逾時。 您可以在設定接收埠時新增服務行為來執行此動作。 如需如何新增服務行為的指示,請參閱 使用 Oracle E-Business Suite 設定交易隔離等級和交易逾時

建立傳送埠

定義硬碟上的位置,並建立對應的 FILE 傳送埠,BizTalk Server會從 Oracle 卸載訊息。 這些訊息將會回應您為接收埠指定的輪詢語句。 如需如何建立傳送埠的詳細資訊,請參閱 手動設定實體埠系結至 Oracle E-Business 配接器

您也必須在傳送埠上新增篩選,以從接收位置路由訊息。 若要將篩選新增至傳送埠:

  1. 按兩下傳送埠以開啟 [ 傳送埠內容] 對話方塊。

  2. 在 [ 傳送埠屬性 ] 對話方塊中,按一下 [ 篩選] 索引標籤。

  3. 指定下列值:

    • 在 [ 屬性] 清單中,按一下 [BTS]。ReceivePortName

    • [操作員 ] 清單中,按一下 ==

    • 在 [ 值] 欄位中,指定接收埠名稱。

  4. 在 [ 傳送埠內容] 對話方塊中,按一下 [確定]。

啟動應用程式

您必須啟動 BizTalk 應用程式來輪詢 Oracle E-Business Suite。 如需啟動 BizTalk 應用程式的指示,請參閱 如何啟動協調流程

在此階段,請確定:

  • WCF-Custom 或 WCF-OracleEBS 單向接收埠,它會使用 針對 PollingInput 系結屬性指定的 SELECT 語句輪詢 Oracle。

  • 從 Oracle 資料庫接收訊息的 FILE 傳送埠正在執行。

執行作業

執行應用程式之後,會以相同的循序執行下列一組動作:

  • 配接器會執行 PolledDataAvailableStatement ,傳回正值,指出配接器執行 PollingInput 系結屬性所指定的語句。

  • 配接器會執行 PollingInput 系結屬性的 SELECT 語句,並傳回MS_SAMPLE_EMPLOYEE介面資料表中的所有資料列。 Oracle E-Business Suite 的回應如下所示:

    <?xml version="1.0" encoding="utf-8" ?>   
    <Poll xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/InterfaceTables/FND/APPS/MS_SAMPLE_EMPLOYEE">   
      <DATA>   
        <SelectRecord xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/TableViewRecord/APPS/MS_SAMPLE_EMPLOYEE">   
         <EMP_NO>10002</EMP_NO>   
         <NAME>JEFF PRICE</NAME>   
         <DESIGNATION>MANAGER</DESIGNATION>   
         <SALARY>25000</SALARY>   
         <JOIN_DATE>2007-12-15T00:00:00</JOIN_DATE>   
        </SelectRecord>   
        <SelectRecord xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/TableViewRecord/APPS/MS_SAMPLE_EMPLOYEE">   
         <EMP_NO>10003</EMP_NO>   
         <NAME>DON HALL</NAME>   
         <DESIGNATION>ACCOUNTANT</DESIGNATION>   
         <SALARY>12000</SALARY>   
         <JOIN_DATE>2005-10-29T00:00:00</JOIN_DATE>   
        </SelectRecord>   
        …        
        <SelectRecord xmlns="http://schemas.microsoft.com/OracleEBS/2008/05/TableViewRecord/APPS/MS_SAMPLE_EMPLOYEE">   
         …   
        </SelectRecord>   
        …   
      </DATA>   
    </Poll>  
    
  • 配接器會執行輪詢後語句,這會從MS_SAMPLE_EMPLOYEE介面資料表中刪除所有資料。

  • 輪詢間隔之後,配接器會再次執行 PolledDataAvailableStatement。 因為MS_SAMPLE_EMPLOYEE介面資料表現在沒有記錄, 所以 PolledDataAvailableStatement 不會傳回正值,因此配接器不會執行 針對 PollingInput 系結屬性指定的語句。 因此,配接器用戶端不會收到任何輪詢訊息。

  • 配接器用戶端將不會再取得任何輪詢訊息,直到某些記錄明確插入MS_SAMPLE_EMPLOYEE介面資料表。 若要插入更多記錄,您可以執行範例所提供的 insert_apps_data.sql 腳本。 執行此腳本之後,下次執行 PolledDataAvailableStatement 時,它會傳回正值。 因此,配接器會再次執行輪詢語句和配接器用戶端接收輪詢訊息。

注意

Oracle E-Business 配接器會繼續輪詢,直到您從 BizTalk Server 管理主控台明確停用接收埠為止。

最佳做法

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

另請參閱

使用 BizTalk Server 輪詢 Oracle E-Business Suite