プライマリ・コンテンツに移動
Oracle® Fusion Middlewareテクノロジ・アダプタの理解
12c (12.2.1)
E69958-02
目次へ移動
目次

前
次

7 Oracle JCA Adapter for AQ

この章では、Oracle BPEL Process Manager (Oracle BPEL PM)またはOracle Mediatorによるシングル・コンシューマまたはマルチ・コンシューマ・キューの操作を可能にする、Oracle JCA Adapter for AQ (Oracle AQアダプタ)の使用方法について説明します。

この章の内容は次のとおりです。

7.1 Oracle AQアダプタの概要

Oracle Streams Advanced Queuing (AQ)では、関連するアプリケーション間の双方向の非同期通信用に柔軟なメカニズムが提供されています。アドバンスト・キューはOracleデータベースの機能であるため、高いスケーラビリティと信頼性を備えています。バックアップとリカバリ(Point-in-Timeリカバリも含む)、ロギング、トランザクション・サービスおよびシステム管理など、Oracleデータベースの他の機能もアドバンスト・キューによって継承されます。また、単一のアプリケーションを複数のキューで処理できるため、メッセージを様々な方法で分割したり、ロード・バランシングを介して別のレベルのスケーラビリティを提供したりできます。

この節の内容は以下のとおりです。

Oracle AQの詳細は、『Oracle Streamsアドバンスト・キューイング・ユーザーズ・ガイド』のOracle Streams AQの概要に関する項を参照してください。

7.1.1 Oracle AQアダプタの次のコンポーネントとの統合

JCA 1.5リソース・アダプタを双方向に統合するのに使用されます。規格に準拠しており、基盤となるJCA相互作用をWebサービスとして公開するためのWeb Service Invocation Framework (WSIF)テクノロジが使用されています。

アーキテクチャ、アダプタとの統合およびアダプタのデプロイの詳細は、「アダプタとOracle Application Serverコンポーネントの統合」を参照してください。

7.1.2 Oracle Mediatorとの統合

メディエータ・サーバーはサポートしており、それぞれのインバウンドおよびアウトバウンドのアダプタ・サービスを定義できます。インバウンド・アダプタ・サービスでは、データが受信されてXMLメッセージに変換されます。アウトバウンド・アダプタ・サービスでは、XMLメッセージが特定のアダプタのネイティブ・フォーマットに変換され、データがターゲット・アプリケーションに送信されます。

サーバーを使用すると、Oracle Advanced Queuingのシングル・コンシューマ・キューまたはマルチ・コンシューマ・キューとの間でメッセージを送受信できます。

注意:

Oracle BPEL PMの後継であり、このガイドのほとんどの部分およびサンプルはOracle BPEL PMを使用することを想定しています。ただし、動作はOracle BPEL PMでも同じです。ここでOracle BPEL PMに言及している箇所は、置き換えてかまいません。

7.2 Oracle AQアダプタの機能

Oracle AQアダプタは、AQメッセージのプロデューサでもありコンシューマでもあります。エンキュー操作は、JCAアウトバウンド相互作用として公開されています。デキュー操作は、JCAインバウンド相互作用として公開されています。

Oracle AQアダプタでは、ペイロードとしてADT (Oracleオブジェクト・タイプ)、XMLTypeおよびRAWキューをサポートしています。また、1つのADTメンバー列からのペイロードの抽出もサポートしています。

Oracle AQアダプタでは、エンキューおよびデキュー操作用として正規化されたプロパティがサポートされています。

Oracle AQアダプタでサポートされているプロパティの詳細は、Oracle AQアダプタのプロパティ」を参照してください。

Oracle AQアダプタのサンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

この項には次のトピックが含まれます:

7.2.1 エンキュー固有の機能(メッセージ生成)

Oracle Streams AQの次の機能をサポートしています。

  • 相関識別子

    アダプタ構成ウィザードでは、特定メッセージの取得に使用するエンキュー操作の定義時に相関識別子を指定できます。

  • マルチ・コンシューマ・キュー

    Oracle Streams AQでは、複数のコンシューマで1つのメッセージの処理と消費を実行できます。この機能を使用するには、マルチ・コンシューマ・キューを作成し、そのキューにメッセージをエンキューする必要があります。この構成では、デフォルトのサブスクリプション・リストまたはオーバーライド受信者リストのいずれかを使用して、単一のメッセージが複数のAQコンシューマによって消費(デキュー操作)されます。このシナリオでは、指定したすべてのコンシューマ・エージェントによって消費されるまで、メッセージはキューに残ります。Oracle AQアダプタのエンキュー・ヘッダー・プロパティ(jca.aq.RecipientList)を使用すると、キューからのメッセージ取得が可能なオーバーライド受信者リスト(カンマ区切りの文字列値)を指定できます。サブスクライバとしてマルチ・コンシューマ・キューに追加されたすべてのコンシューマでは、Recipientパラメータに一意の値が必要です。2つのサブスクライバでNAMEADDRESSおよびPROTOCOL属性に同じ値を使用することはできません。

  • メッセージの優先度

    エンキュー済のメッセージに優先度を指定すると、メッセージは優先度に従ってデキューされます。2つのメッセージの優先度が同じ場合、デキューの順番はエンキュー時間で決定されます。また、メッセージのソート順としてエンキュー時間の優先度を指定することで、優先度が格納順の取出し(FIFO)のキューを作成することもできます。この優先度は、エンキュー・ヘッダーのプロパティです。エンキュー時間は、基礎となるAQアプリケーションによって自動的に設定されます。

    次に、FIFOキューの作成方法の例を示します。

    EXECUTE DBMS_AQADM.CREATE_QUEUE_TABLE( \
    queue_table => 'OE_orders_pr_mqtab', \
    sort_list =>'priority,enq_time', \
    comment => 'Order Entry Priority \
    MultiConsumer Orders queue table',\
    multiple_consumers => TRUE, \
    queue_payload_type => 'BOLADM.order_typ', \
    compatible => '8.1', \
    primary_instance => 2, \
    secondary_instance => 1);
    EXECUTE DBMS_AQADM.CREATE_QUEUE ( \
    queue_name => 'OE_bookedorders_que', \
    queue_table => 'OE_orders_pr_mqtab');
    
  • 時間の指定とスケジュール

    Oracle Streams AQでは、遅延間隔と有効期限の間隔を指定できます。遅延間隔は、メッセージのエンキュー後に、エンキュー済のメッセージがデキュー元で使用可能とマークされる時期を決定します。遅延時間の設定されたメッセージがエンキューされると、メッセージはWAIT状態とマークされます。WAIT状態のメッセージは、デフォルトのデキュー・コールからマスクされます。有効期限のプロパティは有効期限の指定に使用され、メッセージが有効期限の前に消費されない場合、メッセージは自動的に例外キューに移動されます。

7.2.2 デキューおよびエンキューの機能

Oracle Streams AQには、次のデキュー・オプションがあります。

  • ポーリング・オプション

  • 通知オプション

ポーリング・オプションは、着信の都度のメッセージの処理や、メッセージの継続的なポーリングに関連します。Oracle AQアダプタでは、AQメッセージ消費のポーリング・メカニズムをサポートしています。

Oracle AQアダプタでは、Oracle Streams AQの次の機能をサポートしています。

  • マルチ・コンシューマ・キュー

    Oracle AQアダプタは、マルチ・コンシューマ・キューからメッセージを取得できます。

  • デキュー処理用のメッセージの移動

    メッセージをエンキューと同じ順序でデキューする必要はありません。相関識別子を使用してデキューの順序を指定できます。アダプタ構成ウィザードで、デキュー操作の相関IDを定義できます。

  • 遅延を伴う再試行

    再試行回数は、Oracle AQアダプタのデキュー・ヘッダーのプロパティです。再試行回数が制限を超えると、メッセージは指定の例外キューに移動されます。この例外キューは、Oracle AQアダプタのエンキュー・ヘッダーのプロパティです。

  • ルールベースのサブスクリプション

    Oracle Streams AQでは、コンテンツベースおよびサブジェクトベースのメッセージのフィルタ処理が可能です。ルールには、そのルールに一致するメッセージのサブスクライブを目的とした1つ以上のコンシューマが定義されます。サブジェクトベースのルールの場合、SQL問合せのWHERE句に似た構文を使用してブール式を指定します。このブール式には、メッセージ・プロパティの条件(現状では優先度と相関ID)、ユーザー・データ・プロパティ(オブジェクト・ペイロードのみ)および関数(SQL問合せのWHERE句の指定と同様)を含めることができます。

  • Oracle AQアダプタのヘッダー・プロパティ

    Oracle AQアダプタのヘッダー・プロパティの詳細は、Oracle AQアダプタのプロパティ」を参照してください。

  • デキュー条件

    デキュー条件は、Oracle AQアダプタで使用されるアドバンスト・キューイング製品の機能です。デキュー条件が指定され、指定された条件を満たすメッセージがない場合は、デキューが実行されません。

    デキュー条件要素は、SQL問合せのWHERE句に似た構文を使用するブール式です。このブール式には、メッセージ・プロパティ、ユーザー・オブジェクトのペイロード・データ・プロパティおよびPL/SQLまたはSQL関数に関する条件を含めることができます。メッセージ・プロパティには、prioritycorridおよびキュー表の他の列などがあります。

    マルチ・サブスクライバ・キューでデキューが実行される際には、メッセージを選別して特定の条件を満たすもののみを着信することが必要な場合があります。これらの条件は、優先度1のメッセージのみを選択する場合などはヘッダー情報に、$100,000を超えるローン・アプリケーションのみを選択する場合などはメッセージ・ペイロードの一部に関係します。

    マルチ・サブスクライバ・キューを選択した場合は、ステップ15で「メッセージ・セレクタ・ルール」フィールドが表示されます。priority = 1またはTAB.USER_DATA.amount > 1000など、SQLのWHERE句に似た構文を使用したブール式でサブスクリプション・ルールを入力します。アダプタにより、このブール式がtrueのメッセージのみがデキューされます。

    ヘッダー情報にアクセスするには、「ペイロード以外のフィールドへのアクセスも必要」チェック・ボックスを選択する必要があります。

    このチェック・ボックスを選択すると、生成されるWSDLファイルのtypeセクションにコードが追加されます。

    <?xml version = '1.0' encoding = 'UTF-8'?>
    <?binding.jca Inbound_aq.jca?>
    <definitions name="Inbound"   targetNamespace="http://xmlns.oracle.
       com/pcbpel/adapter/aq/Inbound/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:obj1="http://xmlns.oracle.com/xdb/SCOTT" xmlns:imp1="http://www.oracle.com/ipdemo">
        <types>
            <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns:hdr="http://xmlns.oracle.com/pcbpel/adapter/aq/inbound/" xmlns:obj1="http://xmlns.oracle.com/xdb/SCOTT">
                <import namespace="http://xmlns.oracle.com/xdb/SCOTT" schemaLocation="xsd/SCOTT_MAGAZINE_TYPE.xsd"/>
                <import namespace="http://xmlns.oracle.com/pcbpel/adapter/aq/inbound/" schemaLocation="xsd/aqAdapterInboundHeader.xsd"/>
                <complexType name="HeaderCType">
                    <sequence>
                        <element name="QueueHeader" 
                                 type="hdr:HeaderType"/>
                        <element name="PayloadHeader" 
                            type="obj1:MAGAZINE_TYPE"/>
                    </sequence>
                </complexType>
                <element name="Header" type="tns:HeaderCType"/>
            </schema>
            <schema xmlns="http://www.w3.org/2001/XMLSchema">
                <import namespace="http://www.oracle.com/ipdemo" schemaLocation="xsd/simpleMagazine.xsd"/>
            </schema>
        </types>
        <message name="simpleMagazine_msg">
            <part name="simpleMagazine" 
                        element="imp1:simpleMagazine"/>
        </message>
        <message name="Header_msg">
            <part name="Header" element="tns:Header"/>
        </message>
        <portType name="Dequeue_ptt">
            <operation name="Dequeue">
                <input message="tns:simpleMagazine_msg"/>
            </operation>
        </portType>
        <plt:partnerLinkType name="Dequeue_plt">
            <plt:role name="Dequeue_role">
                <plt:portType name="tns:Dequeue_ptt"/>
            </plt:role>
        </plt:partnerLinkType>
    </definitions>
    

    PayloadHeaderは、キューのADT全体のタイプであることに注意してください。ペイロードには選択したペイロード・フィールドのみが含まれます。「ペイロード以外のフィールドへのアクセスも必要」を選択した場合、PayloadHeader(. jca.aq.HeaderDocument)にはADT全体が含まれます(ヘッダーにも存在しアダプタでは無視されるペイロード・フィールドも含まれます)。

    Oracle AQアダプタのアーキテクチャ、アダプタとOracle BPEL Process ManagerおよびOracle Mediatorの統合およびアダプタのデプロイの詳細は、Oracle JCAアダプタの概要」を参照してください。

7.2.3 同期リクエスト/レスポンス

AQアダプタ構成ウィザードを使用すると、Oracle AQアダプタを同期リクエスト/レスポンス相互作用パターンに使用できるプロセスをモデル化できます。

このシナリオでは、Oracle AQアダプタはリクエスト・キューにリクエストを送信し、リプライ・キューからのレスポンスを待ってから実行を継続します。内部では、Oracle AQアダプタにより新規の相互作用パターンAQRequestReplyInteractionSpecが使用されます。この相互作用の仕様では、リクエストとリプライの宛先名を構成できます。

バリエーションにより、リプライ・キューの一部として一時的な宛先を使用できます。その後、アダプタはAQReplyToヘッダーをリプライの宛先に設定します。

7.2.3.1 AQ同期リクエスト/レスポンス相互作用パターンの構成ウィザード・フロー

