使用 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,這些工作如下:
建立 BizTalk 專案,並針對您要輪詢的介面資料表產生 輪詢 作業的架構。
建置和部署 BizTalk 專案。
藉由建立接收和傳送埠來設定 BizTalk 應用程式。 此外,在傳送埠上新增篩選,使其檢查接收埠中指定的接收位置,並將輪詢訊息路由傳送至傳送埠。
重要
針對輸入輪詢案例,您必須一律設定單向接收埠。 輸入作業不支援雙向接收埠。
啟動 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 成品上執行作業,您必須指定適當系結屬性的值,才能設定應用程式內容。 如需設定應用程式內容所需的應用程式內容和系結屬性的詳細資訊,請參閱 設定應用程式內容。
在此範例中,請為 oracleUserName、 oraclePassword和 oracleEBSResponsibility 系結屬性指定適當的值。
注意
建議您在使用 Oracle E-Business 配接器執行輸入作業時,設定交易隔離等級和交易逾時。 您可以在設定接收埠時新增服務行為來執行此動作。 如需如何新增服務行為的指示,請參閱 使用 Oracle E-Business Suite 設定交易隔離等級和交易逾時。
建立傳送埠
定義硬碟上的位置,並建立對應的 FILE 傳送埠,BizTalk Server會從 Oracle 卸載訊息。 這些訊息將會回應您為接收埠指定的輪詢語句。 如需如何建立傳送埠的詳細資訊,請參閱 手動設定實體埠系結至 Oracle E-Business 配接器。
您也必須在傳送埠上新增篩選,以從接收位置路由訊息。 若要將篩選新增至傳送埠:
按兩下傳送埠以開啟 [ 傳送埠內容] 對話方塊。
在 [ 傳送埠屬性 ] 對話方塊中,按一下 [ 篩選] 索引標籤。
指定下列值:
在 [ 屬性] 清單中,按一下 [BTS]。ReceivePortName。
在 [操作員 ] 清單中,按一下 == 。
在 [ 值] 欄位中,指定接收埠名稱。
在 [ 傳送埠內容] 對話方塊中,按一下 [確定]。
啟動應用程式
您必須啟動 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 重複使用配接器系結。