SELECT ステートメントを使用して Oracle E-Business Suite をポーリングする
SELECT ステートメントを使用して Oracle E-Business Suite のインターフェイス テーブル、インターフェイス ビュー、テーブル、ビューを継続的にポーリングすることで、定期的なデータ変更メッセージを受信するように Oracle E-Business アダプターを構成できます。 SELECT ステートメントは、Oracle E-Business Suite をポーリングするためにアダプターが定期的に実行するポーリング ステートメントとして指定できます。 ポーリングステートメントの実行後にアダプターが実行するポーリング後の PL/SQL コード ブロックを指定することもできます。
ポーリングを有効にするには、WCF-Custom または受信ポートで特定のバインド プロパティ WCF-OracleEBS 指定する必要があります。 アダプターがポーリングをサポートする方法の詳細については、「ポーリングを 使用した受信呼び出しのサポート」を参照してください。 ポーリング操作用の SOAP メッセージの構造については、「ポーリング操作の メッセージ スキーマ」を参照してください。
Oracle E-Business Suite アダプター バインド プロパティを使用したポーリング操作の構成
次の表は、データ変更メッセージを受信するようにアダプターを構成するために使用する Oracle E-Business アダプター バインド プロパティをまとめたものです。 管理コンソールで受信ポートを構成するときに、これらのバインディング プロパティBizTalk Server指定する必要があります。
Binding プロパティ | 説明 |
---|---|
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 Binding Properties」を参照してください。 Oracle E-Business アダプターを使用して Oracle データベースをポーリングする方法の詳細については、詳細を参照してください。
このトピックでポーリングを示す方法
このトピックでは、Oracle E-Business アダプターが SELECT ステートメントを使用してデータ変更メッセージの受信をサポートする方法を示すために、BizTalk プロジェクトを作成し、ポーリングするテーブルの ポーリング 操作のスキーマを生成します。 このトピックでは、アプリケーション オブジェクト ライブラリ アプリケーションのMS_SAMPLE_EMPLOYEE インターフェイス テーブルの Poll 操作のスキーマを生成します。 このテーブルは、サンプルで提供されている 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
Note
SELECT ステートメントで使用される FOR UPDATE 句の詳細については、「SELECT ステートメントを 使用して Oracle E-Business Suite をポーリングする」を参照してください。
PostPollStatement バインド プロパティの一部として DELETE ステートメントを指定します。 このステートメントは、インターフェイス テーブルからすべてのデータMS_SAMPLE_EMPLOYEE削除します。 この例では、このバインディング プロパティを次のように設定できます。
DELETE FROM MS_SAMPLE_EMPLOYEE
これが発生すると、 次に PollingInput に指定されたステートメントが実行されると、データはフェッチされません。
MS_SAMPLE_EMPLOYEE インターフェイス テーブルに追加されたデータが増えるまで、ポーリング メッセージは取得されません。 そのため、MS_SAMPLE_EMPLOYEE インターフェイス テーブルに新しいレコードを設定し直す必要があります。 これを行うには、サンプルに付属のinsert_apps_data.sql スクリプトを実行します。 このスクリプトを実行すると、次のポーリング操作によって、テーブルに挿入された新しいレコードがフェッチされます。
Oracle E-Business Suite からデータ変更メッセージを受信する方法
BizTalk Serverで Oracle E-Business アダプターを使用して Oracle データベースに対して操作を実行するには、「Oracle E-Business Suite アプリケーションを作成するための構成要素」で説明されている次の手順に従います。 SELECT ステートメントを使用して Oracle E-Business Suite をポーリングするようにアダプターを構成するには、次のタスクを実行します。
BizTalk プロジェクトを作成し、ポーリングするインターフェイス テーブルの Poll 操作のスキーマを生成します。
BizTalk プロジェクトをビルドして展開します。
受信ポートと送信ポートを作成して BizTalk アプリケーションを構成します。 さらに、送信ポートにフィルターを追加して、受信ポートで指定された受信場所を確認し、ポーリング メッセージが送信ポートにルーティングされるようにします。
重要
受信ポーリングシナリオでは、常に一方向の受信ポートを構成する必要があります。 双方向の受信ポートは、受信操作ではサポートされていません。
BizTalk アプリケーションを起動します。
このトピックでは、これらのタスクを実行する手順について説明します。
このトピックに基づくサンプル
このトピックに基づくサンプルの PollingUsingSelectStatement は、BizTalk アダプター パックでも提供されています。 詳細については、「サンプル」を参照してください。
スキーマの生成
アプリケーション オブジェクト ライブラリ アプリケーションのMS_SAMPLE_EMPLOYEE インターフェイス テーブルで Poll 操作のスキーマを生成する必要があります。 アダプター サービス アドインを使用してスキーマを生成するときに、次のタスクを実行します。
コントラクトの種類を [サービス (受信操作)] として選択します。
MS_SAMPLE_EMPLOYEE インターフェイス テーブルで Poll 操作のスキーマを生成します。 操作とインターフェイス テーブルは、[ アプリケーション ベースのビュー ] ノードまたは [ 成果物ベースのビュー ] ノードから選択できます。
スキーマを生成する方法の詳細については、「 Oracle E-Business Suite Operations のメタデータの参照、検索、取得」を参照してください。
BizTalk プロジェクトのビルドと展開
BizTalk ソリューションをビルドし、BizTalk Serverに展開する必要があります。 ソリューションをBizTalk Serverに展開する方法については、「Visual Studio から BizTalk アプリケーションへの BizTalk アセンブリの展開」を参照してください。
BizTalk アプリケーションの構成
BizTalk プロジェクトを展開すると、BizTalk Server管理コンソールの [アプリケーション] ノードの下にアプリケーションが一覧表示されます。 アプリケーションを構成するには、BizTalk Server管理コンソールを使用する必要があります。 アプリケーションの構成の一環として、アプリケーションで受信ポートと送信ポートを作成し、受信ポートからのすべてのメッセージが送信ポートにルーティングされるように、送信ポートにフィルターを追加する必要があります。
アプリケーションの構成には、次の作業が含まれます。
アプリケーションのホストの選択。
受信ポートと送信ポートの作成。
受信ポートの作成
WCF-Custom または一方向の受信ポート WCF-OracleEBS 作成する必要があります。このポートは、 PollingInput バインド プロパティに指定された SELECT ステートメントを使用して Oracle をポーリングします。 受信ポートを作成する方法については、「 Oracle E-Business Adapter への物理ポート バインディングの手動構成」を参照してください。 受信ポートを作成するときに、次のバインド プロパティを指定してください。
ポーリング用
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 バインディング プロパティに適切な値を指定します。
Note
Oracle E-Business アダプターを使用して受信操作を実行するときに、トランザクション分離レベルとトランザクション タイムアウトを構成することをお勧めします。 これを行うには、受信ポートの構成中にサービスの動作を追加します。 サービスの動作を追加する方法については、「 Oracle E-Business Suite でトランザクション分離レベルとトランザクション タイムアウトを構成する」を参照してください。
送信ポートの作成
ハード ディスク上の場所を定義し、対応する FILE 送信ポートを作成BizTalk Server、Oracle からメッセージを削除します。 これらのメッセージは、受信ポートに指定したポーリング ステートメントに応答します。 送信ポートを作成する方法については、「 Oracle E-Business Adapter への物理ポート バインディングの手動構成」を参照してください。
受信場所からメッセージをルーティングするには、送信ポートにフィルターを追加する必要もあります。 送信ポートにフィルターを追加するには:
送信ポートをダブルクリックして、[送信ポートの プロパティ ] ダイアログ ボックスを開きます。
[ 送信ポートのプロパティ ] ダイアログ ボックスで、[ フィルター ] タブをクリックします。
次の値を指定します。
[ プロパティ ] ボックスの一覧で [BTS] をクリックします 。ReceivePortName。
[ 演算子 ] ボックスの一覧で をクリックします ==。
[ 値 ] フィールドで、受信ポート名を指定します。
[ 送信ポートのプロパティ ] ダイアログ ボックスで、[ OK] をクリックします。
アプリケーションの起動
Oracle E-Business Suite をポーリングするには、BizTalk アプリケーションを起動する必要があります。 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>
アダプターは、インターフェイス テーブルからすべてのデータを削除する post-poll ステートメントMS_SAMPLE_EMPLOYEE実行します。
ポーリング間隔の後、アダプターは再び PolledDataAvailableStatement を実行します。 MS_SAMPLE_EMPLOYEE インターフェイス テーブルにはレコードがないため、 PolledDataAvailableStatement は正の値を返さないため、アダプターは PollingInput バインド プロパティに指定されたステートメントを実行しません。 その結果、アダプター クライアントはポーリング メッセージを受け取りません。
一部のレコードがMS_SAMPLE_EMPLOYEE インターフェイス テーブルに明示的に挿入されるまで、アダプター クライアントはそれ以上ポーリング メッセージを取得しません。 さらにレコードを挿入するには、サンプルに付属の insert_apps_data.sql スクリプトを実行します。 このスクリプトを実行すると、次 に PolledDataAvailableStatement が実行されると、正の値が返されます。 その結果、アダプターはポーリング ステートメントを実行し、アダプター クライアントは再度ポーリング メッセージを受信します。
Note
Oracle E-Business アダプターは、BizTalk Server管理コンソールから受信ポートを明示的に無効にするまでポーリングを続行します。
ベスト プラクティス
BizTalk プロジェクトを展開して構成したら、バインド ファイルと呼ばれる XML ファイルに構成設定をエクスポートできます。 バインド ファイルを生成したら、送信ポートと受信ポートを作成する必要がないように、ファイルから構成設定をインポートできます。 バインド ファイルの詳細については、「 Oracle E-Business Suite でアダプター バインドを再利用する」を参照してください。