ヘッダーをスキップ
Oracle Application Server Adapters for Files, FTP, DatabasesおよびEnterprise Messagingユーザーズ・ガイド
10g (10.1.3.1.0)
B31889-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

6 Oracle Application Server Adapter for Native MQSeries

この章では、外部サービスとしてOracle BPEL Process ManagerおよびOracle Enterprise Service Busと連携して動作する、Oracle Application Server Adapter for MQSeries(MQSeriesアダプタ)の使用方法を説明します。 この章には、次の項が含まれます。

6.1 MQSeriesメッセージ・キューイングの概要

メッセージ・キューイングは、非同期プログラム間通信のためのテクニックです。 分散システム上の独立したアプリケーションの相互通信を可能にすることによりアプリケーションを統合できます。 あるアプリケーションがキュー・マネージャ所有のキューにメッセージを送信し、別のアプリケーションがキューからメッセージを取り出します。 各アプリケーションが異なる時期に実行されていたり一時的に使用できなくなっても、アプリケーション間の通信は維持されます。

次のリストに、メッセージ・キューイングの基本的な概念を示します。

6.1.1 MQSeriesの概要

Messaging and Queuing Series(MQSeries)は、IBM社が開発した製品および規格の集合です。 MQSeriesは、保証付きメッセージ配信、セキュリティおよび優先度ベースのメッセージングを提供するキューイング・インフラストラクチャとなります。

図6-3に、MQSeriesアプリケーションとMQSeriesサーバー間の通信プロセスを示します。 MQSeriesクライアントにより、アプリケーションからリモート・マシン上のキュー・マネージャに接続できます。

図6-3 MQSeriesの通信プロセス

図6-3の説明が続きます
「図6-3 MQSeriesの通信プロセス」の説明

MQSeriesの各キューはキュー・マネージャに属しています。 キュー・マネージャには一意の名前があり、Message Queue Interface(MQI)チャネルを介してアプリケーションにメッセージ・サービスとキューイング・サービスを提供します。 また、キュー・マネージャは作成されたキューへのアクセスを提供し、メッセージ・チャネルを介してメッセージを他のキュー・マネージャに転送します。

MQSeriesでは、データはメッセージ形式で送信されます。 送信側アプリケーションではメッセージを作成し、APIコールを使用してキューに送信します。 メッセージは、受信側アプリケーションの受信準備ができるまでキューに保持されます。 受信側アプリケーションでは、APIコールを使用してキューからメッセージを取得します。

メッセージをリモート・キューに送信する場合は、リモート・キュー定義をローカルに定義する必要があります。 リモート・キュー定義は、宛先キュー名と転送キュー名で構成されます。

図6-4に、MQSeriesメッセージのメッセージ構造を示します。

図6-4 MQSeriesメッセージ

図6-4の説明が続きます
「図6-4 MQSeriesメッセージ」の説明

MQSeriesメッセージは、図6-4に示すパートで構成されます。

  • メッセージ・ヘッダー

    メッセージ・ヘッダーには、一意のメッセージID、メッセージ・タイプ、メッセージ優先度およびルーティング情報などが含まれています。 各MQSeriesメッセージには、メッセージ・ヘッダーが必要です。

  • オプション・ヘッダー

    オプション・ヘッダーは、特定のアプリケーション(CICSアプリケーションなど)との通信に必須です。

  • アプリケーション・データ

    実際のデータ。 たとえば、索引付きファイルまたはフラット・ファイルからのレコードや、DB2の表からの行または列などです。

6.2 ネイティブMQSeriesアダプタの概要

Oracle BPEL Process ManagerとOracle Enterprise Service Busには、MQSeriesアダプタが組み込まれています。 MQSeriesアダプタにより、アプリケーションはMQSeriesキュー・マネージャに接続し、MQSeriesメッセージをキューに蓄積したりキューから削除できます。

この項には、次の項目が含まれます。

6.2.1 MQSeriesアダプタの必要性

MQSeriesアダプタは、すべてのネイティブMQSeries機能を提供します。 Oracle Application Server Adapter for Java Message Service(JMSアダプタ)をMQSeriesプロバイダとともに構成することはできますが、提供されるのはMQSeriesで提供されるJMS機能のみで、ネイティブMQSeries機能は提供されません。 次のリストに、JMS Adapter for MQSeriesを上回るMQSeriesアダプタのメリットを示します。

  • MQSeriesアダプタは、肯定アクション通知(PAN)および否定アクション通知(NAN)をサポートしています。

  • MQSeriesアダプタは、送信時の確認、着信時の確認、例外レポートおよび有効期限レポートなどのレポート・メッセージをサポートしています。

  • MQSeriesアダプタは、不要なメッセージや破損したメッセージのデッドレター・キューへの送信をサポートしています。

  • MQSeriesアダプタには、グループに属するメッセージのフィルタリングなど、高度なフィルタ・オプションが用意されています。

  • MQSeriesアダプタは高速で、使用が容易です。

6.2.2 MQSeriesアダプタとOracle BPEL Process Managerの統合

MQSeriesアダプタは、自動的にOracle BPEL Process Managerと統合されます。 Oracle JDeveloperでパートナ・リンクまたはMQアダプタ・サービスを作成する際に、「アダプタ構成ウィザード」が起動します。

このウィザードを使用すると、図1-3に示すように、MQSeriesアダプタや、その他のOracleASアダプタを選択および構成できます。アダプタ構成ウィザードでは、図1-4に示すように、サービス名の入力を求められます。 構成が完了すると、Oracle JDeveloperの「アプリケーション・ナビゲータ」セクションに同じ名前のWSDLファイルが作成されます。このWSDLファイルには、アダプタ構成ウィザードで指定する構成情報が含まれます。

「アダプタ構成ウィザード」の「操作」ウィンドウで、実行する操作の選択を求められます。選択内容に応じて、アダプタ構成ウィザードの別のウィンドウが表示され、構成情報の入力を求められます。

表6-1に実行可能な操作をリスト表示し、これらの操作に関する情報が説明されている項を示します。

6.2.3 MQSeriesアダプタとOracle Enterprise Service Busの統合

MQSeriesアダプタは、自動的にOracle Enterprise Service Busと統合されます。JDeveloper ESB DesignerでMQアダプタ・サービスを作成すると、図1-2に示すように「アダプタ構成ウィザード」が起動します。

このウィザードでMQSeriesアダプタを選択して構成できます。 構成が完了すると、Oracle JDeveloperの「アプリケーション・ナビゲータ」セクションに同じ名前のWSDLファイルが作成されます。このWSDLファイルには、アダプタ構成ウィザードで指定する構成情報が含まれます。

「アダプタ構成ウィザード」の「操作」ウィンドウで、実行する操作の選択を求められます。選択内容に応じて、アダプタ構成ウィザードの別のウィンドウが表示され、構成情報の入力を求められます。 表6-2に実行可能な操作をリスト表示し、指定する必要のある構成情報が説明されている項を示します。

表6-2 Oracle Enterprise Service Busについてサポートされている操作

操作 参照先

メッセージのエンキュー

第6.3.1.1項「メッセージのエンキュー」


メッセージのデキュー

第6.3.1.2項「メッセージのデキュー」


リクエスト-レスポンス

第6.3.1.6項「同期リクエスト-レスポンス(Oracle Enterprise Service Busがサーバーの場合)



6.3 MQSeriesアダプタの説明

この項では、MQSeriesアダプタの次の概念について説明します。

6.3.1 メッセージングのシナリオ

MQSeriesアダプタは、次のメッセージング・シナリオをサポートしています。


注意:

MQSeriesアダプタは、XAトランザクションをサポートしていません。

6.3.1.1 メッセージのエンキュー

このシナリオでは、MQSeriesアダプタはキュー・マネージャにより管理されている特定のキューに接続してメッセージを書き込みます。 Oracle BPEL Process ManagerまたはOracle Enterprise Service Busから送信されるアウトバウンド・メッセージの場合、MQSeriesアダプタでは次の操作が実行されます。

  1. Oracle BPEL Process ManagerまたはOracle Enterprise Service Busからのメッセージが受信されます。

  2. 設計時の指定に従ってXMLコンテンツがフォーマットされます。

  3. メッセージのプロパティ(優先度、有効期限、メッセージ・タイプおよび永続性など)が設定されます。 これらのプロパティは、「アダプタ構成ウィザード」で選択した内容に基づきます。

    メッセージ・プロパティの詳細は、第6.3.2.1項「メッセージ・タイプ」を参照してください。

  4. 設計時に「アダプタ構成ウィザード」で指定したキューにメッセージが送信されます。

図6-5に、「アダプタ構成ウィザード」ウィンドウで選択する必要のある操作タイプを示します。

図6-5 アダプタ構成ウィザード: メッセージ発行の選択

図6-5の説明が続きます
「図6-5 「アダプタ構成ウィザード」: メッセージ発行の選択」の説明

図6-6に、「MQにメッセージを蓄積」操作タイプを選択した後に表示されるウィンドウを示します。

図6-6 メッセージ蓄積オプション

図6-6の説明が続きます
「図6-6 メッセージ蓄積オプション」の説明

このウィンドウで次のプロパティを指定できます。

  • キュー名: MQSeriesアダプタがメッセージをエンキューするキューの名前。 これは必須フィールドです。

  • キュー・マネージャ(オプション): キューが属しているキュー・マネージャの名前。 このフィールドはオプションで、メッセージをリモート・キューにエンキューする場合に使用する必要があります。

  • メッセージの書式: メッセージのフォーマット。


    注意:

    メッセージをエンキューする場合は、特定のフォーマットに必要な各種の必須値を正しく指定していることを確認してください。

  • 優先度: 0(最低)から9(最高)までのメッセージの優先度。

  • 永続性: メッセージの永続性。 メッセージの永続性を、宛先キューで定義されているデフォルトの優先度属性から取得するように指定することも可能です。

  • 有効期限: メッセージの有効期限。 有効期限が経過したメッセージは破棄されます。

