次の方法で共有


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 管理コンソールで受信ポートを構成するときに、これらのバインド プロパティを指定する必要があります。

バインディングプロパティ 説明
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 をポーリングするようにアダプターを構成するには、次のタスクを実行します。

  1. BizTalk プロジェクトを作成し、ポーリングするインターフェイス テーブルの ポーリング 操作のスキーマを生成します。

  2. BizTalk プロジェクトをビルドして展開します。

  3. 受信ポートと送信ポートを作成して BizTalk アプリケーションを構成します。 さらに、送信ポートにフィルターを追加して、受信ポートで指定された受信場所を確認し、ポーリング メッセージが送信ポートにルーティングされるようにします。

    Von Bedeutung

    受信ポーリングのシナリオでは、常に一方向の受信ポートを構成する必要があります。 双方向の受信ポートは、受信操作ではサポートされていません。

  4. 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 成果物に対して操作を実行する場合は、適切なバインド プロパティの値を指定してアプリケーション コンテキストを設定する必要があります。 アプリケーション コンテキストと、アプリケーション コンテキストの設定に必要なバインド プロパティの詳細については、「 アプリケーション コンテキストの設定」を参照してください。

この例では、 oracleUserNameoraclePasswordoracleEBSResponsibility バインディング プロパティに適切な値を指定します。

Oracle E-Business アダプターを使用して受信操作を実行するときに、トランザクション分離レベルとトランザクション タイムアウトを構成することをお勧めします。 これを行うには、受信ポートの構成中にサービスの動作を追加します。 サービスの動作を追加する方法については、「 Oracle E-Business Suite でトランザクション分離レベルとトランザクション タイムアウトを構成する」を参照してください。

送信ポートの作成

ハード ディスク上の場所を定義し、BizTalk Server が Oracle からメッセージを削除する対応する FILE 送信ポートを作成します。 これらのメッセージは、受信ポートに指定したポーリング ステートメントに応答します。 送信ポートを作成する方法については、「 Oracle E-Business Adapter への物理ポート バインドの手動構成」を参照してください。

また、受信場所からメッセージをルーティングするために、送信ポートにフィルターを追加する必要があります。 送信ポートにフィルターを追加するには:

  1. 送信ポートをダブルクリックして、[ 送信ポートのプロパティ ] ダイアログ ボックスを開きます。

  2. [ 送信ポートのプロパティ ] ダイアログ ボックスで、[ フィルター ] タブをクリックします。

  3. 次の値を指定します。

    • プロパティ一覧で、BTS.ReceivePortName をクリックします。

    • [演算子] の一覧で、[==] をクリックします。

    • [ ] フィールドで、受信ポート名を指定します。

  4. [ 送信ポートのプロパティ ] ダイアログ ボックスで、[ 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 を使用したアダプター バインドの再利用」を参照してください。

こちらもご覧ください

BizTalk Server を使用した Oracle E-Business Suite のポーリング操作