次の手順に従って、AQアダプタ構成ウィザードを使用して、同期リクエスト/レスポンス用にAQアダプタを構成します。

  1. AQアダプタ構成ウィザードを開き、各初期手順に進みます。AQアダプタの「操作」ページで、「エンキュー/デキュー」を選択します。ページの「操作名」セクションは有効です。

    「同期」を選択し、指定された操作名Enqueue_Dequeueを使用するか、独自の名前に変更します。

    図7-1 「エンキュー/デキュー」と「同期」操作が選択されたAQアダプタ構成ウィザードの「操作」画面

    図7-1の説明が続きます
    「図7-1 「エンキュー/デキュー」と「同期」操作が選択されたAQアダプタ構成ウィザードの「操作」画面」の説明
  2. 「キュー名」画面で、「アウトバウンド・キュー情報」および「インバウンド・キュー情報」を指定します。データベース・スキーマを参照して適切な「キュー名」を選択するか、デフォルト・スキーマを使用して、選択したデフォルト・スキーマで使用可能なリストから「キュー名」を選択します。

    図7-2 AQアダプタ構成ウィザードの「キュー名」画面

    図7-2の説明が続きます
    「図7-2 AQアダプタ構成ウィザード- キュー名」画面」の説明
  3. 「キュー・パラメータ」画面が表示されます。次の情報を指定してから、「次へ」を選択します。次の点に注意してください
    • 「コンシューマ」フィールドで、マルチ・コンシューマ・キューのコンシューマ名を指定します。

    • 「メッセージ・セレクタ・ルール」フィールドで、メッセージ・セレクタ・ルールを指定します。メッセージ・セレクタ・ルールの使用方法の詳細は、「デキューおよびエンキューの機能」を参照してください。

    • 「デキュー条件」で、メッセージに関する条件を指定します。デキュー条件の使用方法の詳細は、「デキューおよびエンキューの機能」を参照してください。

    図7-3 AQアダプタ構成ウィザードの「キュー・パラメータ」ページ

    img/GUID-D6D09C15-5EFF-47CF-BCE3-53602B04DAB8-default.gif
  4. AQアダプタ構成ウィザードの「オブジェクト・ペイロード」画面が表示されます。この画面では、インバウンド・キューとアウトバウンド・キューの両方のオブジェクト・ペイロードに関する情報を入力できます。

    図7-4 AQアダプタ構成ウィザードの「オブジェクト・ペイロード」画面

    img/GUID-6BB930D5-64EF-43EE-B75C-8D5135ECD480-default.gif
    • 上部のテキストは、構造化されたオブジェクト・ペイロードを指定します。残りのテキストは、ペイロードに関する追加情報を提供します。「ビジネス・ペイロード」の場合は、オブジェクト全体または「オブジェクト内のフィールド」です。

    • 「オブジェクト内のフィールド」を選択した場合は、「ペイロード・フィールド・オプション」セクションが有効になります。ここで、直接入力するか、「参照」を選択して、フィールド名を入力します。

      「参照」を選択した場合は、「ペイロード・フィールドの選択」ブラウザが開きます。ビジネス・ペイロードが含まれるフィールド(1つまたは複数)を選択し、「OK」をクリックして、「オブジェクト・ペイロード」画面でフィールド名を移入します。

      「ペイロードの検証」を選択して、デキュー操作のペイロードを検証することもできます。このオプションが選択されている場合は、他の処理を行う前に、結果のXMLペイロードがスキーマに対して検証されます。失敗した場合、メッセージは拒否されます。

      図7-5 AQアダプタ構成ウィザードの「ペイロード・フィールドの選択」ブラウザ

      図7-5の説明が続きます
      「図7-5 AQアダプタ構成ウィザードの「ペイロード・フィールドの選択」ブラウザ」の説明

      スキーマがこれらのフィールドに生成されるようにする必要もある場合は、「ペイロード以外のフィールドへのアクセスが必要」チェック・ボックスを選択します。ADTオブジェクト属性がヘッダー・プロパティとして使用できるようにする場合は、このチェック・ボックスを選択します。たとえば、ペイロードがJPGイメージであるとします。ペイロード以外のフィールドで人物の名前を指定することが必要な場合があります。これにより、追加のヘッダー・スキーマ・ファイル(object_name.xsd、object_nameはキューで使用する構造化されたペイロード・オブジェクト)が生成されます。xsd名には、スキーマによって接頭辞が追加で付けられ、スキーマscottに接続すると、その名前はSCOTT_object_name.xsdになります。「オブジェクト」ページでADTフィールドを選択した場合、またはADT全体のペイロードが選択されている場合、スキーマを指定するための「メッセージ」ページが表示されます。構造化されたオブジェクト内のADTフィールドを指定した場合、アウトバウンドADTフィールド名はインバウンドADTフィールド名と同じである必要があります。

    • AQアダプタ構成ウィザードの「オブジェクト・ペイロード」画面の残り半分でのアウトバウンド・キューの場合と同じ方法で情報を入力します。

    • 「Next」をクリックします。

  5. AQアダプタ構成ウィザードの「メッセージ」画面が表示されます。
    • この画面で、指定した両方のキューのフィールドに含まれるメッセージを定義するように求められます。このアダプタおよび他のアダプタの他のメッセージ画面と同様、メッセージが不透明であるかどうか、ネイティブ・フォーマット変換が必要であるかどうかを示したり、スキーマおよびURLとスキーマ要素を提供してスキーマを指定することができます。

    • 「次へ」をクリックして、同期リクエスト/レスポンス相互作用パターンでのAQアダプタの構成を完了します。

    図7-6 AQアダプタ構成ウィザードの「メッセージ」画面

    図7-6の説明が続きます
    「図7-6 AQアダプタ構成ウィザードの「メッセージ」画面」の説明
7.2.3.1.1 同期リクエスト/リプライ相互作用パターンを使用したAQアダプタの編集

SOAコンポジット・エディタを使用し、AQアダプタ・ウィザードを編集モードで起動して、前に構成したAQアダプタを選択することもできます。ただし、この方法を使用した場合、すでに定義している操作タイプは変更できませんが、選択したキューとキュー・パラメータの変更や、ペイロード・スキーマの変更は可能です。

7.2.4 同期デキュー

AQの「操作タイプ」ページで「同期デキュー」操作タイプを選択して、AQアダプタのアウトバウンド同期デキューを構成できます。

7.2.4.1 AQ同期デキューの構成ウィザード・フロー

次の手順に従って、AQアダプタ構成ウィザードを使用して、同期デキュー用にAQを構成します。

  1. 操作タイプとして「同期デキュー」を選択します。同期デキューに付けられる操作名はデフォルトでSync_Dequeueに設定されます。ただし、必要な場合はこの名前を上書きできます。

    図7-7 「同期デキュー」操作が選択され、「操作名」が「Sync_Dequeue Shown」のAQアダプタ構成ウィザードの「操作」画面

    図7-7の説明が続きます
    「図7-7 「同期デキュー」操作が選択され、「操作名」が「Sync_Dequeue Shown」のAQアダプタ構成ウィザードの「操作」画面」の説明
  2. 「次」を選択します。AQアダプタ構成ウィザードの「キュー名」画面が表示されます。この画面で、このサービスに使用されるデータベース・スキーマとインバウンドおよびアウトバウンド・キューを指定できます。「次へ」をクリックします。

    図7-8 「データベース・スキーマ」がデフォルト設定され、「キュー名」が選択されたAQアダプタ構成ウィザードの「キュー名」画面

    図7-8の説明が続きます
    「図7-8 「データベース・スキーマ」がデフォルト設定され、「キュー名」が選択されたAQアダプタ構成ウィザードの「キュー名」画面」の説明
  3. 「キュー・パラメータ」画面では、デキュー操作(「コンシューマ」「メッセージ・セレクタ・ルール」および「デキュー条件」)を指定し、「次へ」をクリックします。(マルチ・コンシューマ・キューを選択した場合にのみ、4つのフィールドを示すこの画面が表示されることに注意してください。)シングル・コンシューマ・キューのみを選択した場合は、2つのフィールド(「相関ID」と「デキュー条件」)のみが含まれた画面が表示されます。その場合、構成ウィザードに「コンシューマ」と「メッセージ・セレクタ・ルール」は表示されません。
    • コンシューマ: マルチ・コンシューマ・キューのコンシューマ名を指定します。

    • 相関ID: 1文字から30文字までの長さでオプションの相関IDを入力します。

    • メッセージ・セレクタ・ルール: メッセージ・セレクタ・ルールを指定します。メッセージ・セレクタ・ルールの使用方法の詳細は、「デキューおよびエンキューの機能」を参照してください。

    • デキュー条件: 「操作」ページでデキューを選択した場合にのみ表示され、メッセージに関する条件を指定できます。デキュー条件の使用方法の詳細は、「デキューおよびエンキューの機能」を参照してください。

    図7-9 AQアダプタ構成ウィザードの「キュー・パラメータ」画面

    図7-9の説明が続きます
    「図7-9 AQアダプタ構成ウィザードの「キュー・パラメータ」画面」の説明

7.2.4.2 同期リクエスト/リプライのJCAファイル

次の項では、同期リクエスト/リプライと同期デキューの両方のファイル・アーティファクトを指定します。次の例では、同期リクエスト/リプライ・シナリオのjcaファイルを示します。

<adapter-config name="AQService" adapter="AQ" wsdlLocation="../WSDLs/AQRequestReply.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
  <connection-factory location="eis/AQ/slc01gid" UIConnectionName="slc01gid"/>
  <endpoint-interaction portType="Enqueue_Dequeue_ptt" operation="Enqueue_Dequeue" UITransmissionPrimitive="Request-response">
    <interaction-spec className="oracle.tip.adapter.aq.v2.jca.AQRequestReplyInteractionSpec">
     <property name="EnqueueQueue" value="EDN_OAOO_QUEUE"/>
      <property name="RecipientList" value="recp1"/>
      <property name="DequueQueue" value="EDN_EVENT_QUEUE"/>
      <property name="ObjectFieldName" value="PAYLOAD"/>
     <property name="Consumer" value="cons1"/>
    </interaction-spec>
  </endpoint-interaction>
</adapter-config>

7.2.4.3 同期デキューのJCAファイル

次の例では、同期デキュー・シナリオのjcaファイルを示します。

<adapter-config name="AQSyncDequeue" adapter="AQ" wsdlLocation="../WSDLs/AQSyncDequeue.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
  <connection-factory location="eis/AQ/slc01gid" UIConnectionName="slc01gid"/>
  <endpoint-interaction portType="Sync_Dequeue_ptt" operation="Sync_Dequeue">
    <interaction-spec className="oracle.tip.adapter.aq.v2.jca.AQReceiveNoWaitInteractionSpec">
      <property name="Consumer" value="cons1"/>
      <property name="SchemaValidation" value="false"/>
      <property name="QueueName" value="EDN_OAOO_QUEUE"/>
      <property name="ObjectFieldName" value="PAYLOAD"/>
    </interaction-spec>
  </endpoint-interaction>
</adapter-config>

7.2.5 サポートされているADTペイロード・タイプ

次のRAWタイプをサポートしています。

  • BLOB

  • CHAR

  • CLOB

  • DATE

  • DECIMAL

  • DOUBLE PRECISION

  • FLOAT

  • INTEGER

  • NUMBER

  • REAL

  • SMALLINT

  • TIMESTAMP

  • VARCHAR2

前述のリストに示したRAWタイプ以外にも、プリミティブ型およびオブジェクトの配列もサポートしています。

注意:

現在、ADT列のTIMESTAMP WITH LOCAL TIMEZONEデータ型およびTIMESTAMP WITH TIMEZONEデータ型がサポートされていません。

ADT全体ではなくペイロード・フィールドを選択する場合は、ペイロード・フィールドとして次のデータ型の1つを選択します。

  • CLOB (XSDまたは不透明(Opaque)スキーマのいずれか)

  • VARCHAR2 (XSDまたは不透明(Opaque)スキーマのいずれか)

  • BLOB(不透明(Opaque)スキーマのみ)

  • XMLTYPE (XSDまたは不透明(Opaque)スキーマのいずれか)

7.2.6 ネイティブ・フォーマット・ビルダー・ウィザード

ネイティブ・フォーマット・ビルダー・ウィザードを使用して、AQ RAWペイロード用のファイルを含む様々なフォーマットのXSDファイルを定義できます。

ネイティブ・フォーマット・ビルダー・ウィザードの詳細は、「ネイティブ・フォーマット・ビルダー・ウィザード」を参照してください。

ネイティブ・フォーマット・ビルダーの使用方法を示すサンプル・コードを取得するには、「開発者および管理者のサンプル・コード」ページの「ミドルウェアおよびツール」の下にある最新のSOAサンプル・コードにアクセスします。

ペイロード・スキーマ

ペイロード・スキーマはペイロード・タイプに依存します。ADT全体の場合、スキーマはアダプタ構成ウィザードによって完全に生成されます。ペイロードとしてBLOBが選択されたADTの場合、次のように定義された不透明(Opaque)スキーマを使用する必要があります。

<element name="opaqueElement" type="base64Binary" />

その他すべての場合には、表7-1 に示すように、スキーマを指定するか不透明(Opaque)スキーマを使用できます。


表7-1 ペイロード・スキーマ

ペイロード・タイプ サポートされているスキーマ

RAW

ユーザー指定のスキーマまたは不透明(Opaque)スキーマ。

ADT全体

アダプタ構成ウィザードによって生成された、キュー構造に基づくスキーマを使用する必要があります。

ペイロードとしてVARCHAR2が選択されたADT

ユーザー指定のスキーマまたは不透明(Opaque)スキーマ。

ユーザー指定のスキーマまたは不透明(Opaque)スキーマのペイロードとしてCLOBが選択されたADT

ユーザー指定のスキーマまたは不透明(Opaque)スキーマ。

不透明(Opaque)スキーマのペイロードとしてBLOBが選択されたADT

不透明(Opaque)スキーマ。

XMLTYPE

ユーザー指定のスキーマまたは不透明(Opaque)スキーマ。


XSDファイルはないがペイロード・データが(カンマ区切り値(CSV)形式などで)書式設定されている場合は、ネイティブ・フォーマット・ビルダー・ウィザードを使用して適切なXSDを生成できます。アダプタ構成ウィザードは、ネイティブ・フォーマット・ビルダー・ウィザードと統合されています。「アダプタ構成ウィザード - メッセージ」ウィンドウで、「ネイティブ・フォーマットのスキーマの定義」をクリックしてネイティブ・フォーマット・ビルダー・ウィザードにアクセスします。

7.2.7 正規化されたメッセージのサポート

ヘッダーの操作と伝播は、重要なビジネス統合メッセージング要件です。Oracle BPEL PMOracle JCAおよびB2Bは、顧客の統合ニーズを解決する上でヘッダー・サポートに大きく依存しています。たとえば、メッセージ・ヘッダーを介してファイル名を伝播することで、そのファイル名をソース・ディレクトリからターゲット・ディレクトリに保存できます。Oracle BPEL PMでは、様々なUIサポート・レベルでヘッダーにアクセスし、操作して設定できます。

注意:

リリース10.1.3でサポートされているAQアダプタのインバウンド・ヘッダーとアウトバウンド・ヘッダーは、リリース11gでは正規化されたメッセージ・プロパティを介してサポートされています。