これらのプロパティの詳細は、第6.3.2項「メッセージ・プロパティ」を参照してください。

次に表示される「アダプタ構成ウィザード」のウィンドウは、図6-7の「メッセージ」ウィンドウです。 このウィンドウでは、トランスレーション用のXMLスキーマ定義(XSD)ファイルを選択できます。

図6-7 「メッセージ」ウィンドウ

図6-7の説明が続きます
「図6-7 「メッセージ」ウィンドウ」の説明

ネイティブ・フォーマット・トランスレーションが不要な場合(JPGまたはGIF画像を処理中の場合など)は、「ネイティブ・フォーマット変換は不要(スキーマを不透明(Opaque)にする)」チェック・ボックスを選択します。ファイルはBase64エンコーディングで渡されます。

トランスレーションにはXSDファイルが必要です。 新しいスキーマの定義、または既存のデータ型定義(DTD)やCOBOLコピーブックの変換を行う場合は、「ネイティブ・フォーマットのスキーマの定義」を選択します。これにより、ネイティブ・フォーマット・ビルダー・ウィザードが起動されます。 このウィザードは、カンマ区切り値(CSV)、固定長、DTDおよびCOBOLコピーブックなどのファイル・フォーマットを使用したネイティブ・スキーマ・ファイルの作成を支援します。 ネイティブ・スキーマ・ファイルの作成後、「スキーマ・ファイルのURL」および「スキーマ要素」フィールドが入力された「メッセージ」ウィンドウが表示されます。詳細は、第7.1項「ネイティブ・フォーマット・ビルダー・ウィザードを使用したネイティブ・スキーマ・ファイルの作成」を参照してください。


注意:

指定するスキーマにネームスペースが含まれていることを確認してください。スキーマにネームスペースがないと、エラー・メッセージが表示されます。

6.3.1.2 メッセージのデキュー

このシナリオでは、MQSeriesアダプタはキュー・マネージャにより管理されている特定のキューに接続し、そのキューからメッセージを削除します。 Oracle BPEL Process ManagerまたはOracle Enterprise Service Busに送信されるインバウンド・メッセージの場合、MQSeriesアダプタでは次の操作が実行されます。

  1. 設計時に指定したキューに接続されます。

  2. メッセージの着信時にキューからメッセージがデキューされます。

  3. 設計時に定義したトランスレーション・ロジックに基づいて、メッセージが読み取られて変換されます。

  4. メッセージがXMLメッセージとしてOracle BPEL Process ManagerまたはOracle Enterprise Service Busにパブリッシュされます。

    図6-8に、「アダプタ構成ウィザード」で選択する必要のある操作タイプを示します。

    図6-8 アダプタ構成ウィザード: メッセージ消費の選択

    図6-8の説明が続きます
    「図6-8 アダプタ構成ウィザード: メッセージ消費の選択」の説明

    図6-6に、「MQからメッセージを取得」操作タイプを選択した後に表示されるウィンドウを示します。

    図6-9 「MQからメッセージを取得」ウィンドウ

    図6-9の説明が続きます
    「図6-9 「MQからメッセージを取得」ウィンドウ」の説明

    このウィンドウで次のプロパティを指定できます。

    • キュー名: MQSeriesアダプタがメッセージをデキューするキューの名前。 これは必須フィールドです。

    • キュー・マネージャ(オプション): キューが属しているキュー・マネージャの名前。このフィールドはオプションです。

    次に表示される「アダプタ構成ウィザード」のウィンドウは、図6-7の「メッセージ」ウィンドウです。このウィンドウでは、トランスレーション用のXSDスキーマ・ファイルを選択できます。

    メッセージ発行操作のスキーマの指定と同様に、このウィンドウでは次のタスクを実行できます。

    • ネイティブ・フォーマット・トランスレーションの要不要の指定

    • トランスレーション用のXSDスキーマ・ファイルの選択

    • CSV、固定長、DTDおよびCOBOLコピーブックなどのファイル形式からXSDファイルの作成が可能なネイティブ・フォーマット・ビルダー・ウィザードの起動

    「メッセージ」ウィンドウの詳細は、第6.3.1.1項「メッセージのエンキュー」を参照してください。

6.3.1.3 リクエスト-レスポンス(Oracle BPEL Process Managerがクライアントの場合)

このシナリオでは、Oracle BPEL Process Managerがリクエスト・メッセージを送信し、非開始のreceiveアクティビティを使用して対応するレスポンスを受信します。 invokeアクティビティによりアダプタのアウトバウンド起動が開始され、リクエストが送信されます。 MQSeriesアダプタにより次の操作が実行されます。

  1. Oracle BPEL Process Managerからのメッセージが受信されます。

  2. 設計時に「アダプタ構成ウィザード」で指定したXMLコンテンツがフォーマットされます。

  3. リクエスト・メッセージのプロパティと相関スキームが設定されます。

  4. 設計時に指定したキューにメッセージが送信されます。 サード・パーティ・アプリケーションはメッセージを受信して処理し、レスポンスを生成してから、リクエスト・メッセージで指定されたreplyToキューにレスポンス・メッセージをエンキューします。 レスポンス・メッセージの相関IDとメッセージIDは、リクエスト・メッセージで指定された相関スキームに基づいて生成されます。

  5. MQSeriesアダプタにより、キューからメッセージがデキューされます。

  6. レスポンスがBPELプロセスの非開始のreceiveアクティビティに送信されます。 レスポンスが正しいBPELインスタンスに確実に送信されるように、相関スキームが使用されます。

図6-10に、このシナリオのサンプルBPELプロセスを示します。

図6-10 クライアントとしてのOracle BPEL Process Managerのサンプル

図6-10の説明が続きます
「図6-10 クライアントとしてのOracle BPEL Process Managerのサンプル」の説明

図6-11に、「アダプタ構成ウィザード」で選択する必要のある操作タイプを示します。

図6-11 操作タイプの選択

図6-11の説明が続きます
「図6-11 操作タイプの選択」の説明

図6-12に、「MQにメッセージを送信し、リプライ/レポートを取得」操作タイプを選択した後に表示されるウィンドウを示します。

図6-12 「MQにメッセージを送信し、リプライ/レポートを取得」ウィンドウ

図6-12の説明が続きます
「図6-12 「MQにメッセージを送信し、リプライ/レポートを取得」ウィンドウ」の説明

このウィンドウで次のプロパティを指定できます。

  • メッセージ・タイプ: メッセージのタイプ。 通常メッセージまたはリクエスト・メッセージを送信できます。

  • レポートの取得: なんらかのレポートが必要な場合は、このオプションを選択します。 レポートのタイプは、図6-13に示す次のウィンドウで指定できます。

  • キュー名: MQSeriesアダプタがメッセージをエンキューするキューの名前。 これは必須フィールドです。

  • キュー・マネージャ(オプション): キューが属しているキュー・マネージャの名前。このフィールドはオプションです。

  • メッセージの書式: メッセージのフォーマット。

  • 優先度: 0(最低)から9(最高)までのメッセージの優先度。

  • 永続性: メッセージの永続性。

  • 有効期限: メッセージの有効期限。 有効期限が経過したメッセージは破棄されます。

これらのプロパティの詳細は、第6.3.2項「メッセージ・プロパティ」および第6.3.5項「レポート・メッセージ」を参照してください。

「MQにメッセージを送信し、リプライ/レポートを取得」ウィンドウで「次へ」をクリックすると、「レポート」ウィンドウ(図6-13)または「レスポンス」ウィンドウ(図6-13)が表示されます。

図6-13に示す「レポート」ウィンドウが表示されるのは、図6-12に示した「MQにメッセージを送信し、リプライ/レポートを取得」ウィンドウで「レポートの取得」オプションを選択した場合のみです。

図6-13 「レポート」ウィンドウ

図6-13の説明が続きます
「図6-13 「レポート」ウィンドウ」の説明

このウィンドウで次のレポート・タイプを選択できます。

  • 着信時の確認

  • 送信時の確認

  • 例外レポート

  • 有効期限レポート

これらのレポート・タイプの詳細は、第6.3.5項「レポート・メッセージ」を参照してください。

「レポート」ウィンドウで「次へ」をクリックすると、図6-14に示す「レスポンス」ウィンドウが表示されます。

図6-14 「レスポンス」ウィンドウ

図6-14の説明が続きます
「図6-14 「レスポンス」ウィンドウ」の説明

「レスポンス」ウィンドウで次のプロパティを指定できます。

  • キュー名: レスポンスの送信先キューの名前。 これは必須フィールドです。

  • キュー・マネージャ(オプション): キューが属しているキュー・マネージャの名前。このフィールドはオプションです。

  • 相関スキーム: MQSeriesアダプタが使用する必要のある相関スキーム。 相関スキームの詳細は、第6.3.3項「相関スキーム」を参照してください。

「レスポンス」ウィンドウで「次へ」をクリックすると、図6-15に示す「メッセージ」ウィンドウが表示されます。 このウィンドウでは、レスポンス・メッセージとリクエスト・メッセージのトランスレーションに使用するXSDスキーマ・ファイルを選択できます。

図6-15 「メッセージ」ウィンドウ

図6-15の説明が続きます
「図6-15 「メッセージ」ウィンドウ」の説明

