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 管理コンソールで受信ポートを構成するときに、これらのバインド プロパティを指定する必要があります。
バインディングプロパティ | 説明 |
---|---|
InboundOperationType | ポーリングまたは通知の受信操作を実行するかどうかを指定します。 既定値は ポーリングです。 |
ポーリングデータの利用可能声明 | ポーリングに使用できるデータがあるかどうかを判断するためにアダプターが実行する SQL ステートメントを指定します。 レコードが使用可能な場合にのみ、 PollingInput バインディング プロパティに指定した SELECT ステートメントが実行されます。 |
PollingInterval | Oracle E-Business アダプターが PolledDataAvailableStatement バインディング プロパティに指定されたステートメントを実行する間隔を秒単位で指定します。 既定値は 30 秒です。 ポーリング間隔は、連続するポーリング間の時間間隔を決定します。 ステートメントが指定された期間内に実行された場合、アダプターはその間隔の残りの時間スリープ状態になります。 |
PollingInput | ポーリング ステートメントを指定します。 SELECT ステートメントを使用してポーリングするには、このバインド プロパティに SELECT ステートメントを指定する必要があります。 既定値は null です。 ポーリングを有効にするには、 PollingInput バインド プロパティの値を指定する必要があります。 ポーリング ステートメントは、 PolledDataAvailableStatement バインディング プロパティによって決定されるポーリングに使用できるデータがある場合にのみ実行されます。 |
PollingAction | ポーリング操作のアクションを指定します。 アダプター サービス アドインを使用して、操作に対して生成したメタデータから、特定の操作のポーリング アクションを決定できます。 |
投票後声明 | 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 インターフェイス テーブルに対するポーリング操作のスキーマを生成します。 このテーブルは、サンプルで提供されている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 のポーリングを参照してください。
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 プロジェクトを作成し、ポーリングするインターフェイス テーブルの ポーリング 操作のスキーマを生成します。
BizTalk プロジェクトをビルドして展開します。
受信ポートと送信ポートを作成して BizTalk アプリケーションを構成します。 さらに、送信ポートにフィルターを追加して、受信ポートで指定された受信場所を確認し、ポーリング メッセージが送信ポートにルーティングされるようにします。
Von Bedeutung
受信ポーリングのシナリオでは、常に一方向の受信ポートを構成する必要があります。 双方向の受信ポートは、受信操作ではサポートされていません。
BizTalk アプリケーションを起動します。
このトピックでは、これらのタスクを実行する手順について説明します。
このトピックに基づくサンプル
このトピックに基づくサンプル PollingUsingSelectStatement も BizTalk アダプター パックで提供されています。 詳細については、「 サンプル」を参照してください。
スキーマの生成
アプリケーション オブジェクト ライブラリ アプリケーションのMS_SAMPLE_EMPLOYEE インターフェイス テーブルで Poll 操作のスキーマを生成する必要があります。 Consume Adapter Service アドインを使用してスキーマを生成するときに、次のタスクを実行します。
コントラクトの種類として サービス (受信操作) を選択します。
MS_SAMPLE_EMPLOYEE インターフェイス テーブルに対する ポーリング 操作のスキーマを生成します。 操作とインターフェイス テーブルは、 Application-Based ビュー ノードまたは 成果物 -Based ビュー ノードから選択できます。
スキーマを生成する方法の詳細については、「 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 アダプターへの物理ポート バインドの手動構成」を参照してください。 受信ポートを作成するときは、次のバインド プロパティを指定してください。
ポーリング用
バインディングプロパティ | 価値 |
---|---|
InboundOperationType | これをポーリングに設定 します。 |
ポーリングデータの利用可能声明 | この例では、このバインド プロパティを次の値に設定します。SELECT COUNT (*) FROM MS_SAMPLE_EMPLOYEE |
PollingAction | MS_SAMPLE_EMPLOYEEインターフェイス テーブルのポーリング操作に対して生成されたスキーマからポーリング アクションを取得します。 この例では、このバインド プロパティを InterfaceTables/Poll/FND/APPS/MS_SAMPLE_EMPLOYEE に設定します。 |
PollingInput | このバインディング プロパティには、MS_SAMPLE_EMPLOYEE インターフェイス テーブルからすべてのレコードを取得する SELECT ステートメントを指定します。 この例では、このバインド プロパティを次の値に設定します。SELECT * FROM MS_SAMPLE_EMPLOYEE FOR UPDATE |
投票後声明 | MS_SAMPLE_EMPLOYEE インターフェイス テーブルからすべてのデータを削除するには、ポーリング後のステートメントを指定します。 この例では、このバインド プロパティを次の値に設定します。DELETE FROM MS_SAMPLE_EMPLOYEE |
アプリケーション コンテキストを設定する場合
Oracle E-Business Suite 成果物に対して操作を実行する場合は、適切なバインド プロパティの値を指定してアプリケーション コンテキストを設定する必要があります。 アプリケーション コンテキストと、アプリケーション コンテキストの設定に必要なバインド プロパティの詳細については、「 アプリケーション コンテキストの設定」を参照してください。
この例では、 oracleUserName、 oraclePassword、 oracleEBSResponsibility バインディング プロパティに適切な値を指定します。
注
Oracle E-Business アダプターを使用して受信操作を実行するときに、トランザクション分離レベルとトランザクション タイムアウトを構成することをお勧めします。 これを行うには、受信ポートの構成中にサービスの動作を追加します。 サービスの動作を追加する方法については、「 Oracle E-Business Suite でトランザクション分離レベルとトランザクション タイムアウトを構成する」を参照してください。
送信ポートの作成
ハード ディスク上の場所を定義し、BizTalk Server が Oracle からメッセージを削除する対応する FILE 送信ポートを作成します。 これらのメッセージは、受信ポートに指定したポーリング ステートメントに応答します。 送信ポートを作成する方法については、「 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>
アダプターは、ポーリング後のステートメントを実行し、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 を使用したアダプター バインドの再利用」を参照してください。