詳細は、「アダプタ内での相関サポート」を参照してください

正規化されたメッセージのヘッダーの伝播

正規化されたメッセージは、プロパティとペイロードという2つの部分のみを持つように簡素化されています。通常、プロパティはスカラー型の名前/値ペアです。既存の複雑なヘッダーをプロパティに合せるために、プロパティはスカラー型にフラット化されています。

設計時のヘッダーの操作

複雑なプロパティは事前に決定されているため、設計時にヘッダーを操作する際のユーザー操作は合理化されています。メディエータまたはBPELデザイナでは、なんらかの予約済キーワードを使用してヘッダーを操作できます。たとえば、現在、メディエータでは、次の式を使用してインバウンド・ファイル・アダプタのfileNameヘッダーにアクセスできます。

$nmproperty.InboundFileHeaderType.fileName

ただし、この方法はユーザー入力に基づいて動的に生成されるプロパティに対処していません。たとえば、AQアダプタ・ウィザードでは、AQオブジェクトからの一部のフィールドをヘッダーとして伝播できます。選択内容に基づいてヘッダーが定義されます。これらの定義はあらかじめ決まらないため、あらかじめ決められたプロパティ定義のリストでは対応できません。動的プロパティが定義される前に、動的プロパティのヘッダー操作を設計することはできません。この制限に対応するには、必要なすべてのサービス(コンポジット・エントリ・ポイント)と参照を生成する必要があります。この制約は、動的プロパティを生成することが想定されるサービスに適用されます。動的プロパティが生成された後、コンポジットごとに格納される必要があります。その後にのみ、メディエータまたはBPELデザイナで動的プロパティを操作できます。

正規化されたメッセージのライフサイクル中に伝播する必要のあるプロパティの識別

プロパティには、メッセージのライフサイクル全体にわたって伝播される必要があるものもあれば、伝播されてはいけないものもあります。伝播される必要があるプロパティは伝播可能プロパティと呼ばれ、伝播されてはいけないプロパティは伝播不可プロパティと呼ばれます。

7.2.8 DOM2準拠

Document Object Model Level 2 (DOM 2)に準拠しているため、AQアダプタではDOM2仕様に準拠する文書オブジェクトを生成できます。

7.2.9 メッセージ・サイズ対応

メッセージ・サイズ対応です。つまり、メッセージ・サイズが計算され、サイズがレポートされます。公開されるサイズ関連APIは、レポート処理に使用できます。

7.2.10 複数の受信者スレッド

アクティブ化エンドポイント・プロパティadapter.aq.dequeue.threadsをサポートしています。アダプタとエンタープライズ情報システム(EIS)間のインバウンド・メッセージ・フロー用として複数のスレッドを生成するには、このプロパティを設定することをお薦めします。以前のバージョンでは、複数のエンドポイントを開始するために使用されていたactivationInstancesに依存していました。

7.2.11 DequeueTimeoutプロパティ

DequeueTimeOutプロパティは、複数のインバウンド・デキュー・スレッドをサポートしています。このプロパティの値により、dequeue() APIがメッセージを待機する秒数が決まります。この秒数が経過すると、このAPIが返されて次のポーリング・サイクルが開始されます。

次の例に示すように、このプロパティをcomposite.xmlファイルに追加します。

<service name="Inbound" ui:wsdlLocation="Inbound.wsdl">
<interface.wsdl interface="http://xmlns.oracle.com/pcbpel/adapter/aq/AQ_InboundRetry_Mediator/AQ2JMSInboundRetry/Inbound%2F#wsdl.interface(Dequeue_ptt)"/>
<binding.jca config="Inbound_aq.jca">
<property name="DequeueTimeOut" type="xs:integer" many="false"override="may">10
</property>
</binding.jca>
</service>

7.2.12 デキュー・タイムアウトおよび複数のインバウンド・ポーリング・スレッドの制御

プロセスごとではなくJava仮想マシン(JVM)ごとにシステム全体単位でデキュー・タイムアウトおよび複数のインバウンド・ポーリング・スレッドを制御するためのシステム・プロパティが用意されています。

デキュー・タイムアウトを制御するために用意されているシステム・プロパティは、oracle.adapter.aq.waitです。インバウンド・ポーリング・スレッドを制御するプロパティは、adapter.aq.dequeue.threadsです。

7.2.13 ストリーム・ペイロードのサポート

ストリーム・ペイロードのサポートが用意されています。この機能を有効化すると、ペイロードはメモリーDOM内のSOAランタイムで操作されるかわりにデータベースにストリーミングされます。この機能は、大きなペイロードの処理中に使用します。ストリーム・ペイロードのサポートを有効化するには、Oracle JDeveloper (JDeveloper)でデキュー操作パラメータを定義する際に「ストリーミングの有効化」チェック・ボックスを選択する必要があります。「ストリーミングの有効化」チェック・ボックスを選択すると、次の例に示すように、対応するブール・プロパティEnableStreamingがそれぞれの.jcaファイルに定義されているActivationSpecプロパティに追加されます。EnableStreamingプロパティが存在しない場合は、デフォルト値のfalseとみなされます。このプロパティは、Rawメッセージ、XMLTypeメッセージおよびADT属性を介してペイロードが指定されるADTタイプのメッセージを処理する際に適用可能です。

<activation-spec className="oracle.tip.adapter.aq.inbound.AQDequeueActivationSpec">
      <property name="QueueName" value="RAW_IN_QUEUE"/>
      <property name="DatabaseSchema" value="SCOTT"/>
      <property name="EnableStreaming" value="true"/>
</activation-spec>

7.2.14 インバウンドの再試行

再試行可能な例外にjca.retry.countサービスのバインディング・プロパティを使用して6回以上再試行するように、インバウンドの再試行を構成する場合は、キューの作成にjca.retry.countに使用される値よりも大きいmax_retries値が使用されることを確認してください。何も指定しなければ、キューはmax_retries値5を使用して作成されますが、これは、メッセージが5回の再試行後に例外キューに送られ、以降の処理のためにアダプタに配信されないことを意味します。5以下の値を使用してjca.retry.countを指定すれば、キューのmax_retriesプロパティを変更する必要はありません。

キューの作成時に、次のコードを使用してmax_retriesプロパティを変更します。

begin
DBMS_AQADM.CREATE_QUEUE_TABLE ( queue_table => 'RAW_IN_QUEUE_TABLE',queue_payload_type => 'RAW');
DBMS_AQADM.CREATE_QUEUE ( queue_name => 'RAW_IN_QUEUE',queue_table=> 'RAW_IN_QUEUE_TABLE', max_retries=>1500);
DBMS_AQADM.START_QUEUE ( queue_name => 'RAW_IN_QUEUE');
DBMS_AQADM.CREATE_QUEUE_TABLE ( queue_table => 'RAW_OUT_QUEUE_TABLE', queue_payload_type => 'RAW');
DBMS_AQADM.CREATE_QUEUE ( queue_name  => 'RAW_OUT_QUEUE', queue_table => 'RAW_OUT_QUEUE_TABLE');
DBMS_AQADM.START_QUEUE ( queue_name => 'RAW_OUT_QUEUE');
end;

7.2.15 エラー処理のサポート

エラー処理については、「エラー処理」を参照してください。

7.2.16 パフォーマンス・チューニング

パフォーマンス・チューニング機能をサポートしています。

詳細は、「Oracle JCAアダプタ・チューニング・ガイド」および「Oracle JCAアダプタのプロパティ」を参照してください。

7.3 Oracle AQアダプタのデプロイメント

Oracle AQアダプタは、インストールの一部としてアプリケーション・サーバーにデプロイされます。これには、データソースjdbc/aqSampleを指す単一アダプタ・インスタンス・エントリeis/AQ/aqSampleが含まれています。データソースはインストールの一部として作成されないため、手動で作成する必要があります。データベースへの接続情報は、データソース定義内にあります。

インストールの時点で存在するOracle AQアダプタ・インスタンスeis/AQ/aqSampleを使用するSOAプロジェクトをデプロイする場合は、最初にデータソースjdbc/aqSampleを作成する必要があります。一方、新しいアダプタ・インスタンスを使用する場合は、新しいアダプタ・インスタンスを追加してアプリケーション・サーバーを再起動する必要があります。これは、既存のアダプタ・インスタンスjdbc/aqSampleで参照されるデータソースとは別のデータソースを指すようにする場合や、まだ存在しないアダプタ・インスタンスの名前を選択した場合などです。たとえば、JDeveloperでDBConnection1という名前の接続を作成した場合、図7-15に示すように、AQアダプタ・サービスはデフォルトでeis/AQ/DBConnection1 を指します。

また、次のコード・スニペットに示すように.jca ファイルを確認することによって、サービスがどのアダプタ・インスタンスを指しているかを確認できます。

<connection-factory location="eis/AQ/aqSample" … />

前述の例では、場所は実行時のアダプタ・インスタンスのJNDI名です。

新しいAQアダプタ・インスタンスを作成するには、「アダプタ・コネクション・ファクトリの追加」の説明に従ってOracle WebLogic管理コンソールを使用するか、weblogic-ra.xmlファイルを直接編集します。weblogic-ra.xmlを編集する手順は、次のとおりです。

  1. fmwhome/でAqAdapter.rarを検索します。

  2. ファイルを解凍します。

  3. META-INF/weblogic-ra.xml(および、場合によってはra.xml)を編集します。

  4. このファイルから再びJARを作成します。

  5. アプリケーション・サーバーを再起動します。

weblogic-ra.xmlに含まれるサンプルAQアダプタ・インスタンスを次に示します。

例 - weblogic-ra.xmlに含まれるサンプルAQアダプタ・インスタンス

<connection-instance>
  <jndi-name>eis/AQ/aqSample</jndi-name>
  <connection-properties>
    <properties>
      <property>
         <name>XADataSourceName</name>
         <value>jdbc/aqSample</value>
      </property>
      <property>
    <name>DataSourceName</name>
    <value></value>
      </property>
      <property>
    <name>ConnectionString</name>
    <value></value>
      </property>
      <property>
    <name>UserName</name>
    <value></value>
      </property>
      <property>
    <name>Password</name>
    <value></value>
      </property>
      <property>
    <name>DefaultNChar</name>
    <value>false</value>
      </property>
      <property>
    <name>UseDefaultConnectionManager</name>
    <value>false</value>
      </property>
    </properties>
  </connection-properties>
</connection-instance>

必須プロパティは、jndi-nameXADataSourceNameまたはDataSourceNameです。jndi-nameプロパティは、.jcaファイル内の場所属性に一致している必要があり、アダプタ・インスタンスの名前を表しています。XADataSourceNameまたはDataSourceNameプロパティは、基礎となるデータソース(接続情報が設定されている)の名前です。XADataSourceNameまたはDataSourceNameのいずれかのプロパティを指定します。使用方法は、シナリオに関与していてアダプタもグローバル・トランザクションに加える必要があるかどうか、またはローカル・トランザクション・セマンティクスが十分かどうかに応じて異なります。前者の場合にはXADataSourceNameを指定する必要があり、後者の場合にはDataSourceNameを指定する必要があります。XADataSourceNameプロパティを指定する場合は、プロパティによって参照される物理データソースでXAが有効化されていることを確認します。ただし、DataSourceNameプロパティを指定する場合は、プロパティによって参照される物理データソースでXAが有効化されている場合もされていない場合もあります。

最も一般的なミス

デプロイメントに関する最も一般的なミスとして、次の2つがあります。

  • .jcaファイル内の場所属性に一致するアダプタ・インスタンス・エントリが作成されていません(または、インスタンスが1つも作成されていません)。

  • .jcaファイル内の場所属性にデータソース名を直接設定しています。

後者の場合は、アダプタ・インスタンス名(eis/AQ/...)を指定し、このインスタンス名がデータソース・プール(jdbc/...)を指すというように間接的に指定する必要があります。一般的なミスは、このように間接的に指定せず、名前jdbc/...を場所属性に直接指定することです。

その他のアダプタ・インスタンス・プロパティ

AQアダプタ・インスタンスには、xADataSourceNamedataSourceName以外にもプロパティがあります。

Oracle AQアダプタ・インスタンス・プロパティの詳細は、Oracle AQアダプタのプロパティ」を参照してください。

7.4 使用例

この項には次のトピックが含まれます:

7.4.1 一般的な使用例

次の使用例には、アダプタ構成ウィザードの概要が含まれ、様々な状況において通常の手順を変更する方法の例も示します。それぞれの例では、生成されるWSDLファイルとJCAファイルの関連部分を示しています。

この項には次のトピックが含まれます:

7.4.1.1 アダプタ構成ウィザードの概要

この例では、service_typeオブジェクト内の1つのフィールドであるペイロードとユーザー定義スキーマを設定して、メッセージをservice_in_queueキューにデキューするサービスを作成します。

この項では、JDeveloperでアダプタ構成ウィザードを使用して構成する際の必須タスクについて説明します。

この項には次のトピックが含まれます:

7.4.1.1.1 前提条件の確認

この例は、基本的なBPELコンストラクト(アクティビティやパートナ・リンクなど)と、BPELコンポジットを作成およびデプロイするJDeveloper環境をよく理解していることを前提としています。

SCOTTスキーマを持つデータベースへのアクセス権限が必要です。

この使用例を実行するには、adapters-aq-103-adtclobpayloadサンプルに含まれているartifacts.zipファイルの次のファイルが必要です。

  • artifacts/sql/setup_user.sql

  • artifacts/sql/create_type_service.sql

  • artifacts/sql/create_queues.sql

  • artifacts/sql/dequeue_service.sql

  • artifacts/sql/enqueue_service.sql

adapters-aq-103-adtclobpayloadサンプルを入手するには、Oracle Sample SOA Codeサイトにアクセスします。