このウィンドウで次のタスクを実行できます。

  • ネイティブ・フォーマット・トランスレーションの要不要の指定

  • トランスレーション用のXSDスキーマ・ファイルの選択

  • CSV、固定長、DTDおよびCOBOLコピーブックなどのファイル形式からXSDファイルの作成が可能なネイティブ・フォーマット・ビルダー・ウィザードの起動

「メッセージ」ウィンドウの詳細は、第6.3.1.1項「メッセージのエンキュー」を参照してください。

6.3.1.4 同期リクエスト-レスポンス(Oracle BPEL Process Managerがサーバーの場合)

このシナリオでは、Oracle BPEL Process Managerがリクエストを受信して処理し、replyアクティビティを使用してレスポンスを同期的に送信します。 MQSeriesアダプタにより次の操作が実行されます。

  1. メッセージの着信時にキューからリクエスト・メッセージがデキューされます。

  2. 設計時に定義したトランスレーション・ロジックに基づいて、メッセージが読み取られて変換されます。

  3. メッセージがXMLメッセージとしてOracle BPEL Process Managerにパブリッシュされます。 Oracle BPEL Process Managerでは、リクエストが処理されてレスポンスがMQSeriesアダプタに送信されます。

  4. Oracle BPEL Process Managerからのレスポンス・メッセージが受信されます。

  5. 設計時の指定に従ってXMLコンテンツがフォーマットされます。

  6. メッセージのプロパティ(優先度、有効期限、メッセージ・タイプおよび永続性など)が設定されます。 これらのプロパティは、「アダプタ構成ウィザード」で選択した内容に基づきます。

  7. 設計時に「アダプタ構成ウィザード」で指定したキューにメッセージが送信されます。

図6-16に、このシナリオのサンプルBPELプロセスを示します。

図6-16 同期リクエスト-レスポンスのサンプル(Oracle BPEL Process Managerがサーバーの場合)

図6-16の説明が続きます
「図6-16 同期リクエスト-レスポンスのサンプル(Oracle BPEL Process Managerがサーバーの場合)」の説明

図6-17に、「アダプタ構成ウィザード」で選択する必要のある操作タイプを示します。

図6-17 同期リクエスト-レスポンス相互作用の「操作タイプ」ウィンドウでの選択

図6-17の説明が続きます
「図6-17 同期リクエスト-レスポンス相互作用の「操作タイプ」ウィンドウでの選択」の説明

図6-18に、「MQからメッセージを取得し、リプライ/レポートを送信」操作タイプを選択した後に表示されるウィンドウを示します。 このウィンドウでは、MQSeriesアダプタによりメッセージがデキューされるキューの名前を指定します。

図6-18 「MQからメッセージを取得し、リプライ/レポートを送信」ウィンドウ

図6-18の説明が続きます
「図6-18 「MQからメッセージを取得し、リプライ/レポートを送信」ウィンドウ」の説明

「MQからメッセージを取得し、リプライ/レポートを送信」ウィンドウで「次へ」をクリックすると、図6-19に示す「レスポンス」ウィンドウが表示されます。

図6-19 同期リクエスト-レスポンスの「レスポンス」ウィンドウ

図6-19の説明が続きます
「図6-19 同期リクエスト-レスポンスの「レスポンス」ウィンドウ」の説明

「レスポンス」ウィンドウで次のプロパティを指定できます。

  • レスポンス・フォールバック・キュー名: 通常メッセージに対するレスポンスの送信先キュー。


    注意:

    レスポンス・フォールバック・キューには、キュー・マネージャのプライマリ・キューを指定する必要があります。

  • レスポンス・フォールバック・キュー・マネージャ: レスポンス・フォールバック・キューが属しているキュー・マネージャの名前。

  • 優先度: メッセージの優先度。

  • 永続性: メッセージの永続性。

  • 有効期限: メッセージの有効期限。

これらのプロパティの詳細は、第6.3.2項「メッセージ・プロパティ」を参照してください。

「レスポンス」ウィンドウで「次へ」をクリックすると、図6-15に示す「メッセージ」ウィンドウが表示されます。 このウィンドウで次のタスクを実行できます。

  • ネイティブ・フォーマット・トランスレーションの要不要の指定

  • トランスレーション用のXSDスキーマ・ファイルの選択

  • CSV、固定長、DTDおよびCOBOLコピーブックなどのファイル形式からXSDファイルの作成が可能なネイティブ・フォーマット・ビルダー・ウィザードの起動

「メッセージ」ウィンドウの詳細は、第6.3.1.1項「メッセージのエンキュー」を参照してください。

6.3.1.5 非同期リクエスト-レスポンス(Oracle BPEL Process Managerがサーバーの場合)

Oracle BPEL Process Managerがリクエスト-レスポンス相互作用を開始すると、BPELプロセスはリクエストをインバウンド・メッセージとして受信し、処理してからinvokeアクティビティを介してレスポンスを送信します。 非同期リクエスト-リプライのシナリオでは、MQSeriesアダプタにより次の操作が実行されます。

  1. メッセージの着信時にキューからメッセージがデキューされます。

  2. 設計時に定義したトランスレーション・ロジックに基づいて、メッセージが読み取られて変換されます。

  3. メッセージがXMLメッセージとしてOracle BPEL Process Managerにパブリッシュされます。 Oracle BPEL Process Managerでは、リクエストが処理されてレスポンスがMQSeriesアダプタに送信されます。

  4. Oracle BPEL Process Managerからのメッセージが受信されます。

  5. 設計時の指定に従ってXMLコンテンツがフォーマットされます。

  6. メッセージのプロパティ(優先度、有効期限、メッセージ・タイプおよび永続性など)が設定されます。 これらのプロパティは、「アダプタ構成ウィザード」で選択した内容に基づきます。

  7. 設計時に「アダプタ構成ウィザード」で指定したキューにメッセージが送信されます。

図6-20に、このシナリオのサンプルBPELプロセスを示します。

図6-20 非同期リクエスト-レスポンスのサンプル(Oracle BPEL Process Managerがサーバーの場合)

図6-20の説明が続きます
「図6-20 非同期リクエスト-レスポンスのサンプル(Oracle BPEL Process Managerがサーバーの場合)」の説明

図6-21に、「アダプタ構成ウィザード」で選択する必要のある操作タイプを示します。

図6-21 非同期リクエスト-レスポンス相互作用の「操作タイプ」ウィンドウでの選択

図6-21の説明が続きます
「図6-21 非同期リクエスト-レスポンス相互作用の「操作タイプ」ウィンドウでの選択」の説明

図6-18に、「MQからメッセージを取得し、リプライ/レポートを送信」操作タイプを選択した後に表示されるウィンドウを示します。 このウィンドウでは、MQSeriesアダプタによりメッセージがデキューされるキューの名前を指定します。

「MQからメッセージを取得し、リプライ/レポートを送信」ウィンドウで「次へ」をクリックすると、図6-19に示す「レスポンス」ウィンドウが表示されます。

「レスポンス」ウィンドウで次のプロパティを指定できます。

  • レスポンス・フォールバック・キュー名: リクエスト・メッセージでreplyToキューが指定されていない場合のリプライの送信先キュー。

  • レスポンス・フォールバック・キュー・マネージャ: レスポンス・フォールバック・キューが属しているキュー・マネージャの名前。

  • 優先度: メッセージの優先度。

  • 永続性: メッセージの永続性。

  • 有効期限: メッセージの有効期限。

これらのプロパティの詳細は、第6.3.2項「メッセージ・プロパティ」を参照してください。

「レスポンス」ウィンドウで「次へ」をクリックすると、図6-15に示す「メッセージ」ウィンドウが表示されます。 このウィンドウで次のタスクを実行できます。

  • ネイティブ・フォーマット・トランスレーションの要不要の指定

  • トランスレーション用のXSDスキーマ・ファイルの選択

  • CSV、固定長、DTDおよびCOBOLコピーブックなどのファイル形式からXSDファイルの作成が可能なネイティブ・フォーマット・ビルダー・ウィザードの起動

「メッセージ」ウィンドウの詳細は、第6.3.1.1項「メッセージのエンキュー」を参照してください。

非同期リクエスト-リプライ相互作用では、インバウンド・メッセージ・ヘッダーからアウトバウンド・メッセージ・ヘッダーに次のプロパティをマップする必要があります。

  • MsgID

  • CorrelID

  • CorrelationScheme

  • ReplyToQ

これらのプロパティはassignアクティビティを使用してマップできます。

6.3.1.6 同期リクエスト-レスポンス(Oracle Enterprise Service Busがサーバーの場合)

このシナリオでは、Oracle Enterprise Service Busがリクエストを受信して処理し、レスポンスを同期的に送信します。 MQSeriesアダプタにより次の操作が実行されます。

  1. メッセージの着信時にキューからリクエスト・メッセージがデキューされます。

  2. 設計時に定義したトランスレーション・ロジックに基づいて、メッセージが読み取られて変換されます。

  3. メッセージがXMLメッセージとしてOracle Enterprise Service Busにパブリッシュされます。Oracle Enterprise Service Busはリクエストを処理し、MQSeriesアダプタにレスポンスを送信します。

  4. Oracle Enterprise Service Busからのレスポンス・メッセージが受信されます。

  5. 設計時の指定に従ってXMLコンテンツがフォーマットされます。

  6. メッセージのプロパティ(優先度、有効期限、メッセージ・タイプおよび永続性など)が設定されます。 これらのプロパティは、「アダプタ構成ウィザード」で選択した内容に基づきます。

  7. 設計時に「アダプタ構成ウィザード」で指定したキューにメッセージが送信されます。