7.4.1.1.2 アプリケーションおよびSOAプロジェクトの作成

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。次の手順に従ってアプリケーションとSOAプロジェクトを作成します。

  1. JDeveloperを開きます。
  2. 「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。図7-10 に示すように、「汎用アプリケーションの作成 - アプリケーションの名前付け」ページが表示されます。
  3. 「アプリケーション名」フィールドにアプリケーションの名前を入力します。
  4. 「アプリケーション・テンプレート」リストで、「汎用アプリケーション」を選択します。

    図7-10 「汎用アプリケーションの作成 - アプリケーションの名前付け」ページ

    図7-10の説明が続きます
    「図7-10 「汎用アプリケーションの作成 - アプリケーションの名前付け」ページ」の説明
  5. 「次へ」をクリックします。

    図7-11 に示すように、「汎用アプリケーションの作成 - プロジェクトの名前付け」ページが表示されます。

  6. 「プロジェクト名」フィールドにわかりやすい名前を入力します。

    例: SOAComposite

  7. 「プロジェクト・テクノロジ」タブの「選択可能」リストで「SOA」をダブルクリックし、「選択済」リストに移動します。

    図7-11 「汎用アプリケーションの作成 - 汎用プロジェクトの名前付け」ページ

    図7-11の説明が続きます
    「図7-11 「汎用アプリケーションの作成 - 汎用プロジェクトの名前付け」ページ」の説明
  8. 「次へ」をクリックします。

    図7-12 に示すように、「汎用アプリケーションの作成 - SOA設定の構成」ページが表示されます。

    図7-12 「汎用アプリケーションの作成 - SOA設定の構成」ページ

    図7-12の説明が続きます
    「図7-12 「汎用アプリケーションの作成 - SOA設定の構成」ページ」の説明
  9. 「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して、「終了」をクリックします。

    新規アプリケーションおよびSOAプロジェクトが作成されました。これにより、SOAコンポジットが自動的に作成されます。

    図7-13 に示すように、「BPELプロセスの作成」ページが表示されます。

    図7-13 「BPELプロセスの作成」ページ

    図7-13の説明が続きます
    「図7-13 「BPELプロセスの作成」ページ」の説明
  10. 「名前」フィールドにBPELプロセスの名前を入力します。たとえば、CustomerDetailsです。
  11. 「テンプレート」リストで「サービスを後で定義」を選択し、「OK」をクリックします。

    CustomerDetails BPELプロセスが作成されました。

7.4.1.1.3 サービスの定義

次のステップは、サービスを定義することです。サービスを作成するには、次の手順を実行します。

  1. 「コンポーネント」ウィンドウで、「SOA」を選択します。

  2. 「サービス・アダプタ」リストから「AQアダプタ」を「composite.xml」ページの「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。

    アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  3. 「Next」をクリックします。

    図7-14 に示すように、アダプタ構成ウィザードの「サービス名」ページが表示されます。

    図7-14 「アダプタ構成ウィザード - サービス名」ページ

    図7-14の説明が続きます
    「図7-14 「アダプタ構成ウィザード - サービス名」ページ」の説明
  4. サービス名を指定して「次へ」をクリックします。

    図7-15 に示すように、アダプタ構成ウィザードの「サービス接続」ページが表示されます。

    図7-15 「アダプタ構成ウィザード - サービス接続」ページ

    図7-15の説明が続きます
    「図7-15 「アダプタ構成ウィザード - サービス接続」ページ」の説明
  5. プラス・アイコンをクリックしてデータベース接続を作成します。

    「データベース接続の作成」ページが表示されます。

    注意:

    Oracle Applicationsを実行中のデータベースに接続する必要があります。

  6. 次の情報を入力します。

    1. 「接続の作成場所」で、「アプリケーション・リソース」を選択します。

    2. 「接続名」フィールドで、データベース接続に使用する一意の名前を指定します。

      この例では、DBConnection1と入力します。

    3. 「接続タイプ」ボックスから「Oracle (JDBC)」を選択します。

    4. 「ユーザー名」フィールドで、データベースへのアクセスが認証されているユーザー名を指定します。

      この例では、scottと入力します。

    5. 「ロール」フィールドで、必要に応じてロールを入力します。

      これは、データベースに指定されているSYSDBAなどの特定のデータベース・ロールである必要があります。このフィールドはオプションです。この例では、「ロール」フィールドは空白にしておきます。

    6. 「パスワード」フィールドで、指定されたユーザー名に関連付けるパスワードを指定します。

      この例では、tigerと入力します。

    7. 「パスワードの保存」「パスワードのデプロイ」を順番に選択します。

    8. 「ドライバ」リストから「thin」を選択します。

    9. 「ホスト名」フィールドで、Oracleサーバーを実行するシステムを識別する値を入力します。

      TCP/IPで解決できるIPアドレスまたはホスト名(myserverなど)を使用します。デフォルト値はlocalhostです。

    10. 「JDBCポート」フィールドで、TCP/IPポートを識別する値を入力します。デフォルトは1521です。

    11. 「SID」フィールドで、Oracleデータベース・インスタンスの一意のシステム識別子(SID)の値を入力します。

      デフォルトはXEです。

    12. 「接続のテスト」をクリックし、指定した情報によりデータベースとの接続が確立されるかどうかを確認します。

      成功メッセージが表示されます。

    13. 「OK」をクリックします。

      作成した接続が「サービス名」ページの「接続」フィールドに表示されます。

      データベース接続の作成を完了すると、「JNDI名」フィールドにJava Naming and Directory Interface (JNDI)名が移入されます。JNDI名は、サービスがBPELサーバーにデプロイされるときに使用される接続のプレースホルダとなります。JNDIをプレースホルダとして使用すると、開発とその後の本番に異なるデータベースを使用できます。

      アダプタが管理モードで確実に実行されるように、JNDI名で指定した値がweblogic-ra.xmlファイルに存在する必要があります。デフォルトの接続インスタンスeis/AQ/aqSampleが用意されており、このフィールドのデフォルト値として使用できます。この接続インスタンスを使用するには、JNDI名jdbc/aqSampleを使用してデータソースを作成する必要もあります。

  7. 「Next」をクリックします。

    図7-16 に示すように、「アダプタ構成ウィザード - アダプタ・インタフェース」ページが表示されます。

  8. 「アダプタ・インタフェース」ページで、「操作およびスキーマから定義(後で指定)」を選択します。

    図7-16 「アダプタ構成ウィザード - アダプタ・インタフェース」ページ

    図7-16の説明が続きます
    「図7-16 「アダプタ構成ウィザード - アダプタ・インタフェース」ページ」の説明
  9. 「Next」をクリックします。

    「操作」ページが表示されます。

  10. 次の3つのオペレーションがサポートされます。

    • デキュー: キューから受信するメッセージをポーリングします。

    • エンキュー: 発信メッセージをキューに置きます。

    • エンキュー/デキュー: 発信メッセージをキューに置き、キュー上でレスポンス・メッセージを待機します。

    この例では、図7-17 に示すように「デキュー」を選択します。

    操作には、選択した操作名に基づいて名前が自動的に付けられます。ただし、「操作名」フィールドは編集できます。

    図7-17 「アダプタ構成ウィザード - 操作」ページ

    図7-17の説明が続きます
    「図7-17 「アダプタ構成ウィザード - 操作」ページ」の説明

    注意:

    ADT (Oracleオブジェクト)データ型に基づいてキューからデキューするインバウンドOracle AQアダプタを使用するSOAコンポジットを作成したときに、.jca構成ファイル内のSchemaValidationプロパティがtrueに設定されている場合は、デキューされたメッセージ内にADTペイロードの空(NULL)のメンバーが存在すると、AQ_INVALID_PAYLOADエラーが発生し、さらにはメッセージが拒否されることになります。メッセージが拒否されないようにするには、SchemaValidationプロパティをfalseに設定する必要があります。

  11. 「Next」をクリックします。

    図7-18 に示すように、アダプタ構成ウィザードの「キュー名」ページが表示されます。

    図7-18 「アダプタ構成ウィザード - キュー名」ページ

    図7-18の説明が続きます
    「図7-18 「アダプタ構成ウィザード - キュー名」ページ」の説明
  12. 「データベース・スキーマ」リストからデータベース・スキーマを選択するか、「参照」をクリックしてスキーマを参照します。この例では、「参照」をクリックします。

    図7-19 に示すように、「キューの選択」ダイアログが表示されます。

    図7-19 「キューの選択」ダイアログ

    図7-19の説明が続きます
    「図7-19 「キューの選択」ダイアログ」の説明
  13. 必要なキューを選択して「OK」をクリックします。

    この例では、「SERVICE_IN_QUEUE」を選択します。図7-20 に示すように、「キュー名」フィールドにSERVICE_IN_QUEUEが移入された状態で「キュー名」ページが再表示されます。

    図7-20 「アダプタ構成ウィザード - キュー名」ページ

    図7-20の説明が続きます
    「図7-20 「アダプタ構成ウィザード - キュー名」ページ」の説明
  14. 「Next」をクリックします。

    図7-21 に示すように、アダプタ構成ウィザードの「キュー・パラメータ」ページが表示されます。

    図7-21 「アダプタ構成ウィザード - キュー・パラメータ」ページ

    図7-21の説明が続きます
    「図7-21 「アダプタ構成ウィザード - キュー・パラメータ」ページ」の説明
  15. パラメータ値を入力して「次へ」をクリックします。

    • 相関ID: 1文字から30文字までの長さでオプションの相関IDを入力します。これは、同じ相関IDを使用したデキュー・アクティビティによって後から取得されるメッセージの識別に使用されます。

      入力する値は、非同期通信のためにエンキューの送信元とデキューの受信先で同意されています。相関IDはAQヘッダー・プロパティにマップされます。インバウンド方向の相関IDにより、デキューするメッセージの選択が可能になります。このフィールドはオプションです。値を入力しない場合は、キューにあるすべてのメッセージが処理されます。

      アウトバウンド方向の相関IDの値を入力した場合、適切なIDを持つすべてのアウトバウンド・メッセージが入力した値に設定されます。この値はアウトバウンド・ヘッダーの相関フィールドで、メッセージごとにオーバーライドできます。

    • デキュー条件: 「操作」ページでデキューを選択した場合にのみ表示されます。

      SQL問合せのWHERE句に似たブール式を入力します。このブール式には、メッセージ・プロパティ、ユーザー・データ・プロパティ(オブジェクト・ペイロードのみ)およびPL/SQLまたはSQL関数に関する条件を含めることができます。複数のメッセージがデキュー条件を満たす場合、デキュー順序は不定になり、キューのソート順は考慮されません。

      このフィールドは、インバウンド・シングル・コンシューマおよびマルチ・コンシューマ・キューに対して表示されます。

  16. 「Next」をクリックします。

    図7-22 に示すように、アダプタ構成ウィザードの「オブジェクト・ペイロード」ページが表示されます。

    図7-22 「アダプタ構成ウィザード - オブジェクト・ペイロード」ページ

    図7-22の説明が続きます
    「図7-22 「アダプタ構成ウィザード - オブジェクト・ペイロード」ページ」の説明
    1. 「ビジネス・ペイロード」で、「オブジェクト内のフィールド」を選択します。

    2. 「ペイロード・フィールド・オプション」セクションで「参照」をクリックし、ビジネス・ペイロードが含まれるフィールドを選択します。

      図7-23 に示すように、「ペイロード・フィールドの選択」ダイアログが表示されます。

      図7-23 「ペイロード・フィールドの選択」ダイアログ

      図7-23の説明が続きます
      「図7-23 「ペイロード・フィールドの選択」ダイアログ」の説明
  17. フィールドを選択して「OK」をクリックします。

    この例では、「PAYLOAD (CLOB)」を選択します。

    図7-24 に示すように、すべてのペイロード詳細が入力された状態で「オブジェクト・ペイロード」フィールドが表示されます。

    図7-24 「アダプタ構成ウィザード - オブジェクト・ペイロード」ページ

    図7-24の説明が続きます
    「図7-24 「アダプタ構成ウィザード - オブジェクト・ペイロード」ページ」の説明
  18. 「ペイロード以外のフィールドへのアクセスも必要」を選択して「次へ」をクリックします。

    「メッセージ」ページが表示されます。

    「メッセージ」ページには、次のオプションが表示されます。

    • ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする): スキーマを指定しない場合は、このオプションを選択します。このオプションを選択すると、「メッセージ・スキーマ」の他のフィールドがすべて無効化されます。

    • ネイティブ・フォーマットのスキーマの定義: ネイティブ・フォーマットの定義プロセスを支援するネイティブ・フォーマット・ビルダー・ウィザードを起動するには、これをクリックします。

    • URL: スキーマ・ファイルURLのパスを入力するか、「参照」をクリックしてパスを参照できます。

    • スキーマ要素: スキーマ要素名。

  19. この例では、「スキーマ・ファイルを参照」をクリックしてスキーマ・ファイルURLを参照します。

    図7-25 に示すように、「タイプ・チューザ」ダイアログが表示されます。

    図7-25 「タイプ・チューザ」ダイアログ

    図7-25の説明が続きます
    「図7-25 「タイプ・チューザ」ダイアログ」の説明
  20. 図7-25 に示すように、リストから「SERVICE」を選択して「OK」をクリックします。

    図7-26 に示すように、「スキーマの場所」および「スキーマ要素」のフィールドに移入済の「メッセージ」ページが表示されます。

    図7-26 「アダプタ構成ウィザード - メッセージ」ページ

    図7-26の説明が続きます
    「図7-26 「アダプタ構成ウィザード - メッセージ」ページ」の説明
  21. 「Next」をクリックします。

    「終了」画面が表示されます。このページには、ウィザードにより作成されるアダプタ・ファイルのパスと名前が表示されます。

  22. 「終了」をクリックします。

    デキュー操作を持つAQアダプタ・サービスの作成を完了しました。

  23. 「OK」をクリックします。

7.4.1.1.4 生成されたWSDLおよびJCAファイル

アダプタ・サービスにより、定義済のアダプタ・インタフェースとして機能するWSDLおよびJCAファイルが生成されます。

デキュー操作用に生成されたWSDLファイルを次に示します。

<definitions name="Inbound" targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:obj1="http://xmlns.oracle.com/xdb/SCOTT" xmlns:imp1="http://www.oracle.com/service/contract">
    <types>
    <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns:hdr="http://xmlns.oracle.com/pcbpel/adapter/aq/inbound/" xmlns:obj1="http://xmlns.oracle.com/xdb/SCOTT">
       <import namespace="http://xmlns.oracle.com/xdb/SCOTT" schemaLocation="xsd/SCOTT_SERVICE_TYPE.xsd"/>
        <import namespace="http://xmlns.oracle.com/pcbpel/adapter/aq/inbound/" schemaLocation="xsd/aqAdapterInboundHeader.xsd"/>
            <complexType name="HeaderCType">
                <sequence>
                    <element name="QueueHeader" type="hdr:HeaderType"/>
                    <element name="PayloadHeader" type="obj1:SERVICE_TYPE"/>
                </sequence>
            </complexType>
            <element name="Header" type="tns:HeaderCType"/>
        </schema>
        <schema xmlns="http://www.w3.org/2001/XMLSchema">
            <import namespace="http://www.oracle.com/service/contract" schemaLocation="xsd/service.xsd"/>
        </schema>
    </types>
    <message name="SERVICE_msg">
        <part name="SERVICE" element="imp1:SERVICE"/>
    </message>
    <message name="Header_msg">
        <part name="Header" element="tns:Header"/>
    </message>
    <portType name="Dequeue_ptt">
        <operation name="Dequeue">
            <input message="tns:SERVICE_msg"/>
        </operation>
    </portType>
    <plt:partnerLinkType name="Dequeue_plt">
        <plt:role name="Dequeue_role">
            <plt:portType name="tns:Dequeue_ptt"/>
        </plt:role>
    </plt:partnerLinkType>
</definitions>

7.4.1.2 オブジェクトとADTペイロードのデキューおよびエンキュー

デキューとエンキューについては、ADTキュー」を参照してください。

オブジェクト全体をペイロードとしてエンキューまたはデキューするには、次の手順を実行します。

  • ステップ10「エンキュー」または「デキュー」を選択します。

  • 「オブジェクトCUSTOMER_TYPE全体」を選択し、ステップ16に進みます。

ADTペイロードの使用例の実例を参照するには、次のサンプルのいずれかを参照してください。

  • adapters-aq-102-adt

  • adapters-aq-110-supportedadttypes

これらのサンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

注意:

ALTER OBJECTなどの展開コマンドを使用してADTタイプを修正した場合は、AQアダプタによりORA-25215 SQL例外がスローされます。

この例外の回避するには、CREATE OBJECTのみを使用して(ALTER OBJECTなどの展開コマンドを発行することなく)ADT TYPESに属性を追加します。

7.4.1.3 オブジェクト・ペイロードの1つの列のデキュー

概要では、オブジェクト・ペイロード内の単一のフィールドまたは列をデキューする例を示しました。

オブジェクト内の1つのフィールドをデキューするアダプタを作成するには、アダプタ構成ウィザードの「オブジェクト・ペイロード」ページで次の手順を実行する必要があります。

  1. 「オブジェクト内のフィールド」を選択します。
  2. 「フィールド名」フィールドの端にある「参照」をクリックします。

    「ペイロード・フィールドの選択」ダイアログが表示されます。

  3. ビジネス・ペイロードを格納するフィールドを選択して「OK」をクリックします。

    図7-27 に示すように、「フィールド名」フィールドに選択したフィールドが移入された状態でアダプタ構成ウィザードの「オブジェクト・ペイロード」ページが表示されます。

    図7-27 「アダプタ構成ウィザード - オブジェクト・ペイロード」ページ

    図7-27の説明が続きます
    「図7-27 「アダプタ構成ウィザード - オブジェクト・ペイロード」ページ」の説明
  4. 「ペイロード以外のフィールドへのアクセスも必要」を選択して「次へ」をクリックします。

生成されたJCAファイルの次のセグメントには、ペイロード・ヘッダー・フィールド以外に、1つのフィールド(この場合はPAYLOADという名前のフィールド)がデキューされることが指定されています。

<adapter-config name="Inbound" adapter="AQ Adapter" xmlns="http://platform.integration.oracle/blocks
    /adapter/fw/metadata">
    <connection-factory location="eis/AQ/aqSample" 
       UIConnectionName="Connection1" adapterRef=""/>
  <endpoint-activation portType="Dequeue_ptt" operation="Dequeue">
    <activation-spec    className="oracle.tip.adapter.aq.inbound.AQDequeueActivationSpec">
      <property name="QueueName" value="SERVICE_IN_QUEUE"/>
      <property name="ObjectFieldName" value="PAYLOAD"/>
      <property name="PayloadHeaderRequired" value="true"/>
      <property name="SchemaValidation" value="false"/>
    </activation-spec>
  </endpoint-activation>
</adapter-config>

オブジェクト・ペイロード内の1つのフィールドまたは列がデキューされるADT CLOBの使用例の実例を参照するには、次のサンプルを参照してください。

  • adapters-aq-103-adtclobpayload

  • adapters-aq-105-adtclobopaquepayload

これらのサンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

7.4.1.4 エンキュー/デキュー操作タイプの構成

この使用例では、発信メッセージをキューに蓄積し、別のキュー上のレスポンス・メッセージを待機する、エンキュー/デキュー操作タイプを構成する手順について説明します。

この項には次のトピックが含まれます:

7.4.1.4.1 前提条件の確認

この使用例を実行するには、SCOTTスキーマを持つデータベースへのアクセス権限が必要です。また、adapters-aq-104-requestreplyサンプルに含まれているartifacts.zipファイルの次のファイルも必要となります。

  • create_queues.sql

  • drop_queues.sql

  • enqueue.sql

  • SendReply.sql

  • setup_user.sql

adapters-aq-104-requestreplyサンプル・コードを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

7.4.1.4.2 アプリケーションおよびSOAプロジェクトの作成

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。「アプリケーションおよびSOAプロジェクトの作成」に記載された手順に従って、アプリケーションおよびSOAプロジェクトを作成します。

7.4.1.4.3 Oracle AQアダプタ・サービスの定義

発信メッセージをキューに蓄積し、キューのレスポンス・メッセージを待機するOracle AQアダプタ・サービスを作成する手順は、次のとおりです。

  1. 「コンポーネント」ウィンドウで、「SOA」を選択します。

  2. 「サービス・アダプタ」リストから「AQアダプタ」を「composite.xml」ページの「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。

    アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  3. 「Next」をクリックします。

    図7-14 に示すように、アダプタ構成ウィザードの「サービス名」ページが表示されます。

  4. サービス名を指定して「次へ」をクリックします。

    アダプタ構成ウィザードの「サービス接続」ページが表示されます。

  5. プラス・アイコンをクリックしてデータベース接続を作成します。

    「データベース接続の作成」ページが表示されます。

    注意:

    Oracle Applicationsを実行中のデータベースに接続する必要があります。

  6. 次の情報を入力します。

    1. 「接続の作成場所」で、「アプリケーション・リソース」を選択します。

    2. 「接続名」フィールドで、データベース接続に使用する一意の名前を指定します。

    3. 「接続タイプ」ボックスから「Oracle (JDBC)」を選択します。

    4. 「ユーザー名」フィールドで、データベースへのアクセスが認証されているユーザー名を指定します。

      この例では、scottと入力します。

    5. 「ロール」フィールドで、必要に応じてロールを入力します。

      これは、データベースに指定されているSYSDBAなどの特定のデータベース・ロールである必要があります。このフィールドはオプションです。この例では、「ロール」フィールドは空白にしておきます。

    6. 「パスワード」フィールドで、指定されたユーザー名に関連付けるパスワードを指定します。

      この例では、tigerと入力します。

    7. 「パスワードの保存」「パスワードのデプロイ」を順番に選択します。

    8. 「ドライバ」リストから「thin」を選択します。

    9. 「ホスト名」フィールドで、Oracleサーバーを実行するシステムを識別する値を入力します。

      TCP/IPで解決できるIPアドレスまたはホスト名(myserverなど)を使用します。デフォルト値はlocalhostです。

    10. 「JDBCポート」フィールドで、TCP/IPポートを識別する値を入力します。デフォルトは1521です。

    11. 「SID」フィールドで、Oracleデータベース・インスタンスの一意のシステム識別子(SID)の値を入力します。

      デフォルトはXEです。

    12. 「接続のテスト」をクリックし、指定した情報によりデータベースとの接続が確立されるかどうかを確認します。

      成功メッセージが表示されます。

    13. 「OK」をクリックします。

      作成した接続が「サービス接続」ページの「接続」フィールドに表示されます。

      また、データベース接続を作成した後、「JNDI名」フィールドに移入が行われます。

      アダプタが管理モードで確実に実行されるように、JNDI名で指定した値がOracle AQアダプタweblogic-ra.xmlファイルに存在する必要があります。デフォルトの接続インスタンスeis/AQ/aqSampleが用意されており、このフィールドのデフォルト値として使用できます。この接続インスタンスを使用するには、JNDI名jdbc/aqSampleを使用してデータソースを作成する必要もあります。

  7. 「Next」をクリックします。

    アダプタ構成ウィザードの「アダプタ・インタフェース」ページが表示されます。

  8. 「アダプタ・インタフェース」ページで、「操作およびスキーマから定義(後で指定)」を選択します。

  9. 「Next」をクリックします。

    「操作」ページが表示されます。

  10. 図7-17 に示すように「エンキュー/デキュー」を選択します。

    図7-28 「アダプタ構成ウィザード - 操作」ページ

    図7-28の説明が続きます
    「図7-28 「アダプタ構成ウィザード - 操作」ページ」の説明
  11. 「Next」をクリックします。

    図7-18 に示すように、アダプタ構成ウィザードの「キュー名」ページが表示されます。

    図7-29 「アダプタ構成ウィザード - キュー名」ページ

    図7-29の説明が続きます
    「図7-29 「アダプタ構成ウィザード - キュー名」ページ」の説明
  12. リクエスト・キューを参照するには、「参照」をクリックします。

    図7-30 に示すように、「キューの選択」ダイアログが表示されます。

    図7-30 「キューの選択」ダイアログ

    図7-30の説明が続きます
    「図7-30 「キューの選択」ダイアログ」の説明
  13. 必要なキューを選択して「OK」をクリックします。

    この例では、「CORRELATION_REQUEST」を選択します。図7-31 に示すように、「キュー名」フィールドにCORRELATION_REQUESTが移入された状態で「キュー名」ページが表示されます。

  14. ステップ1213を繰り返して、キュー情報をエンキューします。

    図7-31 に示すように、「キュー名」ページが表示されます。

    図7-31 「アダプタ構成ウィザード - キュー名」ページ

    図7-31の説明が続きます
    「図7-31 「アダプタ構成ウィザード - キュー名」ページ」の説明
  15. 「Next」をクリックします。

    図7-32 に示すように、アダプタ構成ウィザードの「キュー・パラメータ」ページが表示されます。

    図7-32 「アダプタ構成ウィザード - キュー・パラメータ」ページ

    図7-32の説明が続きます
    「図7-32 「アダプタ構成ウィザード - キュー・パラメータ」ページ」の説明
  16. 「Next」をクリックします。

    図7-33 に示すように、アダプタ構成ウィザードの「オブジェクト・ペイロード」ページが表示されます。

    図7-33 「アダプタ構成ウィザード - オブジェクト・ペイロード」ページ

    図7-33の説明が続きます
    「図7-33 「アダプタ構成ウィザード - オブジェクト・ペイロード」ページ」の説明
  17. 「ビジネス・ペイロード」オプション、「オブジェクトCORRELATIONREQUEST_TYPE全体」および「オブジェクトCORRELATIONREPLY_TYPE全体」を選択します。

  18. 「Next」をクリックします。

    「終了」画面が表示されます。このページには、ウィザードにより作成されるアダプタ・ファイルのパスと名前が表示されます。

  19. 「終了」をクリックします。

    同期エンキュー/デキュー操作に対して、AQアダプタ・サービスの作成を完了しました。

  20. 「OK」をクリックします。

7.4.1.4.4 サービスとアクティビティのワイヤリング

BPELプロセスおよびアウトバウンド・アダプタ参照をアセンブルまたは接続する必要があります。コンポーネントを接続する手順は、次のとおりです。

  1. 「コンポーネント」領域にあるBPELプロセス内の小さい三角形を、「外部参照」領域のRequestReply内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。

    JDeveloperのcomposite.xmlが図7-34 のように表示されます。

    図7-34 JDeveloper - composite.xml

    図7-34の説明が続きます
    「図7-34 JDeveloper - composite.xml」の説明
  2. 「ファイル」「すべて保存」を順番にクリックします。

invokeアクティビティの追加

  1. 「BPELProcess1」をダブルクリックします。「BPELProcess1.bpel」ページが表示されます。

  2. 「コンポーネント」ウィンドウから設計領域にinvokeアクティビティをドラッグ・アンド・ドロップします。

  3. invokeアクティビティをダブルクリックします。「Invoke」ダイアログが表示されます。

  4. 「名前」フィールドにinvokeアクティビティの名前を入力します。

  5. 「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。図7-35 に示すように、「パートナ・リンク・チューザ」ダイアログが表示されます。

    図7-35 「パートナ・リンク・チューザ」ダイアログ

    図7-35の説明が続きます
    「図7-35 「パートナ・リンク・チューザ」ダイアログ」の説明
  6. 「RequestReply」を選択して「OK」をクリックします。

  7. 図7-36 に示すように、「Invoke」ダイアログで、「入力変数」フィールドの右にある「入力変数の自動作成」アイコンをクリックします。「変数の作成」ダイアログが表示されます。

    図7-36 「Invoke」ダイアログ

    図7-36の説明が続きます
    「図7-36 「起動」ダイアログ」の説明
  8. デフォルトの変数名を選択し、「OK」をクリックします。「変数」フィールドにデフォルトの変数名が移入されます。

  9. 「OK」をクリックします。図7-37 に示すように、JDeveloper「BPELProcess1.bpel」ページが表示されます。

    図7-37 JDeveloper - 「BPELProcess1.bpel」ページ

    図7-37の説明が続きます
    「図7-37 JDeveloper - 「BPELProcess1.bpel」ページ」の説明

assignアクティビティの追加

  1. 「コンポーネント」ウィンドウから設計領域にassignアクティビティをドラッグ・アンド・ドロップします。

  2. assignアクティビティをダブルクリックします。「Assign」ダイアログが表示されます。

  3. 「名前」フィールドにassignアクティビティの名前を入力します。

  4. 「コピー操作」タブをクリックします。

  5. 「コピー操作」を選択します。「コピー操作の作成」ダイアログが表示されます。

  6. 図7-38 に示すように、inputVariableからoutputVariableへのコピー操作を作成します。

    図7-38 「コピー操作の作成」ダイアログ

    図7-38の説明が続きます
    「図7-38 「コピー操作の作成」ダイアログ」の説明
  7. 「コピー操作の作成」ダイアログで「OK」をクリックします。

  8. 図7-39 に示すように、inputVariableからInvoke_1_Enqueue_InputVariableへの別のコピー操作を作成します。

    図7-39 「コピー操作の作成」ダイアログ

    図7-39の説明が続きます
    「図7-39 「コピー操作の作成」ダイアログ」の説明
  9. 「コピー操作の作成」ダイアログで「OK」をクリックします。

  10. 図7-40 に示すように、「OK」をクリックしてJDeveloperの「BPELProcess1.bpel」ページに戻ります。

    図7-40 JDeveloper - BPELProcess1.bpel

    図7-40の説明が続きます
    「図7-40 JDeveloper - BPELProcess1.bpel」の説明
  11. 「ファイル」「すべて保存」を順番にクリックします。