図6-22に、「アダプタ構成ウィザード」で選択する必要のある操作タイプを示します。

図6-22 サーバーとしてのOracle Enterprise Service Bus: 同期リクエスト-レスポンス相互作用

図6-22の説明が続きます
「図6-22 サーバーとしてのOracle Enterprise Service Bus: 同期リクエスト-レスポンス相互作用」の説明

これ以降のウィンドウは、すべて第6.3.1.4項「同期リクエスト-レスポンス(Oracle BPEL Process Managerがサーバーの場合)で説明したウィンドウと同様です。

6.3.2 メッセージ・プロパティ

MQSeriesアダプタは、次のメッセージ・プロパティをサポートしています。

6.3.2.1 メッセージ・タイプ

MQSeriesアダプタは、次の4タイプのメッセージをサポートしています。

  • 通常メッセージ

    通常メッセージは、あるプログラムから別のプログラムに送信されますが、レスポンスは期待されません。

  • リクエスト・メッセージ

    リクエスト・メッセージは、あるプログラムから別のプログラムに送信され、レスポンスが必要です。

  • リプライ・メッセージ

    リプライ・メッセージは、リクエスト・メッセージに対するレスポンスとしてプログラムにより送信されます。

  • レポート・メッセージ

    レポート・メッセージは、受信側プログラムから送信側プログラムに、メッセージ配信の成功または失敗の確認として送信されます。 レポート・メッセージはすべてのメッセージ・タイプ(通常メッセージ、リクエスト・メッセージまたはリプライ・メッセージ)について生成できます。

    MQSeriesアダプタでサポートされている確認メッセージの詳細は、第6.3.5項「レポート・メッセージ」を参照してください。

6.3.2.2 メッセージのフォーマット

図6-6のように、「アダプタ構成ウィザード」を介して送信メッセージのフォーマットを指定できます。 次のメッセージ・フォーマットがサポートされています。

  • フォーマット名なし(デフォルト)

  • コマンド・サーバー・リクエスト/リプライ・メッセージ

  • タイプ1コマンド・リプライ・メッセージ

  • タイプ2コマンド・リプライ・メッセージ

  • デッドレター・ヘッダー

  • イベント・メッセージ

  • プログラム可能なコマンド・フォーマットによるユーザー定義メッセージ

  • 文字のみで構成されるメッセージ

  • トリガー・メッセージ

  • 転送キュー・ヘッダー

6.3.2.3 メッセージの有効期限

図6-6のように、「アダプタ構成ウィザード」を介して送信メッセージの有効期限を指定できます。 メッセージの有効期限後は、キュー・マネージャによりメッセージが破棄されます。

メッセージに有効期限通知が設定されている場合は、メッセージが破棄されるときに通知が生成されます。 この通知は、replyToQueueパラメータで指定されたキューに送信されます。 デフォルトでは、expiryフィールドにNEVERが設定されます。

6.3.2.4 メッセージの優先度

図6-6のように、「アダプタ構成ウィザード」を介して送信メッセージの優先度を指定できます。 優先度の範囲は0(最低)から9(最高)までです。 また、メッセージの優先度を、宛先キューで定義されているデフォルトの優先度属性から取得するように指定することも可能です。 デフォルトでは、メッセージ優先度としてAS_Q_DEFが設定されます。

6.3.2.5 メッセージの永続性

図6-6のように、「アダプタ構成ウィザード」を介して送信メッセージの永続性を指定できます。 メッセージの永続性が設定されていない場合は、キュー・マネージャの再起動時またはシステム障害の発生時にメッセージが消失します。 メッセージの永続性をtrueに設定すると、システム障害が発生したりキュー・マネージャが再起動してもメッセージは消失しません。 メッセージの永続性を、宛先キューで定義されているデフォルトの優先度属性から取得するように指定することも可能です。 永続メッセージは、ログ・ファイルとキュー・データ・ファイルに書き込まれます。 障害後にキュー・マネージャが再起動すると、これらの永続メッセージが各ファイルからリカバリされます。


注意:

前述のメッセージ・プロパティはすべて、実行時にメッセージ・ヘッダーを介して指定できます。 これらのプロパティにはassignアクティビティを使用して値を割り当てることができます。

6.3.3 相関スキーム

リクエスト-リプライ相互作用でリクエストにレスポンスをマッピングするには、相関付けが必要です。 各MQSeriesリクエスト・メッセージには、メッセージIDと相関IDが含まれています。アプリケーションは、Oracle BPEL Process Managerからリクエスト・メッセージを受信すると、レスポンス・メッセージに対して定義されている相関スキームをチェックします。 アプリケーションでは、相関スキームに基づいてレスポンス・メッセージのメッセージIDと相関IDが生成されます。

図6-23に示す「アダプタ構成ウィザード」の「レスポンス」ウィンドウでは、レスポンス・メッセージの相関スキームを指定できます。

図6-23 相関スキームの選択

図6-23の説明が続きます
「図6-23 相関スキームの選択」の説明

図6-23に示す「メッセージID」ボックスには、レスポンス・メッセージのメッセージIDについて次のオプションが用意されています。

  • レスポンス・メッセージの新規メッセージIDの生成

  • リクエスト・メッセージのメッセージIDを使用

同様に、図6-23に示す「相関ID」ボックスには、レスポンス・メッセージの相関IDについて次のオプションが用意されています。

  • リクエスト・メッセージのメッセージIDを使用

  • リクエスト・メッセージの相関IDを使用

6.3.4 配布リストのサポート

MQSeriesアダプタでは、メッセージを複数のキューにエンキューできます。 これはアダプタWSDLファイルのDistributionListパラメータを使用して指定できます。次に例を示します。

DistributionList="Queue1Name,QueueManger1Name; Queue2Name,QueueManger2Name"

キュー名とキュー・マネージャ名の値ペアをセミコロン(;)で区切る必要があります。 キュー・マネージャ名はオプションです。

6.3.5 レポート・メッセージ

MQSeriesアダプタでは、送信メッセージに各種の確認メッセージを設定できます。 これらの確認メッセージはレポート・メッセージと呼ばれます。 レポート・メッセージが生成されるのは、その生成基準が満たされる場合のみです。 メッセージをキューにエンキューするときに、複数タイプのレポート・メッセージをリクエストできます。 レポート・メッセージをリクエストする場合は、レポート・メッセージの送信先となるキュー名を指定する必要があります。 このキューはreplyToキューと呼ばれます。 レポート・メッセージは、キュー・マネージャ、メッセージ・チャネルまたはアプリケーションで生成できます。

MQSeriesアダプタは、次のメッセージ・レポートをサポートしています。

  • 着信時の確認

    「着信時の確認」(COA)メッセージは、メッセージがターゲット・キュー・マネージャに送信されたことを示します。 COAメッセージはキュー・マネージャにより生成されます。 このメッセージ・レポートは、図6-13に示した「アダプタ構成ウィザード」ウィンドウの「レポート」ウィンドウで選択できます。

  • 送信時の確認

    「送信時の確認」(COD)メッセージは、メッセージが受信側アプリケーションにより受信されたことを示します。 CODメッセージはキュー・マネージャにより生成されます。 このメッセージ・レポートは、図6-13に示した「レポート」ウィンドウで選択できます。

  • 例外レポート

    例外レポートが生成されるのは、メッセージを指定の宛先キューに送信できない場合です。 例外レポートは、メッセージ・チャネルにより生成されます。 このメッセージ・レポートは、図6-13に示した「アダプタ構成ウィザード」ウィンドウの「レポート」ウィンドウで選択できます。

  • 有効期限レポート

    有効期限レポートは、メッセージが送信可能になる前に指定の有効期限が経過したために、メッセージが破棄されたことを示します。 有効期限レポートは、キュー・マネージャにより生成されます。 このメッセージ・レポートは、図6-13に示した「アダプタ構成ウィザード」ウィンドウの「レポート」ウィンドウで選択できます。

  • 肯定アクション通知

    肯定アクション通知(PAN)は、リクエストが正常に処理されたことを示します。 つまり、メッセージでリクエストされたアクションが正常に実行されたことを意味します。 このタイプのレポートは、アプリケーションにより生成されます。

  • 否定アクション通知

    否定アクション通知(NAN)は、リクエストが正常に処理されなかったことを示します。 つまり、メッセージでリクエストされたアクションが正常に実行されなかったことを意味します。 このタイプのレポートは、アプリケーションにより生成されます。

PANとNANを除き、前述のすべてのレポート・メッセージについて、オリジナル・メッセージの全体または一部を含めるか、まったく含めないかを指定できます。 「アダプタ構成ウィザード」で次のオプションから1つ選択できます。

  • オリジナル・メッセージのデータなし

  • オリジナル・メッセージの最初の100バイトのデータ

  • オリジナル・メッセージ全体

6.3.6 フィルタ基準

MQSeriesアダプタでは、インバウンド相互作用中にメッセージを優先度でフィルタできます。 FilterByPriorityパラメータで優先度を指定すると、MQSeriesアダプタではFilterByPriorityパラメータで指定したのと同じ優先度を持つメッセージの有無がキュー内でチェックされます。 次の例に、FilterByPriorityパラメータの設定方法を示します。

FilterByPriority= "2"

6.3.7 メッセージ配信失敗オプション