receiveアクティビティの追加

  1. 「コンポーネント」ウィンドウから設計領域にreceiveアクティビティをドラッグ・アンド・ドロップします。
  2. receiveアクティビティをダブルクリックします。「Receive」ダイアログが表示されます。
  3. 「名前」フィールドにreceiveアクティビティの名前を入力します。
  4. 「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。「パートナ・リンク・チューザ」ダイアログが表示されます。
  5. 「RequestReply」を選択して「OK」をクリックします。
  6. 「Receive」ダイアログで、「変数」フィールドの右にある「変数の自動作成」アイコンをクリックします。「変数の作成」ダイアログが表示されます。
  7. デフォルトの変数名を選択し、「OK」をクリックします。デフォルトの変数名が「変数」フィールドに移入されます。
  8. 「インスタンスの作成」を選択して、「OK」をクリックします。図7-41 に示すように、JDeveloperの「BPELProcess1.bpel」ページが表示されます。

    図7-41 JDeveloper - BPELProcess1.bpel

    図7-41の説明が続きます
    「図7-41 JDeveloper - BPELProcess1.bpel」の説明
7.4.1.4.5 JDeveloperを使用したデプロイ

前述の手順で作成したSOAプロジェクトおよびアプリケーションについて、アプリケーション・プロファイルをデプロイする必要があります。

JDeveloperを使用してアプリケーション・プロファイルをデプロイする手順は、次のとおりです。

  1. 「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」に示す手順を使用して、アプリケーション・サーバー接続を作成します。
  2. Oracle JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」で説明されている手順を使用して、アプリケーションをデプロイします。
7.4.1.4.6 Fusion Middleware Controlコンソールを使用した監視

Fusion Middleware Controlコンソールを使用して、デプロイ済のコンポジットを監視できます。次の手順を実行します。

  1. http://servername:portnumber/emにナビゲートします。デプロイしたコンポジットがアプリケーション・ナビゲータに表示されます。
  2. インスタンスをクリックします。「フローのトレース」ページが表示されます。
  3. 「BPEL」コンポーネント・インスタンスをクリックします。「監査」ページが表示されます。
  4. 「フロー - デバッグ」タブをクリックしてインスタンスをデバッグします。
7.4.1.4.7 生成されたWSDLおよびJCAファイル

エンキュー/デキュー操作用に生成されたWSDLファイルを次に示します。

<?xml version = '1.0' encoding = 'UTF-8'?>
<?binding.jca Inbound_aq.jca?>
<definitions name="Inbound" targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:obj1="http://xmlns.oracle.com/xdb/SCOTT" xmlns:imp1="http://www.oracle.com/ipdemo">
    <types>
        <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/" xmlns:hdr="http://xmlns.oracle.com/pcbpel/adapter/aq/inbound/" xmlns:obj1="http://xmlns.oracle.com/xdb/SCOTT">
            <import namespace="http://xmlns.oracle.com/xdb/SCOTT" schemaLocation="xsd/SCOTT_MAGAZINE_TYPE.xsd"/>
            <import namespace="http://xmlns.oracle.com/pcbpel/adapter/aq/inbound/" schemaLocation="xsd/aqAdapterInboundHeader.xsd"/>
            <complexType name="HeaderCType">
                <sequence>
                    <element name="QueueHeader" type="hdr:HeaderType"/>
                    <element name="PayloadHeader" type="obj1:MAGAZINE_TYPE"/>
                </sequence>
            </complexType>
            <element name="Header" type="tns:HeaderCType"/>
        </schema>
        <schema xmlns="http://www.w3.org/2001/XMLSchema">
            <import namespace="http://www.oracle.com/ipdemo"   	schemaLocation="xsd/simpleMagazine.xsd"/>
        </schema>
<?xml version = '1.0' encoding = 'UTF-8'?>
   <?binding.jca Inbound_aq.jca?>
    <definitions name="Inbound"
    targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/
     xmlns="http://schemas.xmlsoap.org/wsdl/"
      xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/"
      xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
      xmlns:obj1="http://xmlns.oracle.com/xdb/SCOTT"
     xmlns:imp1="http://www.oracle.com/ipdemo">
     <types>
 <schema attributeFormDefault="qualified" elementFormDefault="qualified"
    targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/"
    xmlns="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/aq/Inbound/"
xmlns:hdr="http://xmlns.oracle.com/pcbpel/adapter/aq/inbound/"

xmlns:obj1="http://xmlns.oracle.com/xdb/SCOTT">
<import namespace="http://xmlns.oracle.com/xdb/SCOTT"
schemaLocation="xsd/SCOTT_MAGAZINE_TYPE.xsd"/>
<import namespace="http://xmlns.oracle.com/pcbpel/adapter/aq/inbound/"

     schemaLocation="xsd/aqAdapterInboundHeader.xsd"/>
<complexType name="HeaderCType">
 <sequence>
<element name="QueueHeader" type="hdr:HeaderType"/>
<element name="PayloadHeader" type="obj1:MAGAZINE_TYPE"/>
 </sequence>
</complexType>

   <element name="Header" type="tns:HeaderCType"/>
</schema>

        <schema xmlns="http://www.w3.org/2001/XMLSchema">
       <import namespace="http://www.oracle.com/ipdemo"
        schemaLocation="xsd/simpleMagazine.xsd"/>
</schema>
</types>
<message name="simpleMagazine_msg">

   <part name="simpleMagazine" element="imp1:simpleMagazine"/>
</message>
     <message name="Header_msg">
     <part name="Header" element="tns:Header"/>
</message>
<portType name="Dequeue_ptt">
    <operation name="Dequeue">
       <input message="tns:simpleMagazine_msg"/>
    </operation>
</portType>
    <plt:partnerLinkType name="Dequeue_plt">
        <plt:role name="Dequeue_role">
            <plt:portType name="tns:Dequeue_ptt"/>
        </plt:role>
   </plt:partnerLinkType>
</definitions>
             

エンキュー/デキュー操作用に生成されたJCAファイルを次に示します。

<adapter-config name="RequestReply" adapter="AQ Adapter" wsdlLocation="RequestReply.wsdl" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
  
  <connection-factory location="eis/AQ/aqSample" UIConnectionName="aqSample" adapterRef=""/>
  <endpoint-activation portType="Dequeue_ptt" operation="Dequeue" UITransmissionPrimitive="Request-response">
    <activation-spec className="oracle.tip.adapter.aq.inbound.AQDequeueActivationSpec">
      <property name="QueueName" value="CORRELATION_REPLY"/>
    </activation-spec>
  </endpoint-activation>
 
  <endpoint-interaction portType="Enqueue_ptt" operation="Enqueue" UITransmissionPrimitive="Request-response">
    <interaction-spec className="oracle.tip.adapter.aq.outbound.AQEnqueueInteractionSpec">
      <property name="QueueName" value="CORRELATION_REQUEST"/>
    </interaction-spec>
  </endpoint-interaction>
 
</adapter-config>

7.4.1.5 デキュー中のメッセージのフィルタ処理に対する相関IDの使用

特定の相関IDのメッセージのみをデキューするアダプタを設定するには、次の手順を実行します。

  • ステップ10「デキュー」操作を選択します。

  • ステップ15で相関IDを入力します。

アダプタにより、それと同様の相関IDでエンキューされたメッセージのみがデキューされます。

この使用例(Oracle AQアダプタにより、それと同様の相関IDでエンキューされたメッセージがデキューされる例)の実例を参照するには、次のサンプルを参照してください。

  • adapters-aq-106-messagerejection

  • adapters-aq-109-nativecorrelation

  • adapters-aq-112-prioritymessageselector

  • adapters-aq-113-payloadbasedmessageselector

これらのサンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

7.4.1.6 マルチ・サブスクライバ・キューからのエンキューおよびデキュー

マルチ・サブスクライバ・キューには、複数のユーザーがアクセスできます。また、それらのユーザーがキュー内の特定のタイプのメッセージのみを対象とする場合もあります。たとえば、$100,000を超えるローンには監督者の承認が必要であるのに対して、$100,000未満のローンは通常のローン承認スタッフが承認できるローン・アプリケーションがあり、そのアプリケーションにマルチ・ユーザー・キューがあるとします。この場合、BPELプロセスでは、1つのアダプタが監督者用の巨額ローンのローン・アプリケーションのエンキューに使用され、もう1つのアダプタが同じマルチ・サブスクライバ・キューにある一般スタッフ用の小額ローンのローン・アプリケーションのエンキューに使用されます。

マルチ・サブスクライバ・キューにエンキューするアダプタを指定し、「受信者」フィールドでキュー・パラメータを指定します。

ステップ15で、「受信者」フィールドにBobを指定します。

次に、受信者リストBobを使用してエンキューするアダプタを定義して生成されたJCAファイルのコードを示します。

<adapter-config name="Inbound" adapter="AQ Adapter" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    <connection-factory location="eis/AQ/aqSample" UIConnectionName="aqSample" adapterRef=""/>
  <endpoint-interaction portType="Enqueue_ptt" operation="Enqueue">
    <interaction-spec className="oracle.tip.adapter.aq.outbound.AQEnqueueInteractionSpec">
      <property name="QueueName" value="PURCHASEORDER_APPROVAL"/>
      <property name="RecipientList" value="Bob"/>
    </interaction-spec>
  </endpoint-interaction>
</adapter-config>

マルチ・サブスクライバ・キューからデキューすると、「キュー・パラメータ」ウィンドウが表示されます。

「コンシューマ」フィールドは、コンシューマ名またはキュー・サブスクライバ名を指定するフィールドです。デキューするメッセージのエンキュー・プロセスの「受信者」エントリと一致する必要があります。マルチ・コンシューマ・キューへのサブスクライブには、このフィールドが必要です。

次に、コンシューマ名を使用するアダプタを定義して生成されるJCAファイルのコードを示します。

<adapter-config name="Dequer_Bob" adapter="AQ Adapter" xmlns="http://platform.integration.oracle/blocks/adapter/fw/metadata">
    <connection-factory location="eis/AQ/manas" UIConnectionName="aqSample" adapterRef=""/>
  <endpoint-activation portType="Dequeue_ptt" operation="Dequeue">
    <activation-spec className="oracle.tip.adapter.aq.inbound.AQDequeueActivationSpec">
      <property name="QueueName" value="PURCHASEORDER_APPROVAL"/>
      <property name="Consumer" value="Bob"/>
      <property name="SchemaValidation" value="false"/>
    </activation-spec>
  </endpoint-activation>
</adapter-config>

マルチ・サブスクライバ・キューからのエンキューとデキューを示す、この使用例の実例を参照するには、次のサンプルを参照してください。

  • adapters-aq-114-multiconsumeroutbound

これらのサンプルを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

7.4.2 ADTキュー

このサンプルでは、ビジネス・プロセスはAQアダプタからメッセージを受信し、ペイロードをアウトバウンド・メッセージにコピーし、アウトバウンド・メッセージを使用してAQアダプタを起動します。関係するキューはADTキューです。このシナリオでは、ユーザーがADT全体をペイロードとして使用するように選択しており、AQアダプタ・ウィザードではキュー構造に従ってSCOTT_CUSTOMER_TYPE.xsdにスキーマが生成されています。実行時には、アダプタによりスキーマに一致するXMLファイルがメッセージごとに作成されます。

この項には次のトピックが含まれます:

7.4.2.1 前提条件の確認

SCOTTスキーマを持つデータベースへのアクセス権限が必要です。

この使用例を実行するには、adapters-aq-102-adtサンプルに含まれているartifacts.zipファイルの次のSQLファイルが必要です。これらのファイルは、artifacts.zipファイルのartifacts/sqlサブディレクトリにあります。次に示す順序でSQLファイルを実行します。

  • setup_user.sql

  • create_type_customer.sql

  • create_queues.sql

  • enqueue_customer.sql

  • dequeue_customer.sql

adapters-aq-102-adtサンプル・コードを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

7.4.2.2 アプリケーションおよびSOAプロジェクトの作成

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。次の手順に従ってアプリケーションとSOAプロジェクトを作成します。

  1. JDeveloper「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。

    「汎用アプリケーションの作成 - アプリケーションの名前付け」ページが表示されます。

  2. 「アプリケーション名」フィールドにADTと入力して「次へ」をクリックします。

    「汎用アプリケーションの作成 - プロジェクトの名前付け」ページが表示されます。

  3. 「プロジェクト名」フィールドにADTと入力します。
  4. 「プロジェクト・テクノロジ」タブの「選択可能」リストで「SOA」をダブルクリックし、「選択済」リストに移動します。
  5. 「次へ」をクリックします。

    「汎用アプリケーションの作成 - SOA設定の構成」ページが表示されます。

  6. 「コンポジット・テンプレート」リストから「メディエータを使用するコンポジット」を選択して「終了」をクリックします。

    新規アプリケーションおよびSOAプロジェクトが作成されました。

    図7-42 に示すように、「メディエータの作成」ページが表示されます。

    図7-42 「メディエータの作成」ページ

    図7-42の説明が続きます
    「図7-42 「メディエータの作成」ページ」の説明
  7. 「名前」フィールドにメディエータ・コンポーネントの名前を入力します。この例では、デフォルト名のMediator1を保持します。
  8. 「テンプレート」リストで「インタフェースを後で定義」を選択し、「OK」をクリックします。

    メディエータ・コンポーネントが作成されました。

7.4.2.3 インバウンドOracle AQアダプタの作成

次の手順に従ってインバウンドOracle AQアダプタ・サービスを作成します。

  1. 「コンポーネント」ウィンドウで、「SOA」を選択します。

  2. 「コンポーネント」ウィンドウの「サービス・アダプタ」リストから、「AQアダプタ」をcomposite.xmlページ内の「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。

    「アダプタ構成ウィザード」が表示されます。

  3. 「Next」をクリックします。

    「サービス名」ページが表示されます。

  4. 「サービス名」ページでサービスの名前を指定します。この例では、dequeueと入力します。

  5. 「Next」をクリックします。

    「サービス接続」ページが表示されます。Oracle AQアダプタを構成するにはデータベース接続が必要です。新規接続を作成するか、既存のデータベース接続を選択できます。

  6. 「新規データベース接続を作成します。」アイコンをクリックしてデータベース接続を作成します。

    「データベース接続の作成」ページが表示されます。

  7. 「サービスの定義」のステップ6の説明に従ってデータベース接続を作成します。

  8. 「OK」をクリックして新規データベース接続の作成プロセスを完了します。

    「サービス接続」ページが表示され、データベース接続のサマリーが示されます。

  9. 「Next」をクリックします。

    「アダプタ・インタフェース」ページが表示されます。

  10. 「アダプタ・インタフェース」ページで、「操作およびスキーマから定義(後で指定)」を選択します。

  11. 「Next」をクリックします。

    「操作」ページが表示されます。

  12. 「デキュー」を選択します。

  13. デフォルトの操作名を受け入れて「次へ」をクリックします。

    「キュー名」ページが表示されます。

  14. リストからデータベース・スキーマを選択するか、「参照」をクリックしてスキーマを参照します。この例では、「参照」をクリックします。

    「キューの選択」ダイアログが表示されます。

  15. 「キューの選択」ダイアログで、次の手順を実行します。

    1. 「キュー・タイプ」で「すべてのタイプ」を選択します。

    2. 「データベース・スキーマ」で「Scott」を選択します。

    3. 他の設定はデフォルト値のままにします。

    4. 「キュー」で「CUSTOMER_IN_QUEUE」を選択します。

    図7-43 に、「キューの選択」ダイアログを示します。

    図7-43 インバウンド操作用のキューの選択

    図7-43の説明が続きます
    「図7-43 インバウンド操作用のキューの選択」の説明
  16. 「OK」をクリックします。

    図7-44 に示すように、すべてのフィールドに移入済の「キュー名」ダイアログが表示されます。

    図7-44 「キュー名」ページ

    図7-44の説明が続きます
    「図7-44 「キュー名」ページ」の説明
  17. 「Next」をクリックします。

    「キュー・パラメータ」ページが表示されます。

  18. 「キュー・パラメータ」ページで、各フィールドを空白にしたままで「次へ」をクリックします。

    「オブジェクト・ペイロード」ページが表示されます。

  19. 「ビジネス・ペイロード」で、オブジェクト全体またはオブジェクト内の1つのフィールドのみのいずれかを選択します。

    この例では「オブジェクトCUSTOMER_TYPE全体」を選択します。

  20. 「Next」をクリックします。

    「終了」画面が表示されます。このページには、ウィザードにより作成されるアダプタ・ファイルのパスと名前が表示されます。

  21. 「終了」をクリックします。

    インバウンドOracle AQアダプタの定義が完了しました

7.4.2.4 アウトバウンドOracle AQアダプタの作成

次の手順に従ってアウトバウンド・サービスを作成します。

  1. 「コンポーネント」ウィンドウで、「SOA」を選択します。

  2. 「コンポーネント」ウィンドウの「サービス・アダプタ」リストから、「AQアダプタ」をcomposite.xmlページ内の「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。

    「アダプタ構成ウィザード」が表示されます。

  3. 「Next」をクリックします。

    「サービス名」ページが表示されます。

  4. 「サービス名」フィールドにenqueueと入力し、「次へ」をクリックします。

    「サービス接続」ページが表示されます。

  5. 「接続」で、「MyConnection」を選択して「次へ」をクリックします。

    「アダプタ・インタフェース」ページが表示されます。

  6. 「アダプタ・インタフェース」ページで、「操作およびスキーマから定義(後で指定)」を選択し、「次へ」をクリックします。

    「操作」ページが表示されます。

  7. 「操作」ページで、「エンキュー」を選択してデフォルトの操作名を受け入れます。

  8. 「Next」をクリックします。

    「キュー名」ページが表示されます。

  9. 「キュー名」ページで、リストからデータベース・スキーマを選択するか、「参照」をクリックしてスキーマを参照します。この例では、「参照」をクリックします。

    「キューの選択」ダイアログが表示されます。

  10. 「キューの選択」ダイアログで、次の手順を実行します。

    1. 「キュー・タイプ」で「すべてのタイプ」を選択します。

    2. 「データベース・スキーマ」で「Scott」を選択します。

    3. 他の設定はデフォルト値のままにします。

    4. 図7-45 に示すように、「キュー」で「CUSTOMER_OUT_QUEUE」を選択します。

    図7-45 アウトバウンド操作用のキューの選択

    図7-45の説明が続きます
    「図7-45 アウトバウンド操作用のキューの選択」の説明
  11. 「OK」をクリックします。

    図7-46 に示すように、すべてのフィールドに移入済の「キュー名」ページが表示されます。

    図7-46 「キュー名」ページ

    図7-46の説明が続きます
    「図7-46 「キュー名」ページ」の説明
  12. 「Next」をクリックします。

    「キュー・パラメータ」ページが表示されます。

  13. 「キュー・パラメータ」ページで、各フィールドを空白にしたままで「次へ」をクリックします。

    「オブジェクト・ペイロード」ページが表示されます。

  14. 「ビジネス・ペイロード」で、オブジェクト全体またはオブジェクト内の1つのフィールドのみのいずれかを選択します。この例では「オブジェクトCUSTOMER_TYPE全体」を選択します。

  15. 「Next」をクリックします。

    「終了」画面が表示されます。このページには、ウィザードにより作成されるアダプタ・ファイルのパスと名前が表示されます。

  16. 「終了」ウィンドウで「終了」をクリックします。

    アウトバウンドの定義が完了しました。

7.4.2.5 サービスとアクティビティのワイヤリング

作成した3つのコンポーネント(インバウンド・アダプタ・サービス、メディエータ・コンポーネントおよびアウトバウンド・アダプタ参照)をアセンブルまたは接続する必要があります。コンポーネントを接続する手順は、次のとおりです。

  1. 「公開されたサービス」領域にあるインバウンド・アダプタ内の小さい三角形を、「コンポーネント」領域のメディエータ・コンポーネント内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。
  2. 「コンポーネント」領域にあるメディエータ・コンポーネント内の小さい三角形を、「外部参照」領域のアウトバウンド・アダプタ内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。

    JDeveloperのcomposite.xmlが図7-47 のように表示されます。

    図7-47 JDeveloper - composite.xml

    図7-47の説明が続きます
    「図7-47 JDeveloper - composite.xml」の説明
  3. 「ファイル」「すべて保存」を順番にクリックします。

7.4.2.6 ルーティング・サービスの構成

次の手順に従ってルーティング・サービスを構成します。

  1. 「Mediator1」をダブルクリックします。

    「Mediator1.mplan」ウィンドウが表示されます。

  2. 「次を使用して変換」フィールドの端に表示される「既存のマッパー・ファイルを選択するか、新規マッパー・ファイルを作成します。」アイコンをクリックします。

    図7-48 に示すように、「リクエスト・トランスフォーメーション・マップ」ダイアログが表示されます。

    図7-48 「リクエスト・トランスフォーメーション・マップ」ダイアログ

    図7-48の説明が続きます
    「図7-48 「リクエスト・トランスフォーメーション・マップ」ダイアログ」の説明
  3. 「新規マッパー・ファイルの作成」を選択して「OK」をクリックします。

    図7-49 に示すように、「トランスフォーメーション」ウィンドウが表示されます。

    図7-49 「トランスフォーメーション」ウィンドウ

    図7-49の説明が続きます
    「図7-49 「トランスフォーメーション」ウィンドウ」の説明
  4. マッパーの左側でソース・ルート要素を選択し、右側の宛先ルート要素へドラッグしてマップ・プリファレンスを設定します。

    図7-50 に示すように、「自動マップ・プリファレンス」ダイアログが表示されます。

    図7-50 「自動マップ・プリファレンス」ダイアログ

    図7-50の説明が続きます
    「図7-50 「自動マップ・プリファレンス」ダイアログ」の説明
  5. 「OK」をクリックします。

    「アプリケーション」ウィンドウの中央ペインは、図7-51 のようになります。

    図7-51 マップ・プリファレンス設定後の「アプリケーション」ウィンドウ

    図7-51の説明が続きます
    「図7-51 マップ・プリファレンス設定後の「アプリケーション」ウィンドウ」の説明
  6. マッパーの設定を保存してタブを閉じます。
  7. ルーティング・サービスの設定を保存してタブを閉じます。

7.4.2.7 Oracle WebLogic Server管理コンソールでのデータソースの構成

  1. http://servername:portnumber/consoleにナビゲートします。
  2. 必要な資格証明を使用して、Oracle WebLogic Server管理コンソールのホーム・ページを開きます。

    図7-52 に示すように、Oracle WebLogic Server管理コンソールのホーム・ページが表示されます。

    図7-52 Oracle WebLogic Server管理コンソールのホーム・ページ

    図7-52の説明が続きます
    「図7-52 Oracle WebLogic Server管理コンソールのホーム・ページ」の説明
  3. 「ドメイン構造」で、「サービス」「JDBC」を選択し、「データ・ソース」をクリックします。

    図7-53 に示すように、「JDBCデータ・ソースの概要」ページが表示されます。

    図7-53 「JDBCデータ・ソースの概要」ページ

    図7-53の説明が続きます
    「図7-53 「JDBCデータ・ソースの概要」ページ」の説明
  4. 「新規」をクリックします。「新しいJDBCデータ・ソースの作成」ページが表示されます。
  5. 図7-54 に示すように、新しいJDBCデータソースの識別に使用するプロパティの値を入力します。

    図7-54 「新しいJDBCデータ・ソースの作成」ページ

    図7-54の説明が続きます
    「図7-54 「新しいJDBCデータ・ソースの作成」ページ」の説明
  6. 「次」を選択します。図7-55 に示すように、「新しいJDBCデータ・ソースの作成 - トランザクション・オプション」ページが表示されます。

    図7-55 「新しいJDBCデータ・ソースの作成 - トランザクション・オプション」ページ

    図7-55の説明が続きます
    「図7-55 「新しいJDBCデータ・ソースの作成 - トランザクション・オプション」ページ」の説明
  7. 「次」を選択します。図7-56 に示すように、「新しいJDBCデータ・ソースの作成 - 接続プロパティ」ページが表示されます。

    図7-56 「新しいJDBCデータ・ソースの作成 - 接続プロパティ」ページ

    図7-56の説明が続きます
    「図7-56 「新しいJDBCデータ・ソースの作成 - 接続プロパティ」ページ」の説明
  8. 「接続プロパティ」ページで接続プロパティを入力します。
  9. 「次」を選択します。図7-57 に示すように、「新しいJDBCデータ・ソースの作成 - データベース接続のテスト」ページが表示されます。

    図7-57 「新しいJDBCデータ・ソースの作成 - データベース接続のテスト」ページ

    図7-57の説明が続きます
    「図7-57 「新しいJDBCデータ・ソースの作成 - データベース接続のテスト」ページ」の説明
  10. 「構成のテスト」をクリックし、データベースの可用性および指定した接続プロパティをテストします。「新しいJDBCデータ・ソースの作成 - データベース接続のテスト」ページの上部に接続テストに成功したことを示すメッセージが表示されます。
  11. 「次」を選択します。図7-58 に示すように、「新しいJDBCデータ・ソースの作成 - ターゲットの選択」ページ」ページが表示されます。

    図7-58 「新しいJDBCデータ・ソースの作成 - ターゲットの選択」ページ

    図7-58の説明が続きます
    「図7-58 「新しいJDBCデータ・ソースの作成 - ターゲットの選択」ページ」の説明
  12. ターゲットを選択して「終了」をクリックします。

    図7-59 に示すように、「JDBCデータ・ソースの概要」ページが表示されます。このページは、このドメインで作成されたJDBCデータ・ソース・オブジェクトについて要約しています。このリストには、作成したデータソースが表示されます。

    図7-59 「JDBCデータ・ソースの概要」ページ

    図7-59の説明が続きます
    「図7-59 「JDBCデータ・ソースの概要」ページ」の説明
  13. Oracle WebLogic Server管理コンソールを閉じます。

7.4.2.8 JDeveloperを使用したデプロイ

前述の手順で作成したSOAプロジェクトおよびアプリケーションについて、アプリケーション・プロファイルをデプロイする必要があります。

JDeveloperを使用してアプリケーション・プロファイルをデプロイする手順は、次のとおりです。

  1. 「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」に示す手順を使用して、アプリケーション・サーバー接続を作成します。
  2. Oracle JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」で説明されている手順を使用して、アプリケーションをデプロイします。

7.4.2.9 Fusion Middleware Controlコンソールを使用した監視

Fusion Middleware Controlコンソールを使用して、デプロイ済のコンポジットを監視できます。次の手順を実行します。

  1. http://servername:portnumber/emにナビゲートします。デプロイしたコンポジットがアプリケーション・ナビゲータに表示されます。
  2. 「最後の5つのインスタンス」ペインに、新規インスタンスのエントリがあります。この新規インスタンスは、メッセージをエンキューするときにトリガーされたインスタンスです。
  3. インスタンスをクリックします。「フローのトレース」ページが表示されます。
  4. 「Mediator1」コンポーネント・インスタンスをクリックします。「監査」ページが表示されます。
  5. 「フロー - デバッグ」タブをクリックしてインスタンスをデバッグします。

7.4.3 Oracle AQアダプタのRAWキュー

この使用例では、Oracle AQアダプタを使用してAQ RAWキューとの間のデキューとエンキューを実行する方法について説明します。

この項には次のトピックが含まれます:

7.4.3.1 前提条件

SCOTTスキーマを持つデータベースへのアクセス権限が必要です。

この使用例を実行するには、adapters-aq-101-rawサンプルに含まれているartifacts.zipファイルの次のSQLファイルが必要です。これらのファイルは、artifacts.zipファイルのartifacts/sqlサブディレクトリにあります。次に示す順序でSQLファイルを実行します。

  • setup_user.sql

  • create_queues.sql

  • enqueue_raw.sql

  • dequeue_raw.sql

  • artifacts/schemas/emp.xsd

adapters-aq-101-rawサンプル・コードに含まれているartifacts.zipを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

adapters-aq-101-rawサンプル・コードを入手するには、Oracle SOA Sample Codeサイトにアクセスします。

7.4.3.2 アプリケーションおよびSOAプロジェクトの作成