MQSeriesアダプタでは、メッセージを宛先キューに配信できなかった場合に実行するアクションを指定できます。 次のいずれかのアクションを指定できます。

  • メッセージをデッドレター・キューに蓄積

    これはデフォルト・アクションです。 宛先キューに配信できなかったメッセージはデッドレター・キューに蓄積されます。 送信者からリクエストされた場合は、レポート・メッセージが生成されます。 次の例に示すように、アダプタWSDLファイルでOnDeliverFailureパラメータの値としてDeadLetterQueueを指定します。

    OnDeliverFailure="DeadLetterQueue"
    
    
  • メッセージの破棄

    これは、宛先キューに配信できないメッセージを破棄する必要があることを示します。 送信者からリクエストされた場合は、レポート・メッセージが生成されます。 次の例に示すように、アダプタWSDLファイルでOnDeliverFailureパラメータの値としてDiscardを指定します。

    OnDeliverFailure="Discard"
    
    

6.3.8 メッセージのセグメンテーション

MQSeriesアダプタでは、インバウンド相互作用とアウトバウンド相互作用の両方でメッセージのセグメンテーションがサポートされています。 セグメンテーションが必要になるのは、メッセージ・サイズがキュー・マネージャに指定されたメッセージ・サイズよりも大きい場合です。 物理メッセージは2つ以上の論理メッセージに分割されます。 すべての論理メッセージには、同じグループIDと順序番号およびオフセットが付きます。

インバウンド相互作用の場合、セグメンテーションは本来MQSeriesアダプタでサポートされています。 MQSeriesアダプタでは、すべての論理メッセージが順序番号順にデキューされてから、単一メッセージがXMLとしてOracle BPEL Process ManagerまたはOracle Enterprise Service Busにパブリッシュされます。

アウトバウンド相互作用の場合は、必要に応じてSegmentIfRequiredパラメータを設定して送信メッセージをセグメント化できます。次に例を示します。

SegmentIfRequired="true"

メッセージは、サイズがキューに設定された上限を超える場合などの制約に基づいてセグメント化されます。

6.3.9 メッセージのグループ化

MQSeriesアダプタでは、インバウンド相互作用とアウトバウンド相互作用の両方でメッセージのグループ化がサポートされています。 グループに属するメッセージは、完全なメッセージでも物理メッセージの論理セグメントでもかまいません。

インバウンド相互作用の場合、グループ化は本来MQSeriesアダプタでサポートされています。 MQSeriesアダプタでは、同じグループに属しているまたは同じグループIDを持つメッセージがすべて順序番号順にデキューされ、単一メッセージがXMLとしてOracle BPEL Process ManagerまたはOracle Enterprise Service Busにパブリッシュされます。


注意:

インバウンド・メッセージが不透明(Opaque)スキーマを持つ場合、メッセージのグループ化はサポートされません。

アウトバウンド相互作用の場合、グループ化はヘッダーを介してサポートされます。 すべてのメッセージについて同じグループIDを生成し、順序番号も指定する必要があります。 グループ内のメッセージは、last-msg-in-groupフラグでマークする必要があります。 Oracle BPEL Process Managerでは、assignアクティビティを使用してこれらのプロパティを設定できます。 たとえば、同じグループの一部として3件のメッセージを送信するとします。

第1メッセージについて、assignアクティビティを介して次のプロパティを設定します。

  • IsMsgInGroup: このプロパティをtrueに設定する必要があります。

  • GroupId: グループIDは、キュー・マネージャに生成させるか、独自に指定できます。キュー・マネージャにグループIDを生成させる場合は、GroupIdGENERATE_GROUP_IDとして設定します。

  • MsgSeqNumber: このプロパティを1に設定する必要があります。

  • IsLastMsgInGroup: このプロパティをfalseに設定する必要があります。

図6-24にassignアクティビティのダイアログ・ボックスを示します。

図6-24 assignアクティビティのボックス

図6-24の説明が続きます
「図6-24 assignアクティビティのボックス」の説明

第2メッセージの場合は、図6-25に示すように、最初に第1メッセージのGroupIdを、メッセージ・ヘッダーから第2のメッセージ・ヘッダーにコピーします。

図6-25 メッセージのGroupIDのコピー

図6-25の説明が続きます
「図6-25 メッセージのGroupIDのコピー」の説明

次に、assignアクティビティを介して次のプロパティを設定します。

  • IsMsgInGroup: このプロパティをtrueに設定する必要があります。

  • MsgSeqNumber: このプロパティを2に設定する必要があります。

  • IsLastMsgInGroup: このプロパティをfalseに設定する必要があります。

最後のメッセージの場合も、第1および第2メッセージと同様にGroupidを割り当ててから、次のプロパティを指定する必要があります。

  • IsMsgInGroup: このプロパティをtrueに設定する必要があります。

  • MsgSeqNumber: このプロパティを3に設定する必要があります。

  • IsLastMsgInGroup: このプロパティをtrueに設定する必要があります。

6.3.10 CICSとの統合

MQSeriesアダプタは、CICSサーバーからのメッセージの送受信をサポートします。 インバウンド方向では、CICSサーバーからのインバウンド・メッセージは通常メッセージと同様にデキューされます。 アウトバウンド方向では、メッセージにCICSフォーマットを使用する必要があります。 次の例に、アウトバウンドCICSメッセージ・フォーマットのサンプル・スキーマ・ファイルを示します。

<?xml version="1.0" ?><schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://xmlns.oracle.com/pcbpel/nxsd/cics_mqcih"
        elementFormDefault="qualified"
        attributeFormDefault="unqualified"

        xmlns:nxsd="http://xmlns.oracle.com/pcbpel/nxsd"
        nxsd:version="NXSD"

        nxsd:encoding="UTF8"
        nxsd:stream="bytes"
        nxsd:byteOrder="bigEndian"

        xmlns:nxsd_extn="http://xmlns.oracle.com/pcbpel/nxsd/extensions"

<element name="MSGForMQCICSBridge">
    <complexType>
      <sequence>
        <element name="MQCIH">
          <complexType>
            <sequence>
              <!--
              MQCHAR4   StrucId;
              Structure identifier
              -->
              <element name="StrucId" type="string"
               nxsd:style="fixedLength" nxsd:length="4" nxsd:padStyle="tail"/>

              <!--
              MQLONG    Version;
              Structure version number 1 or 2
              -->
              <element name="Version" type="string"
               nxsd:style="integer" nxsd_extn:octet="4"
               nxsd_extn:align="0" nxsd_extn:sign="unticked" />
              <!--
              MQLONG    StrucLength;
              Length of MQCIH structure V1=164 V2=180
              -->
              <element name="StrucLength" type="string"
               nxsd:style="integer" nxsd_extn:octet="4"
               nxsd_extn:align="0" nxsd_extn:sign="unticked" />

              <!--
              MQLONG    Encoding;
              Reserved
              -->
              <element name="Encoding" type="string"
               nxsd:style="integer" nxsd_extn:octet="4"
               nxsd_extn:align="0" nxsd_extn:sign="unticked" />

              <!--
              MQLONG    CodedCharSetId;
              Reserved              -->
              <element name="CodedCharSetId" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />

              <!--
              MQCHAR8   Format;
              MQ Format name
              -->
              <element name="Format" type="string"
              nxsd:style="fixedLength" nxsd:length="8" />

              <!--
              MQLONG    Flags;
              Reserved
              -->
              <element name="Flags" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"

               nxsd_extn:sign="unticked" />

              <!--
              MQLONG   ReturnCode;
              Return code from bridge
              -->
              <element name="ReturnCode" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />

              <!--
              MQLONG   CompCode;
              MQ completion code or CICS EIBRESP
              -->
              <element name="CompCode" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />

              <!--
              MQLONG   Reason;
              MQ reason or feedback code, or CICS EIBRESP2
              -->
              <element name="Reason" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />

              <!--
              MQLONG   UOWControl;
              Unit-of-work control
              -->
              <element name="UOWControl" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />

              <!--
              MQLONG   GetWaitInterval;
              Wait interval for MQGET call issued by bridge
              -->
              <element name="GetWaitInterval" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="ticked" />

              <!--
              MQLONG   LinkType;
              Link type
              -->
              <element name="LinkType" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
              nxsd_extn:sign="unticked" />

              <!--
              MQLONG   OutputDataLength;
              Output commarea data length
              -->
              <element name="OutputDataLength" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="ticked" />

              <!--
              MQLONG   FacilityKeepTime;
              Bridge facility release time
              -->
              <element name="FacilityKeepTime" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />

              <!--
              MQLONG   ADSDescriptor;
              Send/receive ADS descriptor
              -->
              <element name="ADSDescriptor" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />

              <!--
              MQLONG   ConversationalTask;
              Whether task can be conversational
              -->
              <element name="ConversationalTask" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />
                            <!--
              MQLONG   TaskEndStatus;
              Status at end of task
              -->
              <element name="TaskEndStatus" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />


              <!--
              MQBYTE   Facility[8];
              BVT token value. Initialise as required.
              -->
              <element name="Facility" type="string"
               nxsd:style="integer" nxsd_extn:octet="8" nxsd_extn:align="0"
               nxsd _extn:sign="unticked" />

              <!--
              MQCHAR4  Function;
              MQ call name or CICS EIBFN function name
              -->
              <element name="Function" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />

              <!--
              MQCHAR4  AbendCode;
              Abend code
              -->
              <element name="AbendCode" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />

              <!--
              MQCHAR8  Authenticator;
              Password or passticket
              -->
              <element name="Authenticator" type="string"
              nxsd:style="fixedLength" nxsd:length="8" />

              <!--
              MQCHAR8  Reserved1;
              Reserved
              -->
              <element name="Reserved1" type="string"
               nxsd:style="fixedLength" nxsd:length="8" />

              <!--
              MQCHAR8  ReplyToFormat;
              MQ format name of reply message
              -->
              <element name="ReplyToFormat" type="string"
               nxsd:style="fixedLength" nxsd:length="8" />

              <!--
              MQCHAR4  RemoteSysId;
              Remote sysid to use
              -->
              <element name="RemoteSysId" type="string"
              nxsd:style="fixedLength" nxsd:length="4" />

              <!--
              MQCHAR4  RemoteTransId;
              Remote transid to attach
              -->
              <element name="RemoteTransId" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />

              <!--
              MQCHAR4  TransactionId;
              Transaction to attach
              -->
              <element name="TransactionId" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />

              <!--
              MQCHAR4  FacilityLike;
              Terminal emulated attributes
              -->
              <element name="FacilityLike" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />

              <!--
              MQCHAR4  AttentionId;
              AID key
              -->
              <element name="AttentionId" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />

              <!--
              MQCHAR4  StartCode;
              Transaction start code
              -->
              <element name="StartCode" type="string"
              nxsd:style="fixedLength" nxsd:length="4" />

              <!--
              MQCHAR4  CancelCode;
              Abend transaction code
              -->
              <element name="CancelCode" type="string"
               nxsd:style="fixedLength" nxsd:length="4" />

              <!--
              MQCHAR4  NextTransactionId;
              Next transaction to attach
              -->
              <element name="NextTransactionId" type="string"
              nxsd:style="fixedLength" nxsd:length="4" />

              <!--
              MQCHAR8  Reserved2;
              Reserved
              -->
              <element name="Reserved2" type="string"
              nxsd:style="fixedLength" nxsd:length="8" />
              <!--
              MQCHAR8  Reserved3;
              Reserved
              -->
              <element name="Reserved3" type="string"
              nxsd:style="fixedLength" nxsd:length="8" />

              <!--
              MQLONG   CursorPosition;
              Cursor position
              -->
              <element name="CursorPosition" type="string"
              nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
              nxsd_extn:sign="unticked" />

              <!--
              MQLONG   ErrorOffset;
              Error offset
              -->
              <element name="ErrorOffset" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />

              <!--
              MQLONG   InputItem;
              Input item
              -->
              <element name="InputItem" type="string"
               nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
               nxsd_extn:sign="unticked" />

              <!--
              MQLONG   Reserved4;
              Reserved
              -->
              <element name="Reserved4" type="string"
              nxsd:style="integer" nxsd_extn:octet="4" nxsd_extn:align="0"
              nxsd_extn:sign="unticked" />
            </sequence>
          </complexType>
        </element>

        <!--
        Application data
        -->
        <element name="ApplicationData" type="string"
                                      fixed="Nothing" />

      </sequence>
    </complexType>
  </element>