SOAコンポジットを含んだJDeveloperアプリケーションを作成する必要があります。アプリケーションとSOAプロジェクトを作成する手順は、次のとおりです。

  1. JDeveloperを開きます。
  2. 「アプリケーション・ナビゲータ」で、「新規アプリケーション」をクリックします。

    「汎用アプリケーションの作成 - アプリケーションの名前付け」ページが表示されます。

  3. 「アプリケーション名」フィールドにRawqueueと入力します。
  4. 「アプリケーション・テンプレート」リストで、「汎用アプリケーション」を選択します。
  5. 「次へ」をクリックします。

    「汎用アプリケーションの作成 - プロジェクトの名前付け」ページが表示されます。

  6. 「プロジェクト名」フィールドにわかりやすい名前(Rawなど)を入力します。
  7. 「プロジェクト・テクノロジ」タブの「選択可能」リストで「SOA」をダブルクリックし、「選択済」リストに移動します。
  8. 「次へ」をクリックします。

    「汎用アプリケーションの作成 - SOA設定の構成」ページが表示されます。

  9. 「コンポジット・テンプレート」リストから「BPELを使用するコンポジット」を選択して、「終了」をクリックします。

    新規アプリケーションおよびSOAプロジェクトが作成されました。これにより、SOAコンポジットが自動的に作成されます。

    「BPELプロセスの作成」ページが表示されます。

  10. 「名前」フィールドにBPELプロセスの名前を入力します。たとえば、BPELRawqueueのように指定します。
  11. 「テンプレート」リストで「サービスを後で定義」を選択し、「OK」をクリックします。

    RawqueueアプリケーションとRawプロジェクトが設計領域に表示されます。

  12. emp.xsdファイルをプロジェクトのXSDフォルダにコピーします(このファイルの場所の詳細は、「前提条件」を参照)。

7.4.3.3 インバウンド・アダプタ・サービスの作成

次の手順を実行し、メッセージをキューにデキューするインバウンドOracle AQアダプタ・サービスを作成します。

  1. 「コンポーネント」ウィンドウで、「SOA」を選択します。
  2. 「コンポーネント」ウィンドウの「サービス・アダプタ」リストから、「AQアダプタ」をcomposite.xmlページ内の「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。

    「アダプタ構成ウィザード」が表示されます。

  3. 「次へ」をクリックします。

    「サービス名」ページが表示されます。

  4. 「サービス名」フィールドにRaw-Dequeuerと入力し、「次へ」をクリックします。

    「サービス接続」ページが表示されます。

  5. 「サービスの定義」のステップ6の説明に従ってデータベース接続を作成します。
  6. 「次へ」をクリックします。

    「アダプタ・インタフェース」ページが表示されます。

  7. 「アダプタ・インタフェース」ページで、「操作およびスキーマから定義(後で指定)」を選択し、「次へ」をクリックします。

    「操作」ページが表示されます。

  8. 図7-60 に示すように、「操作」ページで「デキュー」を選択します。
  9. デフォルトの操作名を受け入れて「次へ」をクリックします。

    「キュー名」ページが表示されます。

    図7-60 「アダプタ構成ウィザード - 操作」ページ

    図7-60の説明が続きます
    「図7-60 「アダプタ構成ウィザード - 操作」ページ」の説明
  10. 図7-61 に示すように、データベース・スキーマとしてSCOTTを選択し、キュー名としてRAW_IN_QUEUEを選択します。

    図7-61 「アダプタ構成ウィザード - キュー名」ページ

    図7-61の説明が続きます
    「図7-61 「アダプタ構成ウィザード - キュー名」ページ」の説明
  11. 「次へ」をクリックします。

    「キュー・パラメータ」ページが表示されます。

  12. 相関IDとデキュー条件を入力し、「次へ」をクリックします。

    「メッセージ」ページが表示されます。

  13. 「URL」フィールドの端にある「参照」をクリックします。

    「タイプ・チューザ」ダイアログが表示されます。

  14. 図7-62 に示すように、「プロジェクトのスキーマ・ファイル」「emp.xsd」および「AQRaw_End2End」を順番に選択します。

    図7-62 「タイプ・チューザ」ダイアログ

    図7-62の説明が続きます
    「図7-62 「タイプ・チューザ」ダイアログ」の説明
  15. 「OK」をクリックします。

    図7-63 に示すように、「メッセージ」ダイアログの「URL」フィールドにemp.xsdスキーマ・ファイルが表示されます。

    図7-63 「アダプタ構成ウィザード - メッセージ」ページ

    図7-63の説明が続きます
    「図7-63 「アダプタ構成ウィザード - メッセージ」ページ」の説明
  16. 「次」を選択します。「終了」ページが表示されます。
  17. 「終了」をクリックします。Oracle AQアダプタ・サービスの構成が完了し、図7-64 に示すように「composite.xml」ページが表示されます。

    図7-64 JDeveloperウィンドウ: 「composite.xml」ページ

    図7-64の説明が続きます
    「図7-64 JDeveloperウィンドウ: 「composite.xml」ページ」の説明

7.4.3.4 アウトバウンド・アダプタ・サービスの作成

リクエスト・メッセージをエンキューし、対応するレスポンス・メッセージ(レポート)をキューからデキューするアダプタ・サービスを作成する手順は、次のとおりです。

  1. 「コンポーネント」ウィンドウの「サービス・アダプタ」リストから、「AQアダプタ」をcomposite.xmlページ内の「公開されたサービス」スイムレーンにドラッグ・アンド・ドロップします。

    アダプタ構成ウィザードの「ようこそ」ページが表示されます。

  2. 「次」を選択します。「サービス名」ページが表示されます。
  3. 「サービス名」フィールドにRaw-Enqueuerと入力して「OK」をクリックします。

    「サービス接続」ページが表示されます。

  4. 「XAデータ・ソース」を選択して「次へ」をクリックします。

    「操作」ページが表示されます。

  5. 「エンキュー」を選択します。
  6. デフォルトの操作名を受け入れて「次へ」をクリックします。

    「キュー名」ページが表示されます。

  7. 図7-65 に示すように、「データベース・スキーマ」としてSCOTTを選択し、「キュー名」としてRAW_OUT_QUEUEを選択します。

    図7-65 「アダプタ構成ウィザード - キュー名」ページ

    図7-65の説明が続きます
    「図7-65 「アダプタ構成ウィザード - キュー名」ページ」の説明
  8. 「次へ」をクリックします。

    「キュー・パラメータ」ページが表示されます。

  9. 相関IDを入力して「次へ」をクリックします。

    「メッセージ」ページが表示されます。

  10. 「URL」フィールドの端にある「スキーマ・ファイルを参照」をクリックします。

    「タイプ・チューザ」ダイアログが表示されます。

  11. 図7-62 に示すように、「プロジェクトのスキーマ・ファイル」「emp.xsd」および「AQRaw_End2End」を順番に選択します。
  12. 「次へ」をクリックします。

    図7-63 に示すように、「メッセージ」ダイアログの「URL」フィールドにemp.xsdスキーマ・ファイルが表示されます。

  13. 「次へ」をクリックします。

    「終了」ページが表示されます。

  14. 「終了」をクリックします。

    サービスの構成が完了し、図7-66に示すように、「composite.xml」ページが表示されます。

    図7-66 JDeveloperウィンドウ: 「composite.xml」ページ

    図7-66の説明が続きます
    「図7-66 JDeveloperウィンドウ: 「composite.xml」ページ」の説明

7.4.3.5 サービスとアクティビティのワイヤリング

作成した3つのコンポーネント(インバウンド・アダプタ・サービス、BPELプロセスおよびアウトバウンド・アダプタ参照)をアセンブルまたは接続する必要があります。コンポーネントを接続する手順は、次のとおりです。

  1. 「公開されたサービス」領域にあるRaw-Dequeuer内の小さい三角形を、「コンポーネント」領域のBPELプロセス内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。
  2. 「コンポーネント」領域にあるBPELプロセス内の小さい三角形を、「外部参照」領域のRaw-Enqueuer内に緑の三角形として表示されるドロップ・ゾーンにドラッグします。

    同様に、「コンポーネント」領域にあるBPELプロセス内の小さい三角形を、「外部参照」領域のOutboundService内のドロップ・ゾーンにドラッグします。

    JDevelopercomposite.xmlファイルが図7-67 のように表示されます。

    図7-67 JDeveloper - composite.xml

    図7-67の説明が続きます
    「図7-67 JDeveloper- composite.xml」の説明
  3. 「ファイル」「すべて保存」を順番にクリックします。
  4. 「BPELRawqueue」をダブルクリックします。

    「BPELRawqueue.bpel」ページが表示されます。

  5. 「コンポーネント」ウィンドウから、receiveassignおよびinvokeアクティビティを「コンポーネント」領域にこの順序でドラッグ・アンド・ドロップします。

    図7-68 に示すように、JDeveloperの「BPELRawqueue.bpel」ページが表示されます。

    図7-68 「BPELRawqueue.bpel」ページ

    図7-68の説明が続きます
    「図7-68 「BPELRawqueue.bpel」ページ」の説明
  6. receiveアクティビティをダブルクリックします。

    「Receive」ダイアログが表示されます。

  7. 「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。

    「パートナ・リンク・チューザ」ダイアログが表示されます。

  8. 「Raw-Dequeuer」を選択して「OK」をクリックします。

    「パートナ・リンク」フィールドに値Raw-Dequeuerが移入された状態で「Receive」ダイアログが表示されます。

  9. 「変数」フィールドの端に表示される「変数の自動作成」アイコンをクリックします。

    「変数の作成」ダイアログが表示されます。

  10. デフォルト値を受け入れて「OK」をクリックします。
  11. 図7-69 に示すように、「インスタンスの作成」ボックスを選択して「OK」をクリックします。

    図7-69 「Receive」ダイアログ

    図7-69の説明が続きます
    「図7-69 「Receive」ダイアログ」の説明
  12. invokeアクティビティをダブルクリックします。

    「Invoke」ダイアログが表示されます。

  13. 「パートナ・リンク」フィールドの端にある「パートナ・リンクの参照」をクリックします。

    「パートナ・リンク・チューザ」ダイアログが表示されます。

  14. 「Raw-Enqueuer」を選択して「OK」をクリックします。

    「パートナ・リンク」フィールドに値Raw-Enqueuerが移入された状態で「Invoke」ダイアログが表示されます。

  15. 「入力変数」フィールドの端に表示される「入力変数の自動作成」アイコンをクリックします。
  16. デフォルト値を受け入れて「OK」をクリックします。

    図7-70 に示すように、「Invoke」ダイアログが表示されます。

    図7-70 「Invoke」ダイアログ

    図7-70の説明が続きます
    「図7-70 「起動」ダイアログ」の説明
  17. 「OK」をクリックします。
  18. assignアクティビティをダブルクリックします。

    「Assign」ダイアログが表示されます。

  19. 「+」アイコンをクリックして「コピー操作」を選択します。

    「コピー操作の作成」ダイアログが表示されます。

  20. 図7-71 に示すように、変数を選択して「OK」をクリックします。

    図7-71 「コピー操作の作成」ダイアログ

    図7-71の説明が続きます
    「図7-71 「コピー操作の作成」ダイアログ」の説明
  21. 「Assign」ダイアログで「OK」をクリックします。

    図7-72 に示すように、JDeveloperの「BPELRawqueue.bpel」ページが表示されます。

    図7-72 「BPELRawqueue.bpel」ページ

    図7-72の説明が続きます
    「図7-72 「BPELRawqueue.bpel」ページ」の説明
  22. 「ファイル」「すべて保存」を順番にクリックします。

7.4.3.6 Oracle WebLogic Server管理コンソールでのデータソースの構成

  1. http://servername:portnumber/consoleにナビゲートします。
  2. 必要な資格証明を使用して、Oracle WebLogic Server管理コンソールのホーム・ページを開きます。
  3. ホーム・ページの「ドメイン構造」で、「サービス」「JDBC」を選択し、「データ・ソース」をクリックします。

    「JDBCデータ・ソースのサマリー」ページが表示されます。

  4. 「新規」をクリックします。「新しいJDBCデータ・ソースの作成」ページが表示されます。
  5. 新しいJDBCデータ・ソースを識別するのに使用するプロパティ値を入力します。
  6. 「次」を選択します。「新しいJDBCデータ・ソースの作成 - トランザクション・オプション」ページが表示されます。
  7. 「次」を選択します。「新しいJDBCデータ・ソースの作成 - 接続プロパティ」ページが表示されます。
  8. 「接続プロパティ」ページで接続プロパティを入力します。
  9. 「次」を選択します。「新しいJDBCデータ・ソースの作成 - データベース接続のテスト」ページが表示されます。
  10. 「構成のテスト」をクリックし、データベースの可用性および指定した接続プロパティをテストします。「新しいJDBCデータ・ソースの作成 - データベース接続のテスト」ページの上部に接続テストに成功したことを示すメッセージが表示されます。
  11. 「次」を選択します。「新しいJDBCデータ・ソースの作成 - ターゲットの選択」ページが表示されます。
  12. ターゲットを選択して「終了」をクリックします。

    「JDBCデータ・ソースのサマリー」ページが表示されます。このページは、このドメインで作成されたJDBCデータ・ソース・オブジェクトについて要約しています。このリストには、作成したデータソースが表示されます。

  13. Oracle WebLogic Server管理コンソールを閉じます。

7.4.3.7 JDeveloperを使用したデプロイ

前述の手順で作成したSOAプロジェクトおよびアプリケーションについて、アプリケーション・プロファイルをデプロイする必要があります。

JDeveloperを使用してアプリケーション・プロファイルをデプロイするには、次の手順を実行する必要があります。

  1. 「Oracle JCAアダプタ用のアプリケーション・サーバー接続の作成」に示す手順を使用して、アプリケーション・サーバー接続を作成します。
  2. Oracle JDeveloperからのOracle JCAアダプタ・アプリケーションのデプロイ」で説明されている手順を使用して、アプリケーションをデプロイします。

7.4.3.8 Fusion Middleware Controlコンソールを使用した監視

Fusion Middleware Controlコンソールを使用して、デプロイ済のコンポジットを監視できます。次の手順を実行します。

  1. http://servername:portnumber/emにナビゲートします。

    デプロイしたコンポジットがアプリケーション・ナビゲータに表示されます。

  2. 「最後の5つのインスタンス」ペインに、新規インスタンスのエントリがあります。

    これは、メッセージをエンキューするときにトリガーされたインスタンスです。

  3. インスタンスをクリックします。

    「フローのトレース」ページが表示されます。

  4. 「BPELRawqueue」コンポーネント・インスタンスをクリックします。

    「監査」ページが表示されます。

  5. 「フロー - デバッグ」タブをクリックしてインスタンスをデバッグします。