</schema>

6.4 MQSeriesアダプタの構成

MQSeriesアダプタを使用するための設定の前提条件は、次のとおりです。

MQSeriesアダプタを構成するには、次の手順を実行します。

6.4.1 MQSeriesアダプタのクラスパスへのcom.ibm.mq.jarの追加

この項で説明する手順は、MQSeriesアダプタの使用前に1度のみ実行します。 次の手順に従って、MQSeriesアダプタのクラスパスにcom.ibm.mq.jarを追加します。

  1. com.ibm.mq.jarファイルを任意のフォルダにコピーします。

  2. 次の例に示すように、com.ibm.mq.jarのパスを指定してserver.xmlファイルに新規共有ライブラリを作成します。

    <shared-library name="oracle.mqseries" version="10.1.3">
         <code-source path="C:\ORAHOME\bpel/lib/com.ibm.mq.jar"/>
    </shared-library>
    
    

    server.xmlファイルの場所は、インストール・タイプに応じて異なります。 表6-3に、インストール・タイプおよび対応するserver.xmlファイルの場所を示します。

    表6-3 server.xmlファイルの場所

    インストール・タイプ ファイルの場所

    SOA Basic Installation

    Oracle_Home\j2ee\home\config

    Oracle Enterprise Service Bus on Oracle Application Server Middle tier

    Oracle_Home\j2ee\homemid\config

    Oracle BPEL Process Manager on Oracle Application Server Middle tier

    Oracle_Home\j2ee\homemid\config


  3. oc4j-ra.xmlファイルを変更して、次の例に示すように新規の共有ライブラリを含めます。

    <imported-shared-libraries>
      <import-shared-library name="oracle.bpel.common"/>
      <import-shared-library name="oracle.xml"/>
      <import-shared-library name="oracle.mqseries"/>
    </imported-shared-libraries>
    
    

    oc4j-ra.xmlファイルの場所は、インストール・タイプに応じて異なります。 表6-4に、インストール・タイプおよび対応するoc4j-ra.xmlファイルの場所を示します。

    表6-4 oc4j-ra.xmlファイルの場所

    インストール・タイプ ファイルの場所

    SOA Basic Installation

    Oracle_Home\j2ee\home\application-deployments\default\MQSeriesAdapter

    Oracle Enterprise Service Bus on Oracle Application Server Middle tier

    Oracle_Home\j2ee\homemid\application-deployments\default\MQSeriesAdapter

    Oracle BPEL Process Manager on Oracle Application Server Middle tier

    Oracle_Home\j2ee\homemid\application-deployments\default\MQSeriesAdapter


  4. サーバーを再起動します。

6.4.2 oc4j-ra.xmlファイルの変更

oc4j-ra.xmlファイル内で次のパラメータの値を指定します。

  • hostName: IBM WebSphere MQサーバーが稼働中のコンピュータの名前。

  • portNumber: IBM WebSphere MQサーバーへの接続に使用するポート番号。

  • queueManagerName: プライマリ・キュー・マネージャの名前。

  • channelName: チャネル名。

  • userID: リモート・ロケーションで稼働中のIBM WebSphere MQサーバーに接続する場合のユーザーID。

  • password: ユーザーIDに対応するパスワード。

  • clientEncoding: メッセージ・ヘッダーをエンコードする場合は、このパラメータが必須です。

  • hostOSType: WebSphereサーバーがzSeries/Operating System(z/OS)で稼働中の場合は、このパラメータを指定する必要があります。 値はzosです。


注意:

MQSeriesキューのプロパティは、次のリストに従って設定する必要があります。
  • MQSeriesキューの共有可能性プロパティはShareableに設定します。



  • MQSeriesキューの索引タイプはMQIT_MSG_IDに設定します。


次の例にサンプルoc4j-ra.xmlファイルを示します。

<connector-factory location="eis/MQ/MQSeriesAdapter" connector-name="MQSeriesAdapter">
    <config-property name="hostName" value="localhost"/>
    <config-property name="portNumber" value="1414"/>
    <config-property name="queueManagerName" value="QM"/>
    <config-property name="channelName" value="MYCHANNEL"/>
    <config-property name="userID" value=""/>
    <config-property name="password" value=""/>
    <config-property name="clientEncoding" value=""/>
    <config-property name="hostOSType" value=""/>
    <connection-pooling use="private">
       <property name="waitTimeout" value="300" />
       <property name="scheme" value="fixed_wait" />
       <property name="maxConnections" value="50" />
       <property name="minConnections" value="0" />
    </connection-pooling>
    <security-config use="none">
    </security-config>
</connector-factory>

6.5 Oracle BPEL Process ManagerでのMQSeriesアダプタの使用例

この項には、次の項目が含まれます。

6.5.1メッセージのエンキュー/デキュー

この使用例では、インバウンドのMQSeriesアダプタがMQSeriesキューtest_inからメッセージをデキューして、BPELプロセスにパブリッシュします。 受信MQSeriesメッセージがBPEL receiveアクティビティで消費され、同じメッセージがBPELアクティビティを介してMQSeriesキューtest_outに送信されます。 この使用例は、次の項で構成されています。

6.5.1.1 前提条件

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

第6.4項「MQSeriesアダプタの構成」の指定に従ってMQSeriesアダプタを構成し、2つのキューtest_inおよびtest_outを作成する必要があります。

メッセージのスキーマを定義するには、address-csv.xsdファイルが必要です。 このファイルは、次のディレクトリからコピーできます。

ORAHOME\bpel\samples\tutorials\121.FileAdapter\FlatStructure

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

Oracle JDeveloperで次の手順を実行し、メッセージをキューにエンキューするアダプタ・サービスを作成します。

  1. 「アプリケーション・ナビゲータ」で、「アプリケーション」を右クリックして「新規アプリケーション」を選択します。 「アプリケーションの作成」ダイアログ・ボックスが表示されます。

  2. 「アプリケーション名」フィールドにEnqueueDequeueと入力して「OK」をクリックします。 「プロジェクトの作成」ダイアログ・ボックスが表示されます。

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

  4. 「アプリケーション・ナビゲータ」で、「EnqueueDequeue」を右クリックして「新規プロジェクト」を選択します。 「新規ギャラリ」ダイアログ・ボックスが表示されます。

  5. 「カテゴリ」から「General」「Projects」を順番に選択します。

  6. 「項目」から「BPELプロセス・プロジェクト」を選択して「OK」をクリックします。 「BPELプロジェクト作成ウィザード - プロジェクトの設定」ダイアログ・ボックスが表示されます。

  7. 図6-26に示すように次の操作を実行します。

    1. 「名前」フィールドにSimple_Dequeue_Enqueueと入力します。

    2. 「テンプレート」リストから「空のBPELプロセス」を選択します。

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

    図6-26 「BPELプロジェクト作成ウィザード - プロジェクトの設定」ダイアログ・ボックス

    図6-26の説明が続きます
    「図6-26 「BPELプロジェクト作成ウィザード - プロジェクトの設定」ダイアログ・ボックス」の説明

  8. Schemaフォルダを作成し、このフォルダにaddress-csv.xsdファイルをコピーします。

  9. SchemaフォルダをSimple_Dequeue_Enqueueプロジェクト・ディレクトリのbpelサブディレクトリに移動します。

  10. 「コンポーネント・パレット」から設計領域に「PartnerLink」アクティビティをドラッグします。 「パートナ・リンクの作成」ダイアログ・ボックスが表示されます。

  11. 「名前」フィールドにInboundと入力し、図6-27に示す「アダプタ・サービスの定義」アイコンをクリックします。

    図6-27 アダプタ構成アイコン

    図6-27の説明が続きます
    「図6-27 アダプタ構成アイコン」の説明

  12. 「アダプタ構成ウィザード」の「ようこそ」ウィンドウで「次へ」をクリックします。 「アダプタ・タイプ」ウィンドウが表示されます。

  13. 「MQアダプタ」を選択して「次へ」をクリックします。 「サービス名」ウィンドウが表示されます。

  14. 「サービス名」フィールドにinboundServiceと入力して「次へ」をクリックします。 「MQ Series接続」ウィンドウが表示されます。

  15. 図6-28のように、実行時接続のJNDI名を指定して「次へ」をクリックします。

    図6-28 「MQ Series接続」ウィンドウ

    図6-28の説明が続きます
    「図6-28 「MQ Series接続」ウィンドウ」の説明

  16. 「操作タイプ」ウィンドウで「MQからメッセージを取得」を選択して「次へ」をクリックします。

  17. 図6-29に示すように「キュー名」フィールドにtest_inと入力して「次へ」をクリックします。 MQSeriesアダプタにより、このキューからメッセージがデキューされます。

    図6-29 「MQからメッセージを取得」ウィンドウ

    図6-29の説明が続きます
    「図6-29 「MQからメッセージを取得」ウィンドウ」の説明

  18. 「メッセージ」ウィンドウで「参照」をクリックします。 「タイプの選択」ダイアログ・ボックスが表示されます。

  19. 図6-30に示すように、「プロジェクトのスキーマ・ファイル」「address-csv.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。

    図6-30 「タイプの選択」ダイアログ・ボックス

    図6-30の説明が続きます
    「図6-30 「タイプの選択」ダイアログ・ボックス」の説明

  20. 「メッセージ」ウィンドウで「次へ」をクリックします。

  21. 「終了」をクリックします。 図6-31に示す「パートナ・リンクの作成」ダイアログ・ボックスが表示されます。

    図6-31 inboundServiceの「パートナ・リンクの作成」ダイアログ・ボックス

    図6-31の説明が続きます
    「図6-31 inboundServiceの「パートナ・リンクの作成」ダイアログ・ボックス」の説明

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

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

次の手順を実行し、メッセージをキューからデキューするアダプタ・サービスを作成します。

  1. 「コンポーネント・パレット」から設計領域に「PartnerLink」アクティビティをドラッグします。 「パートナ・リンクの作成」ダイアログ・ボックスが表示されます。

  2. 「名前」フィールドにOutboundと入力し、図6-27に示す「アダプタ・サービスの定義」アイコンをクリックします。

  3. 「アダプタ構成ウィザード」の「ようこそ」ウィンドウで「次へ」をクリックします。「アダプタ・タイプ」ウィンドウが表示されます。

  4. 「MQアダプタ」を選択して「次へ」をクリックします。 「サービス名」ウィンドウが表示されます。

  5. 「サービス名」フィールドにoutboundServiceと入力して「次へ」をクリックします。 「MQ Series接続」ウィンドウが表示されます。

  6. 図6-28のように、実行時接続のJNDI名を指定して「次へ」をクリックします。 「操作タイプ」ウィンドウが表示されます。

  7. 「MQにメッセージを蓄積」を選択して「次へ」をクリックします。

  8. 「キュー名」フィールドにtest_outと入力します。 MQSeriesアダプタにより、このキューにメッセージがエンキューされます。 図6-32のように、他のフィールドはデフォルトのままにしておきます。

    図6-32 「MQからメッセージを取得」ウィンドウ

    図6-32の説明が続きます
    「図6-32 「MQからメッセージを取得」ウィンドウ」の説明

  9. 「次へ」をクリックします。 「メッセージ」ウィンドウが表示されます。

  10. 「参照」をクリックします。 「タイプの選択」ダイアログ・ボックスが表示されます。

  11. 図6-30に示すように、「プロジェクトのスキーマ・ファイル」「address-csv.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。

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

  13. 「終了」をクリックします。 図6-33に示す「パートナ・リンクの作成」ダイアログ・ボックスが表示されます。

    図6-33 OutboundServiceの「パートナ・リンクの作成」ダイアログ・ボックス

    図6-33の説明が続きます
    「図6-33 OutboundServiceの「パートナ・リンクの作成」ダイアログ・ボックス」の説明

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

6.5.1.4 receiveアクティビティの作成

次の手順に従って、MQSeriesアダプタからメッセージを受信したときにBPELプロセス・インスタンスをインスタンス化するreceiveアクティビティを作成します。

  1. 「コンポーネント・パレット」から「アクティビティをここにドロップ」セクションに「Receive」アクティビティをドラッグします。

  2. receiveアクティビティをinboundServiceパートナ・リンクに結合します。 「編集 Receive」ダイアログ・ボックスが表示されます。

  3. 「名前」フィールドにReadMsgと入力します。

  4. 「変数」フィールドの横にある「変数の自動作成」アイコンをクリックします。 図6-34に示す「変数の作成」ダイアログ・ボックスが表示されます。

    図6-34 「変数の作成」ダイアログ・ボックス

    図6-34の説明が続きます
    「図6-34 「変数の作成」ダイアログ・ボックス」の説明

  5. 「OK」をクリックします。 ReadMsg_Dequeue_InputVariable変数が作成されます。

  6. 「インスタンスの作成」を選択します。 図6-35に示す「編集 Receive」ダイアログ・ボックスが表示されます。

    図6-35 「編集 Receive」ダイアログ・ボックス

    図6-35の説明が続きます
    「図6-35 「編集 Receive」ダイアログ・ボックス」の説明

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

6.5.1.5 invokeアクティビティの作成

次の手順に従って、メッセージをパートナ・リンクに送信してアウトバウンド・キューにエンキューさせるinvokeアクティビティを作成します。

  1. 「コンポーネント・パレット」からreceiveアクティビティの下に「Invoke」アクティビティをドラッグします。

  2. invokeアクティビティをoutboundServiceパートナ・リンクに結合します。 「編集 Invoke」ダイアログ・ボックスが表示されます。

  3. 「名前」フィールドにWriteMsgと入力します。

  4. 「変数」フィールドの横にある「変数の自動作成」アイコンをクリックします。 「変数の作成」ダイアログ・ボックスが表示されます。

  5. 「OK」をクリックします。 WriteMsg_Enqueue_InputVariable変数が作成されます。

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

6.5.1.6 assignアクティビティの作成

次の手順に従ってassignアクティビティを作成します。

  1. 「コンポーネント・パレット」から、ReadMsgアクティビティとWriteMsgアクティビティの間に「Assign」アクティビティをドラッグします。

  2. assignアクティビティをダブルクリックします。

  3. 「コピー操作」タブで、「作成」をクリックして「コピー操作」を選択します。 「コピー操作の作成」ダイアログ・ボックスが表示されます。

  4. 図6-36のように、「From」グループで「変数」「プロセス」「変数」「ReadMsg_Dequeue_InputVariable」「Root-Element」「ns3:Root-Element」を順番に選択します。

  5. 図6-36のように、「To」グループで「変数」「プロセス」「変数」「WriteMsg_Enqueue_InputVariable」「Root-Element」「ns3:Root-Element」を順番に選択します。

    図6-36 「コピー操作の作成」ダイアログ・ボックス

    図6-36の説明が続きます
    「図6-36 「コピー操作の作成」ダイアログ・ボックス」の説明

  6. 「OK」をクリックします。 図6-37に示すassignアクティビティのダイアログ・ボックスが表示されます。

    図6-37 assignアクティビティのダイアログ・ボックス

    図6-37の説明が続きます
    「図6-37 assignアクティビティのダイアログ・ボックス」の説明

  7. 「OK」をクリックします。 Oracle JDeveloperが図6-38のように表示されます。

    図6-38 Simple_Enqueue_Dequeue使用例の設計ビュー

    図6-38の説明が続きます
    「図6-38 Simple_Enqueue_Dequeue使用例の設計ビュー」の説明

6.5.1.7 実行時

次の手順に従って、このシナリオの実行時テストを行います。

  1. 「アプリケーション」ウィンドウで「アプリケーション」をクリックし、「Simple_Dequeue_Enqueue」を右クリックします。

  2. アプリケーションをデプロイします。

  3. 次のテキスト・メッセージをtest_inキューに入れます。

    Name,Street1,Street2,City,State,Country;
    
    

    同じテキストがtest_outキューに書き込まれます。 図6-39に、データが書き込まれたサンプルtest_outキューを示します。

    図6-39 サンプルtest_outキュー

    図6-39の説明が続きます
    「図6-39 サンプルtest_outキュー」の説明

6.5.2 同期リクエスト-レスポンス

この使用例では、インバウンドのMQSeriesアダプタがMQSeriesのインバウンド・キューtest_inからリクエスト・メッセージをデキューして、BPELプロセスにパブリッシュします。 MQSeriesアダプタは、BPELプロセスからのレスポンスを待機します。 レスポンスを受信すると、MQSeriesアダプタはリクエスト・メッセージのreplyToキューで指定されたMQSeriesキューにレスポンス・メッセージをエンキューします。 この使用例は、次の項で構成されています。

6.5.2.1 前提条件

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

第6.4項「MQSeriesアダプタの構成」の指定に従ってMQSeriesアダプタを構成し、2つのキューtest_inおよびtest_outを作成する必要があります。

メッセージのスキーマを定義するには、address-csv.xsdおよびaddress-fixedLength.xsdファイルが必要です。 この2つのファイルは、次のディレクトリからコピーできます。

ORAHOME\bpel\samples\tutorials\121.FileAdapter\FlatStructure

6.5.2.2 同期リクエスト-レスポンス・サービスの作成

Oracle JDeveloperで次の手順を実行して、インバウンド・キューからリクエスト・メッセージをデキューして、レスポンス・メッセージをアウトバウンド・キューにエンキューするパートナ・リンクを作成します。

  1. 「アプリケーション・ナビゲータ」で、「アプリケーション」を右クリックして「新規アプリケーション」を選択します。 「アプリケーションの作成」ダイアログ・ボックスが表示されます。

  2. 「アプリケーション名」フィールドにSyncReqResと入力して「OK」をクリックします。 「プロジェクトの作成」ダイアログ・ボックスが表示されます。

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

  4. 「アプリケーション・ナビゲータ」で、「SyncReqRes」を右クリックして「新規プロジェクト」を選択します。 「新規ギャラリ」ダイアログ・ボックスが表示されます。

  5. 「カテゴリ」から「General」「Projects」を順番に選択します。

  6. 「項目」から「BPELプロセス・プロジェクト」を選択して「OK」をクリックします。 「BPELプロジェクト作成ウィザード - プロジェクトの設定」ダイアログ・ボックスが表示されます。

  7. 次の手順を実行します。

    1. 「名前」フィールドにSync_Req_Resと入力します。

    2. 「テンプレート」ボックスから「空のBPELプロセス」を選択します。

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

  8. Schemaフォルダを作成し、このフォルダにaddress-csv.xsdファイルをコピーします。

  9. SchemaフォルダをSync_Req_Resプロジェクト・ディレクトリのbpelサブディレクトリに移動します。

  10. 「コンポーネント・パレット」から設計領域に「PartnerLink」アクティビティをドラッグします。 「パートナ・リンクの作成」ダイアログ・ボックスが表示されます。

  11. 「名前」フィールドにinbound_req_resと入力し、図6-27に示す「アダプタ・サービスの定義」アイコンをクリックします。 「アダプタ構成ウィザード」の「ようこそ」ウィンドウが表示されます。

  12. 「次へ」をクリックします。 「アダプタ・タイプ」ウィンドウが表示されます。

  13. 「MQアダプタ」を選択して「次へ」をクリックします。 「サービス名」ウィンドウが表示されます。

  14. 「サービス名」フィールドにinboundServiceと入力して「次へ」をクリックします。 「MQ Series接続」ウィンドウが表示されます。

  15. 図6-28のように、「MQ Series接続のJNDI名」フィールドで実行時接続のJNDI名を指定して「次へ」をクリックします。 「操作タイプ」ウィンドウが表示されます。

  16. 「MQからメッセージを取得し、リプライ/レポートを送信」を選択します。

  17. 図6-17のように、「同期」オプションを選択して「次へ」をクリックします。 「MQからメッセージを取得し、リプライ/レポートを送信」ウィンドウが表示されます。

  18. 「キュー名」フィールドにtest_inと入力して「次へ」をクリックします。 図6-19に示す「レスポンス」ウィンドウが表示されます。

  19. 「レスポンス・フォールバック・キュー名」フィールドでレスポンス・フォールバック・キューの名前を指定して「次へ」をクリックします。 図6-15に示す「メッセージ」ウィンドウが表示されます。

  20. 「メッセージ・スキーマの取得」グループで「参照」をクリックします。 「タイプの選択」ダイアログ・ボックスが表示されます。

  21. 「プロジェクトのスキーマ・ファイル」「address-csv.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。

  22. 「メッセージ・スキーマの送信」グループで「参照」をクリックします。 「タイプの選択」ダイアログ・ボックスが表示されます。

  23. 「メッセージ」ウィンドウで「参照」をクリックします。 「タイプの選択」ダイアログ・ボックスが表示されます。

  24. 「プロジェクトのスキーマ・ファイル」「address-fixedLength.xsd」および「Root-Element」を順番に選択して「OK」をクリックします。

  25. 「メッセージ」ウィンドウで「次へ」をクリックします。

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

  27. 「パートナ・リンクの作成」ダイアログ・ボックスで、図6-40のように「マイ・ロール」ボックスから「Dequeue_role」を選択します。

    図6-40 同期リクエスト-レスポンスの使用例の「パートナ・リンクの作成」ダイアログ・ボックス

    図6-40の説明が続きます
    「図6-40 同期リクエスト-レスポンスの使用例の「パートナ・リンクの作成」ダイアログ・ボックス」の説明

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

6.5.2.3 receiveアクティビティの作成

次の手順に従って、MQSeriesアダプタからメッセージを受信したときにBPELプロセス・インスタンスをインスタンス化するreceiveアクティビティを作成します。

  1. 「コンポーネント・パレット」から「アクティビティをここにドロップ」セクションに「Receive」アクティビティをドラッグします。

  2. receiveアクティビティをinboundServiceパートナ・リンクに結合します。 「編集 Receive」ダイアログ・ボックスが表示されます。

  3. 「名前」フィールドにReadMsgと入力します。

  4. 「変数」フィールドの横にある「変数の自動作成」アイコンをクリックします。 「変数の作成」ダイアログ・ボックスが表示されます。

  5. 「OK」をクリックします。 ReadMsg_DequeueEnqueue_InputVariable変数が作成されます。

  6. 「インスタンスの作成」を選択します。 図6-35に示す「編集 Receive」ダイアログ・ボックスが表示されます。

    図6-41 「編集 Receive」ダイアログ・ボックス

    図6-41の説明が続きます
    「図6-41 「編集 Receive」ダイアログ・ボックス」の説明

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

6.5.2.4 replyアクティビティの作成

次の手順に従って、inboundServiceパートナ・リンクにレスポンスを送信するreplyアクティビティを作成します。

  1. 「コンポーネント・パレット」からReadMsgアクティビティの下に「Reply」アクティビティをドラッグします。

  2. replyアクティビティをinboundServiceパートナ・リンクに結合します。 「編集 Reply」ダイアログ・ボックスが表示されます。

  3. 「名前」フィールドにReplyMsgと入力します。

  4. 「変数」フィールドの横にある「変数の自動作成」アイコンをクリックします。 「変数の作成」ダイアログ・ボックスが表示されます。

  5. 「OK」をクリックします。 ReplyMsg_DequeueEnqueue_OutputVariable変数が作成されます。 図6-42に示す「編集 Reply」ダイアログ・ボックスが表示されます。

    図6-42 「編集 Reply」ダイアログ・ボックス

    図6-42の説明が続きます
    「図6-42 「編集 Reply」ダイアログ・ボックス」の説明

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

6.5.2.5 transformアクティビティの作成

次の手順に従って、ReadMsg_DequeueEnqueue_InputVariable変数をReplyMsg_DequeueEnqueue_OutputVariable変数にマップします。

  1. 「コンポーネント・パレット」から、ReadMsgアクティビティとReplyMsgアクティビティの間に「Transform」アクティビティをドラッグします。

  2. 「Transform」アクティビティをダブルクリックします。

  3. 「ソース変数」ボックスで「ReadMsg_DequeueEnqueue_InputVariable」を選択します。

  4. 「ターゲット変数」ボックスで「ReplyMsg_DequeueEnqueue_OutputVariable」を選択します。

  5. 「マッピングの作成」アイコンをクリックします。 「Transformation_1.xsl」ウィンドウが開きます。

  6. 「<ソース>」パネルのtns:Address要素を「<ターゲット>」パネルのAddress要素へドラッグします。 図6-43に示す「自動マップ・プリファレンス」ダイアログ・ボックスが表示されます。

    図6-43 「自動マップ・プリファレンス」ダイアログ・ボックス

    図6-43の説明が続きます
    「図6-43 「自動マップ・プリファレンス」ダイアログ・ボックス」の説明

  7. 「祖先名を考慮した要素の一致」の選択を解除して「OK」をクリックします。

  8. 「コンポーネント・パレット」から、concat関数を「<ソース>」パネルのStreet1ノードへドラッグします。

  9. Street2ノードをconcat関数に結合します。 図に示す「Transformation_1.xsl」ウィンドウが表示されます。

  10. 「Transformation_1.xsl」ウィンドウを閉じます。

6.5.2.6 実行時

次の手順に従って、このシナリオの実行時テストを行います。

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

  2. アプリケーションをデプロイします。

  3. 次のテキスト・メッセージをtest_inキューに入れます。

    Name,Street1,Street2,City,State,Country;
    
    

    同じテキストが次のフォーマットでtest_outキューに書き込まれます。

    Name,Street1Street2,City,State,Country;
    

6.5.3 デモンストレーションおよびサンプル

Oracle Enterprise Service BusおよびOracle BPEL Process Managerのアダプタの概念に関する理解と実務的な知識を深めるために、一連のデモンストレーション、アクティビティと概念に関する参考資料およびチュートリアルが用意されています。

これらのサンプルは、Samplesフォルダにあります。

また、アダプタ・チュートリアルの更新版は次の場所にあります。

http://www.oracle.com/technology/products/integration/adapters/dev_support.html#tutorials