Page tree

Skip to end of metadata
Go to start of metadata

このセクションでは、着信するリクエスト メッセージに関連したレスポンス メッセージを送信する、さまざまなメッセージ レスポンダー ツールの構成方法について説明します。メッセージ レスポンダーは、実際の振る舞いをキャプチャするトラフィック ファイルから作成したり、 WSDL、 OpenAPI/Swagger/RAML 定義、XML スキーマといった定義から作成できます。また、手動で追加/定義することも可能です。

このセクションの内容:

概要

「メッセージ レスポンダー」という用語は、 HTTP、 MQ、 JMS、または他のプロトコルやカスタム プロトコル上でレスポンスを送信するツールすべてを指します。カスタム Message Responder はあらゆるメッセージ形式に対応できます。たとえば、メインフレーム メッセージ形式、バイナリ形式、あるいはその他の独自カスタム メッセージなどです。

メッセージ レスポンダーは、サポートされる仮想アセット プロトコルや API デプロイメント オプション上であれば、あらゆるコンテンツを受信および応答できます。すなわち、HTTP、 JMS、WebSphere MQ、あるいはカスタム拡張によって処理されるプロトコル/API などです (詳細については 「カスタム トランスポート、メッセージ形式、およびツールの使用」を参照)。メッセージ レスポンダーのオプションをカスタマイズすることで、手動で指定したさまざまなリクエスト/レスポンスのユース ケースで、あるいはデータ ソース、エラー条件、遅延などを介して、仮想アセットの振る舞いをカスタマイズできます。 

SQL Responder はメッセージ レスポンダーとは異なります

メッセージ レスポンダーが着信リクエストに関連する応答メッセージを送信するのに対し、SQL Responder は SQL クエリーに関連する結果を送信します。

メッセージ レスポンダーの配置

メッセージ レスポンダーは .pva ファイルの中に存在します。 

VirtualAssets プロジェクトがデフォルトであり、 .pva ファイルの場所として推奨します。このプロジェクトに追加された .pva ファイルは、ローカルの Virtualize サーバーに自動的にデプロイされます。このプロジェクト内に .pva がない場合はデプロイされません。 

このプロジェクトは、各仮想アセットの .pva ファイルの場所、 名前、 HTTP エンドポイント パス、グローバル レポート設定、および JMS と Web Sphere MQ トランスポート設定などの、各仮想アセットのデプロイ構成を格納する VirtualAssets.xml ファイルを含みます。このファイルは仮想アセットのデプロイ設定が変更されるときに自動的に更新されます。

適切なメッセージ形式にレスポンダーを構成

共通のメッセージ レスポンダー フレームワークを使用して、さまざまなメッセージ形式のメッセージ レスポンダーを作成/構成できます。可能な限り、すべての種類のメッセージ フレームワークで構成オプションが共有されます。さらに、特定のメッセージ形式では特別な構成オプションが利用できます (たとえば、カスタム メインフレーム用のカスタム変換オプション バイナリあるいはあなたのチームが開発したメッセージ形式の拡張などです)。したがって、さまざまなフォーマットのメッセージ レスポンダーで、さまざまな構成オプションが提供されます。

メッセージ レスポンダーは、メッセージを 1 つのフォーマットで受信し、違うフォーマットで応答するように構成できます (たとえば、 EDI メッセージを受信し、固定長メッセージで応答するなど)。この構成は、Request Handling オプションで構成できます。

メッセージ レスポンダーで使用するメッセージ形式を変更したい場合は (例: 固定長からプレーン テキストに変更したい場合など)、選択されているフォーマットを変更するだけです。  


構成オプション

全般構成

ツールの上部では次の全般オプションが使用可能です。

XML 変換オプション

これらのオプションは、 XML に変換される、あるいは XML から変換されるフォーマットにだけ使用可能です。

  • フォーマット: レスポンス ペイロードのフォーマットを選択します。
  • フォーム XML モードのフォーム入力時は [ネイティブ フォーマット] の代わりに XML を送信: 無効 (デフォルト) の場合、 Virtualize はメッセージを送信する前に XML モデルをネイティブ形式に自動変換します。  つまり、 Virtualize はネイティブ形式をサーバーに送信するので、Traffic Viewer で確認できます。
    • このオプションが有効な場合、 Virtualize はユーザーが GUI で応答用に構成したメッセージを送信します。  リテラル ビューまたはスクリプト ビューを使用すると、ネイティブ形式でメッセージのペイロードを作成できます。  このオプションをオンにして UI で XML を作成した場合 (たとえばフォーム入力ビューで)、Virtualize は XML をそのまま送信します。現在サポートされている形式では、通常はこのオプションをオンにすることはないでしょうが、Virtualize では、このような処理が可能です。

フォーム入力を使用してリクエスト ペイロードをモデル化するためのスキーマ

これらのオプションは、 XML に変換される、あるいは XML から変換されるフォーマットにだけ使用可能です。

メッセージ タイプ:

  • メッセージ タイプ: 使用したいメッセージ タイプを指定します。そうすることで、 Virtualize に [フォーム入力] ビューにデータ投入するよう促します。
  • スキーマ URL: サービスにアクセスできるスキーマ URL を表示します。WSDL URI を指定するには、テキスト フィールドに直接入力するか[参照] をクリックします。スキーマがない場合はこのフィールドは空にします。
  • スキーマに従う: 特定のツール パラメーターの値を手動で入力する代わりにスキーマから値を取得するかどうかを指定します。  このオプションがオンの場合、特定のパラメーターが無効化され、スキーマから値が取得されます。このオプションがオフの場合、[スキーマのリフレッシュ] ボタンも無効になります。

[定義] タブ

このタブは JSON、SOAP、Plain XML Message Responder 専用に設計されています。

[定義] タブのオプションを指定すると、レスポンス メッセージの指定を容易にするアイテムが [レスポンス] タブに自動的に表示されます。期待されるリクエストおよび送信レスポンスを定義する WSDL またはスキーマに関する以下のオプションを指定できます。

  • サービス定義: レスポンダーに関連付けられたサービス定義 (RAML、OpenAPI/Swagger、WSDL またはスキーマ) が存在するかどうかを指定します。プレーンな XML の場合、[なし] を選択します。サービス定義が指定され、ツールが WSDL またはスキーマの制約を受ける場合、該当するフォーム ビューに自動的に適切なフィールド値およびコントロールが設定されます (たとえば、ブーリアン値に対してはラジオ ボタン、数値または整数に対しては適切なコントロール、列挙型に対してはドロップダウンなど)。また、サービス定義を指定すると、無効なメッセージが入力されるのを防ぐことができます (たとえば、メッセージに必須の値がない、値の型が誤っている、スキーマに指定されていないメソッド/リソース/レスポンス コードなど)。メッセージが関連付けられたスキーマに適合するよう、編集機能も制限されます (たとえばツリー ノードの挿入、削除、名前の変更、コピー、貼り付けができないなど)。
  • RAML サービス定義モードの場合
    • RAML URL: 特定の RAML URL または RAML URL を参照する変数を指定します。
  • OpenAPI/Swagger サービス定義モードの場合
    • OpenAPI/Swagger URL: 特定の OpenAPI/Swagger URL、または OpenAPI/Swagger URL を参照する変数を指定します。
  • WSDL サービス定義モードの場合
    • WSDL URL: このサービスにアクセスするための WSDL URL を指定します。WSDL URI を指定するには、テキスト フィールドに直接入力するか[参照] をクリックします。WSDL がない場合はこのフィールドは空にします。
    • WSDL に従う: 特定のツール パラメーターの値を手動で入力する代わりに WSDL から値を取得するかどうかを指定します。  このオプションがオンの場合、ルーター エンドポイント、 SOAP アクション、 SOAP ボディやヘッダー パラメーターといった特定のパラメーターは無効になり、値は WSDL から取得されます。このオプションがオフの場合、 [WSDL のリフレッシュ] ボタンも無効になります。
    • WSDL 文書: 利用可能な場合は自動的に入力されます。指定された WSDL URI のサービスを表示します。
  • スキーマ サービス定義モードの場合
    • スキーマ URL: サービスにアクセスできるスキーマ URL を表示します。WSDL URI を指定するには、テキスト フィールドに直接入力するか[参照] をクリックします。スキーマがない場合はこのフィールドは空にします。
    • スキーマに従う: 特定のツール パラメーターの値を手動で入力する代わりにスキーマから値を取得するかどうかを指定します。  このオプションがオンの場合、特定のパラメーターが無効化され、スキーマから値が取得されます。このオプションがオフの場合、[スキーマのリフレッシュ] ボタンも無効になります。
    • XML メッセージ タイプ: [レスポンス] タブのフォーム入力コントロールを SOAP メッセージ用にするか、プレーン XML メッセージ用にするかを指定します。プレーン XML を選択した場合、フォーム入力モードはメッセージを直接的に表示します。SOAP を選択した場合、フォーム入力の XML は SOAP エンベロープでラップされ、ビューに SOAP ヘッダーセクションが表示され、必要に応じて SOAP ヘッダーを構成することができます。

[レスポンス] タブ

[レスポンス] タブは、関連するリクエストを受信した際にレスポンダーに配信させるレスポンス値を構成できます。

使用できるオプションは、[ビュー] メニューで選択されたオプションに応じて異なります。

[フォーム入力]、 [フォーム XML]、 [リテラル]、 [複数レスポンス]、 [スクリプト]、および [フォーム JSON] ビュー

これらのビューは、複数の Parasoft ツール間で類似しています。次のエリアで説明されています。

注意

  • フォーム ベースのビューでは、データ ソースからレスポンスやパラメータライズした値をビルドできます。
  • [フォーム入力] ビューまたは [フォーム JSON] ビューで操作セレクターが有効な場合、操作セレクターを使用してレスポンスの操作を選択できます。操作を選択すると、フォーム入力/JSON ビューに適切な値および UI コントロールが設定されます (たとえば、ブーリアン値に対してはラジオ ボタン、数値または整数に対しては適切なコントロール、列挙型に対してはドロップダウンなど)。
    • フォーム入力モードでは、操作セレクターは、次の条件を満たすすべての操作を表示します。 1) 関連付けられたサービス定義がレスポンスを XML として定義している。 2) 関連付けられたサービス定義が XML スキーマを指定している。
    • フォーム JSON モードでは、操作セレクターは、次の条件を満たすすべての操作を表示します。 1) 関連付けられたサービス定義がレスポンスを JSON として定義している。 2) 関連付けられたサービス定義が JSON スキーマを指定している。



  • [複数レスポンス] モードでは利用可能なレスポンスのそれぞれが、着信リクエスト、静的レスポンス メッセージ、パフォーマンス (時間) オプションに独自の応答条件を持ちます。

[トランスポート ヘッダー] タブ

[トランスポート ヘッダー] タブでは、レスポンス メッセージとともに返される HTTP、 JMS、 または MQ メッセージのヘッダーを指定できます。[テーブル] ビューあるいは [リテラル] ビューを使用できます。

HTTP の場合は、レスポンスで生成される標準の HTTP ヘッダーにヘッダーの値が添付されます。JMS の場合は、送信レスポンス メッセージに String メッセージ プロパティとして設定されます。または、提供されたヘッダー名が既存のメッセージ プロパティ名に一致する場合は上書きされます (例: JMSCorrelationID)。WebSphere MQ の場合は、同様に構成可能な RFH2 ヘッダーのセクションがあります。

JMS では、キューに送信されたりトピックにパブリッシュされたりする前に、javax.jms.Message オブジェクトに設定される任意のプロパティ値を定義できます。たとえば、 JMSPriority、 JMSDeliveryMode、 JMSExpiration、および以下のようなその他プロパティを定義できます。


[レスポンダー応答条件] タブ

[レスポンダー応答条件] タブでは、メッセージ レスポンダー ツールがどのメッセージを受け付け、処理するかを指定できます。仮想アセットの URL に送信されるさまざまなメッセージは、ここでの設定を基にした特定のメッセージ レスポンダー ツール (それぞれ異なるオペレーションを処理する) に送られます。たとえば、 1 つのメッセージ レスポンダー ツールは顧客の登録メッセージに応答し、別のものは支払いメッセージに応答し、さらに別のものは一致するものが無かった場合に使用されるデフォルトの「キャッチ オール」として機能することが可能です。 

メッセージ レスポンダーがどのメッセージを受け入れるかは、以下の [レスポンダー応答条件] タブのエリアに指定できます。

  • トランスポート: この特定のレスポンダーでメッセージを処理するかどうかを判断する、メッセージ内の HTTP ヘッダー、 JMS メッセージ プロパティ、または MQ メッセージ フィールドを指定できます。詳細については、「Transport Correlation」 を参照してください。
  • リクエスト ボディ: メッセージを処理するかどうかを決定する XPath を指定します。詳細については、 メッセージ応答条件 を参照してください。
  • URL パラメーター (RESTful サービス用): メッセージを処理するかどうかを決定する URL パラメーターを指定します。「特定のパラメーターを含むすべてのメッセージに一致する応答条件 (設定される値は問わない)」、または「特定のパラメーターに特定の値が設定されたメッセージだけに一致する応答条件」を設定できます。URL パラメーターは繰り返すことができます (同じパラメーター セットの違う値を指定できます)。詳細については、「URL Parameter Correlation」 を参照してください。
  • URL パス: メッセージを処理するかどうかを判断する URL パスを指定できます。詳細については、「URL Path Correlation」 を参照してください。
  • HTTP メソッド: メッセージを処理するかどうかを判断する HTTP メソッドを指定できます。詳細については、「HTTP Method Correlation」 を参照してください。
  • カスタム: Java またはスクリプト言語で書かれたカスタム メソッドの戻り値に基づく、カスタム レスポンダー応答条件を指定できます。詳細については、「Custom Correlation」 を参照してください。
  • ISO 8583 応答条件: ISO 8583 メッセージの応答条件を指定できます。詳細については、「ISO 8583 の使用」 を参照してください。これらのオプションは特に SOAP Message Responder、プレーン XML Message Responder、およびリテラル Message Responder のために設計されています。

1 つのタイプの応答条件を指定することも、複数のタイプの応答条件を指定することも、あるいは応答条件を指定しないこともできます。応答条件が指定されていない場合、メッセージ内のすべてが処理されます。 

トランスポート応答条件

トランスポート応答条件を構成するには、次の操作を行います。

  1. [応答条件の有効化] チェック ボックスをオンにします。
  2. [追加] をクリックします。新しいエントリ行が表示されます。
  3. [ヘッダー名] を入力します。
  4. 次のいずれかを実施します。
    • このヘッダーが特定の値に設定されているメッセージに一致させたい場合: その値を [ヘッダーの値] に入力します。
    • ヘッダーの値に関係なく、このヘッダーを含むすべてのメッセージに一致させたい場合: [ヘッダー名が存在する場合、値にかかわらず応答条件に一致する] をオンにします。

リクエスト ボディ応答条件

リクエスト ボディ応答条件を構成するには、次の操作を行います。

  1. [応答条件の有効化] チェック ボックスをオンにします。
  2. [編集] ボタンをクリックします。[XPath 関数の編集] ダイアログが表示されます。
  3. 要素ツリーから要素を選択し、[関数] ドロップダウン メニューから関数を選択して [OK] をクリックします。
  4. 次のいずれかを実施します。
    • 着信リクエスト メッセージのツリーが表示される場合、 [要素] ツリーから要素を選択し、 [関数] ドロップダウン メニューから関数を選択します。
    • ツリー表現がない場合、あるいは抽出および評価したい要素/属性がツリーに完全に表示されていない場合、XPath 表現を手動で提供します。応答条件の目的で Virtualize がサポートする XPath 表現は、W3C の XPath 1.0 標準に基づきます。
    デフォルトでは、XPath のフィールドと値は大文字と小文字を区別しますが、Virtualize の起動時に適切なシステム プロパティを指定することにより、大文字と小文字の区別を変更できます。詳細については「大文字と小文字の区別」を参照してください。
  5. さらに XPath を指定したい場合は同様に追加します。

URL パラメーター応答条件

URL パラメーター応答条件は HTTP/HTTPS 上でアクセスされる仮想アセットに適用します。

URL パラメーター応答条件を構成するには、次の操作を行います。

  1. [応答条件の有効化] チェック ボックスをオンにします。
  2. この表で指定した URL パラメーターだけがリクエストにある場合に応答条件を適用したい場合、[ パラメーターのリストが正確に一致する場合にだけ応答条件に一致する] チェックボックスをオンにします。オフにした場合、表にあるパラメーターに加えて他のパラメーターを持つリクエストも一致します。このオプションが有効でも無効でも、指定されたパラメーターがすべて揃っていないメッセージは一致しません。



  3. [追加] ボタンをクリックします。新しいエントリ行が表示されます。
  4. [パラメーター名] を入力します。
  5. 次のいずれかを実施します。
    • このパラメーターが特定の値に設定されているメッセージに一致させたい場合: その値を [値] に入力します。



    • パラメーターの値に関係なく、このパラメーターを含むすべてのメッセージに一致させたい場合: [パラメーター名が存在する場合、常に応答条件に一致する (値にかかわらず)] をオンにします。 


たとえば、仮想アセットが http://myvirtserver:9080/MyAsset/MyPath というパスにデプロイされ、レスポンダーで次の URL パラメーターが指定されると仮定します。

パラメーター名
param1value1
param2value2


次のリクエスト URL はこの応答条件に一致します。

  • http://myvirtserver:9080/MyAsset/MyPath?param1=value1&m2=value2
  • http://myvirtserver:9080/MyAsset/MyPath?param1=value1&m2=value2&m3=value3
  • http://myvirtserver:9080/MyAsset/MyPath?param2=value2&m1=value1&m3=value3

次の URL はこのレスポンダーにマッピングされません。

  • http://myvirtserver:9080/MyAsset/MyPath?param1=value1&param2=someothervalue&param3=value3
  • http://myvirtserver:9080/MyAsset/MyPath?param1=value1&m3=value3

URL パス応答条件

URL パス応答条件は HTTP/HTTPS 上でアクセスされる仮想アセットに適用します。注意: Virtualize 9.7 から一致方法が変わりました。既存の仮想アセットは、現在のパラダイムを使用するために、変更時に自動的に再構成されます。 

URL パス応答条件を構成するには、次の操作を行います。

  1. [応答条件の有効化] チェック ボックスをオンにします。
  2. 応答条件に使用したいパスを指定します。

たとえば、仮想アセットが http://myvirtserver:9080/MyAsset/MyPath というパスにデプロイされ、 /segment1/segment2/** というパスがレスポンダー応答条件で指定されると仮定します。

次の URL はこの応答条件に一致します。

  • http://myvirtserver:9080/MyAsset/MyPath/segment1/segment2
  • http://myvirtserver:9080/MyAsset/MyPath/segment1/segment2/
  • http://myvirtserver:9080/MyAsset/MyPath/segment1/segment2/segment3?param1=value1&m2=value2

次の URL はこの応答条件に一致しません。

  • http://myvirtserver:9080/MyAsset/MyPath/segment1/
  • http://myvirtserver:9080/MyAsset/MyPath/segment3/segment1/segment2

Ant スタイルのワイルドカードを使用できます。 * はゼロ個以上の文字に一致し、** はゼロ以上のディレクトリに一致します。たとえば:

  • /**/abc/abc または /this/that/abc に一致します。
  • /abc/** /abc または /abc/this/that/theother に一致します。
  • /ab**/abc/d  に一致しません (1 個のアスタリスク /ab* を使用したかのように解釈されます)。/absolutely には一致します。
  • /**bc  は /0/abc に一致しません (1 個のアスタリスク /*bc を使用したかのように解釈されます)。/abc には一致します。


例 1: **/service/*

一致する一致しない

service/Repository
org/web/service/Entries
org/something/else/tools/stiff/service/Entries

org/web/service/foo/bar/Entries 


例 2: org/parasoft/virtualize/**

一致する一致しない

org/parasoft/virtualize/tools/service
org/parasoft/virtualize/stuff

org/parasoft/somethingelse 


例 3: org/parasoft/**/EM/*

一致する一致しない

org/parasoft/EM/Entries
org/parasoft/virtualize/soatest/tools/EM/Entries

org/parasoft/EM/foo/bar/Entries

HTTP メソッド応答条件

HTTP メソッド応答条件は HTTP/HTTPS 上でアクセスされる仮想アセットに適用します。

HTTP メソッド応答条件を構成するには、次の操作を行います。

  1. [応答条件の有効化] チェック ボックスをオンにします。
  2. 応答条件に使用したい HTTP メソッドを指定します。



たとえば、GET、POST、PUT を指定した場合、レスポンダーはメソッド GET、POST、または PUT がある HTTP リクエストに一致します。  CONNECT、DELETE、HEAD などがある HTTP リクエストには一致しません。 

カスタム応答条件

カスタム レスポンダー応答条件は、 Javaまたはスクリプト言語で書かれたカスタム メソッドの戻り値に基づいています。 

以下の点に注意してください。

  • メソッドは 0 個または 1 個の引数を取る。
  • 任意引数は com.parasoft.api.ScriptingContext 型である。
  • メソッドは ScriptingContext オブジェクトを使用して受信メッセージのトランスポート ヘッダー、URL パラメーター、およびメッセージのコンテンツにアクセスできる。

より詳しい情報については、 [Parasoft] > [ヘルプ目次] > [Extensibility API] > [CorrelationScriptingHookConstants] を参照してください。

正規表現

たとえば、正規表現に基づいてプレーン テキストのメッセージを使用する場合、次のように記述できます。

 from com.parasoft.api import CorrelationScriptingHookConstants
 from java.lang import *
 def match(context):
   strMessage = context.get(CorrelationScriptingHookConstants.MESSAGE_STR)
   return String(strMessage).matches("myRegularExpression")

XML 要素

XML メッセージの要素を使用したい場合、次のように記述できます。

from com.parasoft.api import CorrelationScriptingHookConstants
from org.w3c.dom import *
from javax.xml.parsers import *
from javax.xml.xpath import *
from java.io import *
from java.lang import *
def match(context):
  xmlDocument = context.get(CorrelationScriptingHookConstants.MESSAGE_DOM)
  if xmlDocument != None:
    xPathFactory = XPathFactory.newInstance();
    xpath = xPathFactory.newXPath()
    expression = xpath.compile("//*[local-name(.)='someElement' and namespace-uri(.)='someNamespace'][1]/text()")
    elementValue = expression.evaluate(xmlDocument)
    return String(elementValue).matches("myRegularExpression")
  return 0

HTTP メソッド

HTTP メソッドに応答したい場合は、次のように記述できます。

from com.parasoft.api import *
 
def correlateHTTPMethod(context):
    method = context.get(CorrelationScriptingHookConstants.REQUEST_METHOD)
    return "GET" == method

添付ファイル

カスタム レスポンダー応答条件で添付ファイルにアクセスするには、CorrelationScriptingHookConstants.ATTACHMENTS キーを使用してすべての添付ファイルのリストを取得します。返却される attachment インターフェイスには単一のメソッド getContents があり、添付ファイルの MIME タイプに基づいたオブジェクトを返します。

  • text/plain タイプの場合、文字列が返されます。
  • text/xml タイプの場合、javax.xml.transform.stream.StreamSource.StreamSource が返されます。
  • その他のタイプの場合、java.io.InputStream が返されます。

たとえば、添付ファイル (ここでは "Attachment" という文字列) に基づいて応答したい場合には、次のように記述できます。 


from com.parasoft.api import CorrelationScriptingHookConstants 
from org.python.core.util import FileUtil
from org.python.core.util import StringUtil
 
def correlateOperation(context):
    # List<com.parasoft.api.ICorrelationAttachment>
    attachments = context.get(CorrelationScriptingHookConstants.ATTACHMENTS)
    # java.io.InputStream
    instream = attachments.get(0).getContents()
    bytes = FileUtil.readBytes(instream)
    return "Attachment" == StringUtil.fromBytes(bytes)

[データ ソース応答条件] タブ

[データ ソース応答条件] タブは、仮想アセットのレスポンスにデータ ソースのどの行の値を使用するかを指定できます。着信メッセージがレスポンダー応答条件と一致すると、Virtualize はデータソース応答条件に基づいてデータソースでデータ ルックアップを実行し、データ行を見つけます。この行は、データ ソースからパラメータライズした値をレスポンス ([レスポンス] タブに定義されたように) に投入するために使用されます。

たとえば以下は、着信 XML メッセージの loanAmount 値と ApprovalLists データ ソース内の Amount 列の間の相関関係を構成しています。 



それぞれの着信リクエストでは、 loanAmount 値が Amount 列の行のひとつに一致させられます。その後、レスポンスは同じ行の他の列の値でパラメータライズされます。

[レスポンス] タブに次の設定をすることで、承認された値が Decision 列の関連する値でパラメータライズされます。  



そしてメッセージの値が Message 列の関連する値でパラメータライズされます。


大文字と小文字の区別

デフォルトでは、データソース応答条件で使用される値では大文字と小文字が区別されますが、データソース応答条件のさまざまな面で大文字と小文字を区別しないモードで Virtualize を開始できます。コマンドラインから Virtualize を起動し、次のシステム プロパティの 1 つまたはすべてを含めます。

parasoft.correlation.value.case.insensitive

このプロパティは、データ リポジトリ データ セット キー値について、大文字/小文字の区別を変更します。トラフィックから新しく作成されたアセットの値にのみ影響します。

利用できる値:

  • true - 大文字/小文字の区別は無視されます
  • false - 影響を受ける値は大文字/小文字が区別されます

例:

virtualize -Dparasoft.correlation.value.case.insensitive=true

parasoft.correlation.field.name.case.insensitive

このプロパティは、レスポンダー応答条件とデータソース応答条件のリクエスト本文フィールド名について、大文字/小文字の区別を変更します。

利用できる値:

  • true - 大文字/小文字の区別は無視されます
  • false - 影響を受ける値は大文字/小文字が区別されます

例:

virtualize -Dparasoft.correlation.field.name.case.insensitive=true

parasoft.correlation.url.path.case.insensitive

このプロパティは、リクエスト URL パスについて、大文字/小文字の区別を変更します。このプロパティは、アセットのデプロイメント パス、プロキシ リスン パス、およびレスポンダー URL パスの応答条件に影響します。

利用できる値:

  • true - 大文字/小文字の区別は無視されます
  • false - 影響を受ける値は大文字/小文字が区別されます

例:

virtualize -Dparasoft.correlation.url.path.case.insensitive=true

利点

[複数レスポンス] モードで仮想アセットを構成する方法の 1 つは、着信メッセージの性質に基づいて、メッセージ レスポンダー ツールが異なるレスポンス メッセージを送信するように手動で構成することです。 

もう 1 つの方法は、データ ソースを使用して仮想アセットが任意のメッセージで動的に応答するように構成することです。  データ ソース テーブル (Excel など) に簡単に入力できます。各行は、仮想アセットに応答させる着信メッセージ内の値 (通常はただのリーフ ノード値) です。別の列では、指定の条件に一致したときに仮想アセットにどのように応答させるかを指定します (詳細については、 「レスポンスのために既存のデータ ソースを使用またはデータ ソースをすばやく作成」 を参照)。その後、リクエスト メッセージおよびレスポンス メッセージの値とデータ ソースの列のマッピングを構成します。  

これによって、編集しやすい表 (データ ソース) で簡単にリクエスト/レスポンスのユース ケースを構成でき、メッセージの数が増えたときにも対応可能な方法で管理することができ、またより柔軟にレスポンス メッセージを処理できます (なぜなら、フォーム入力では一部の値を固定し、他の値をパラメーターライズし、自動の値やスクリプト化された値も使用することができるからです)。

データ ソース応答条件は、非常に柔軟です。単なる比較/応答条件を超えたルールやロジックを使用して受信リクエスト値に応答する仮想アセットを構成できます。たとえば、クレジット カード番号の下 4 桁を評価したり、数値が特定の値未満または特定の値を超えるかを評価したり、その他のパターンや式を評価できます。 

値の比較はワイルドカード * および ? をサポートしています。* はゼロ個以上の文字に一致し、? は 1 個の文字に一致します。

たとえば、"title keyword" という受信値に Linux という単語が含まれている場合にデータ ソースの行と一致させたい場合、データ ソースの値として "[like *Linux]" を指定できます。

構成手順

データ ソースの値で仮想アセット レスポンスをパラメータライズするには、次の操作を行います。

  1. Message Responder で使用するデータ ソースが Virtualize に存在していることを確認します。
  2. [データ ソース応答条件] タブの適切な場所で [追加] ボタンをクリックし、 XPath、 URL パラメーター、あるいは条件式を入力し、適切な列名を選択します。デプロイされた仮想アセットが実行されるとき、 Virtualize はリクエストから指定の値を抽出し、抽出された値に対応する列名を検索します。一致するデータが見つかった場合、該当するデータ ソース行のデータを使用してレスポンスに値が設定されます。
    • 同じ列名を (たとえば URL パラメーターと URL パスで) 複数回指定した場合、1 個の値だけが設定されます。前の値は上書きされます。
    • WSDL が指定されている場合、[編集] ボタンをクリックして XPath を生成できます。ダイアログはリアルタイムで XPath 式および列名を検証します。
    • ビジュアルな [編集] オプションではなく手動で XPath をカスタマイズした場合、XPath 式の入力/編集中に XPath の構文が検証されます。
    • データ ソース列ではワイルドカードを使用できます。
    • 式 (例: [> "55"]、 [like "alpha?beta*"]、 [like "*b*" or like "*a*" and like "*z*"]) を使用できます。詳細については、「メッセージ レスポンダーで値を照合するための条件式」を参照してください。
    • 利用可能な構成オプションの詳細については、以下の Data Source Correlation Options を参照してください。
  3. (フォーム入力、フォーム XML などと) 同じデータ ソースの別の列を参照し、Message Responder の [レスポンス] エリアをパラメータライズします。列名マッピングに複数の XPath または URL パラメーターを追加できます。

データ ソース応答条件オプション

データ ソース応答条件では以下の構成オプションが利用可能です。

フェイルオーバー オプション

データソース応答条件が有効な場合、Virtualize はこのタブで指定された条件を使用して、着信メッセージの値をデータ ソースの値と照合しようとします。特定の着信メッセージの値に一致するデータ ソース行がない場合、これは 「データ ソース応答条件の失敗」と見なされます。 

[データ ソース応答条件が失敗した場合、一致するレスポンダーの検索を続行する] が有効 (デフォルト設定) であり、このレスポンダーについてデータ ソース応答条件が失敗する場合、Virtualize は一致するレスポンダー応答条件があるレスポンダーの検索をレスポンダー スイートに対して続行します。以下の場合にだけエラーが レポートされます:

  • レスポンダー応答条件の条件に一致するレスポンダーがない、または
  • レスポンダー スイート中の別のレスポンダーがレスポンダー応答条件に一致するが、そのデータ ソース応答条件が失敗し、そのデータ ソース応答条件の失敗オプションが無効化されている

[データ ソース応答条件が失敗した場合、一致するレスポンダーの検索を続行する] が無効であり、このレスポンダーに対するデータ ソース応答条件が失敗する場合、直ちにエラーがレポートされ、Virtualize は一致するレスポンダーの検索を停止します。 

リクエスターにエラーが返されるとき、エラー イベントは [イベント詳細] ビューにも記録されます (仮想アセットのモニタリングが有効になっている場合。詳細は 「サーバーイベントの可視化」を参照してください)。

リクエスト ボディ

ここでは、1 つ以上の値を抽出するために、着信メッセージで実行する XPath を 1 つ以上指定できます。抽出された値は、マッピングされたデータ ソース列の値とマッチングされます。

リクエスト HTTP URL パラメーター

このエリアは、 HTTP/HTTPS 上でアクセスされる仮想アセットに適用します。リクエスト URL 内で検索する 1 つ以上の URL パラメーターを指定します。パラメーター値はマッピングされたデータ ソース列の値とマッチングされます。

応答条件のために複数の列が使用される場合、同じ行における各列の値は、すべてデコードまたはエンコードされなければなりません。すべての値がエンコードされる場合、それらの値はすべて同じ方法でエンコードされなければなりません。スペースにはプラス記号または “%20” を使用します。両方を使用することはできません。

たとえば、以下は許されます:


Borrower 1Borrower 2
John SmithJane Doe
John+SmithJane+Doe
John%20SmithJane%20Doe


この場合、Virtualize はクエリー文字列 Borrower1=John+Smith&Borrower2=Jane+Doe または URL エンコーディング中の他のバリエーションを着信リクエストと対応させることができます。

以下は許可されません:


Borrower 1Borrower 2
John SmithJane+Doe
John+SmithJane%20Doe
John%20SmithJane Doe

欠如したフィールド/空のフィールドとパラメーターでのマッチング

データ ソース応答条件は、リクエスト中のフィールドの欠如に対応できます。たとえば、リクエスト ボディの XML 要素のテキスト値に対してデータソース応答条件が設定されたレスポンダーがあるものとします。ただしこの XML 要素の使用は任意です。  同じデータ ソースを使って、フィールドがない場合に、パラメータライズされた値を使ってレスポンスにデータ投入することができます。それには、データ ソース行の対応するフィールドの値を空文字列として設定します。XPath 関数のプロパティのため、空文字列は XML 要素がない状況および XML 要素が空の状況に一致します。これは、URL パスおよび ISO 8583 メッセージに対するデータ ソース応答条件にも当てはまります。リクエスト中のフィールドの欠如に一致させるために、データ ソース行の対応するフィールドの値として空文字列を使用できます。

URL パラメーターのデータ応答条件の動作はやや異なります (パラメーター値が空文字列でありパラメーターが欠如しているケースを処理するために):

  • URL パラメーターが存在するがその値が空文字列であるケースに一致させるには、データ ソース行の対応するフィールドの値として空文字列を使用します。
  • リクエスト URL にパラメーターがないケースに一致させるには、データ リポジトリ エディターで、データソース行の対応するフィールドを右クリックし、[フィールドを除外に設定] を選択します。


リクエスト URL パス

このエリアは、 HTTP/HTTPS 上でアクセスされる仮想アセットに適用します。パス セグメントのインデックスに基づいてデータ ソースの値のマッピングを構成できます。

たとえば、以下を仮定します。

  • パス http://myvirtserver:9080/MyAsset/MyPath 上で仮想アセットがデプロイされる。
  • 着信リクエストは http://myvirtserver:9080/MyAsset/MyPath/[somedynamicvalue]/B/C というパターンがある。

[somedynamicvalue] セグメント以下の値を取得するためにデータ ソース列とマッチングする場合は、 URL パス インデックスに 2 を指定します。カウントは仮想アセットのデプロイメント パスに使用されるパス セグメントを含め、 0 から始まります。

URL http://myvirtserver:9080/MyAsset/MyPath/A/[somedynamicvalue]/C から動的な値をマッチングしたい場合は、パス インデックスの値に 3 を使用します。

適切なパス インデックスを自動的に入力するには、ダイアログの上部で適切なハイパーリンクを選択します。



応答条件のために複数の列が使用される場合、同じ行における各列の値は、すべてデコードまたはエンコードされなければなりません。すべての値がエンコードされる場合、それらの値はすべて同じ方法でエンコードされなければなりません。スペースにはプラス記号または “%20” を使用します。両方を使用することはできません。

たとえば、以下は許されます:


Borrower 1Borrower 2
John SmithJane Doe
John+SmithJane+Doe
John%20SmithJane%20Doe


この場合、Virtualize はクエリー文字列 Borrower1=John+Smith&Borrower2=Jane+Doe または URL エンコーディング中の他のバリエーションを着信リクエストと対応させることができます。

以下は許可されません:


Borrower 1Borrower 2
John SmithJane+Doe
John+SmithJane%20Doe
John%20SmithJane Doe


リクエスト ヘッダー

抽出してマッチングしたいリクエスト値のヘッダーを指定し、それぞれをデータ ソース列にマッチングします。抽出された値は、マッピングされたデータ ソース列の値とマッチングされます。

リクエスト ISO 8583 メッセージ

このエリアは、 ISO 8583 メッセージに値をマッチングするためだけに適用します。抽出してマッチングしたい値のフィールド ID を指定し、それぞれをデータ ソース列にマッチングします。ISO 8583 フィールドを含み、マッチングする値を持つメッセージだけが対応します。

これらのオプションは特に SOAP Message Responder、プレーン XML Message Responder、およびリテラル Message Responder のために設計されています。

処理の詳細

メッセージ レスポンダーがアクティブであるとき、これらの XPath 式/URL パラメーターを通して着信メッセージが評価されます。値と対応するデータ ソース値 (それぞれに対応する列) が比較され、値が一致する行が検索されます。 

データ ソースの行は、その行に対するメッセージ レスポンダーのデータ ソース応答条件リストで指定されたすべての値が一致したら、一致したと見なされます。

一致する行が見つかった場合、その行はメッセージ レスポンダーのレスポンス メッセージでパラメータライズした値に使用されます。そうすることで、仮想アセットは着信メッセージの値に基づいた任意のメッセージ値で応答できます。 

処理に関する詳細な情報については、 「メッセージ レスポンダーで値を照合するための条件式」を参照してください。

[添付ファイル] タブ

[添付ファイル] タブでは、レスポンス メッセージにバイナリまたは XML の HTTP 添付ファイルのいずれかを送信できます。 

MTOM を使用しているときは、[添付ファイル] タブに何も追加する必要はありません。MTOM オプションを使用すると、最適化された (エンコードされていない) SOAP エンベロープに xsd:base64Binary コンテンツで自動的に MIME_boundary が作成されます。[添付ファイル] タブは MIME/DIME オプションにだけ適用します。

アタッチメントを送信するには、次の操作を行います。

  1. [追加] をクリックします。[アタッチメント テーブル] に XML アタッチメント エントリが追加されます。
  2. XML アタッチメント エントリをダブルクリックします。[添付ファイルの編集] ダイアログが開きます。
  3. [添付ファイルの編集] ダイアログで、 [モード] ドロップダウン リストから XML または バイナリを選択します。
  4. 添付ファイルを構成します。
    • XML モードでは次のオプションが利用できます。
      • Views: ドロップダウン リストからビューを選択し、適宜構成します。
    • バイナリ モードでは次のオプションが利用できます。
      • Base 64 エンコーディング: Base 64 エンコーディングでバイナリ値をエンコードするには、このチェックボックスをオンにします。
      • データ ソース列: データ ソース列からの値を送信します。
      • ファイル: ファイルからの値を送信します。[ファイル システム] ボタンをクリックしてファイルを指定します。ファイルへのパスを、現在のコンフィギュレーション ファイルからの相対パスとして保存したい場合、[相対パスで保存] をオンにします。
      • テキスト: テキスト値を送信します。
      • コンテンツ タイプ: コンテンツ タイプを指定します。添付ヘッダーの追加、編集、削除をするには、 [ヘッダーの編集] をクリックします。

[オプション] タブ

[オプション] タブではメッセージの処理方法を構成できます。次のオプションが利用可能です。

リクエスト テンプレート

パラメーター選択支援のためのリクエスト URL テンプレート

テスト対象アプリケーションが対応する (そしてレスポンダーがシミュレートすべき) URL に特有のまたはそれを代表する URL を入力します。パラメータライズされたトラフィック ウィザード (「パラメータライズされたメッセージ レスポンダーのトラフィックからの作成」で説明) でレスポンダーが作成された場合、このフィールドは、このレスポンダーに対応するトラフィック中のリクエストの 1 つからの URL を使ってデータ投入されます。

ここで指定された値は、[レスポンダー応答条件] タブと [データ ソース応答条件] タブの両方で、URL パスおよび URL パラメーターの応答条件を設定するために使用されます。

XPath 作成支援に用いるリクエスト メッセージ テンプレート

XPath パラメーターを生成するときに (たとえばデータ ソース応答条件およびレスポンダー応答条件のメッセージ リクエスト XPath ダイアログや複数レスポンス XPath ダイアログで)、期待される XML レスポンスに自動的にデータ投入するために使用される XML 形式のテンプレートを指定できます。 

  • トラフィック ログからメッセージ レスポンダーを作成する場合、リクエスト メッセージ テンプレートは自動的に生成されます。トラフィック ログで特定された最も大きなリクエスト メッセージがこの目的で使用されます。
  • トラフィック ログからメッセージ レスポンダーが作成されない場合、リクエスト メッセージ テンプレートは空になります。この場合、ツリー ビューまたはリテラル ビューでリクエスト メッセージ テンプレートを手動で変更できます (たとえば、構成中のレスポンス メッセージに対応するサンプル リクエスト メッセージにコピーするなど)。
  • 完成したリクエスト メッセージ テンプレートは、メッセージ レスポンダーから利用可能な [XPath 関数の編集] ダイアログでツリー/リテラル/エレメント ビューにデータ投入するために使用されます。リクエスト出力としてメッセージ レスポンダーにアタッチされる場合、XML Data Bank および XML Transformer の出力もリクエスト メッセージ テンプレートを使用します。

メッセージ交換パターン

レスポンスを求めるか、通知のみかを選択します。

  • [レスポンスを求める] がデフォルト オプションです。レスポンス メッセージ ボディが返されることを指定します。
  • [通知のみ] は、リクエスト メッセージが単に認識されることを指定します。HTTP の場合、レスポンスはボディ コンテンツのない HTTP ヘッダーに過ぎません。JMS または WebSphere MQ の場合、着信リクエスト メッセージはリクエスト キューからピックアップされますが、レスポンス メッセージはレスポンスに生成されません。

リターン ステータス (HTTP のみ)

メッセージを返す方法を指定します。たとえば、正常に実行されているサービスやエラーがあるメッセージをエミュレートするために使用します。デフォルト値の 200 OK を使用する場合、[デフォルトのリターン ステータスを使用] チェック ボックスをオンにします。このオプションがオフの場合、以下のオプションを使用できます。

  • リターン ステータス: カスタム ステータス値を入力します。データ ソースが利用可能な場合、この値をパラメータライズすることもできます。
  • リターン メッセージ: カスタム リターン メッセージを入力します。データ ソースが利用可能な場合、この値をパラメータライズすることもできます。

リクエストの処理

これらのオプションは、応答条件が適用される前に着信リクエストを変更できるかどうか (およびその方法) を決定します。

データ ソースや複数レスポンスの応答条件がメッセージに適用される前に、リクエスト メッセージを変更するツールを連結したい場合は、[データ ソースまたは複数の応答条件を適用する前に、受信リクエスト ツールがメッセージを変更できるようにする] を選択します。しかし、リクエストを変更するかもしれないツールを連結しているが、データ ソースや複数レスポンスの応答条件に渡されるメッセージにそのような変更による影響がないようにしたい場合、このオプションはオフにしておきます。このことは、応答条件に適するように XML を変更する必要がある場合、あるいはメッセージが XML ではなく、仮想アセットが呼び出し元にリクエストに適したレスポンスを送信する前に変換が必要である場合に重要です。 

着信メッセージがデータ ソース列に正常に関連付けられなかった場合に、連結されたリクエスト ツールの実行を防止したい場合、[データ ソース応答条件が失敗した場合、受信リクエスト ツールをスキップ] を選択します。 

XML に変換されるメッセージ形式には [XML Conversion] オプションが利用可能です。

  • [レスポンダーの関連付けを適用する前に受信リクエストを XML に変換する] は、応答条件が適用される前に XML 変換が必ず行われます。このオプションがオンの場合、応答条件は変換された XML に基づくようになります。

    メッセージ モデルへの影響

    [レスポンダーの関連付けを適用する前に受信リクエストを XML に変換する] オプションがオンの場合、サンプルのネイティブ形式 トラフィックをリテラル タブに貼り付けることができます ([レスポンダー応答条件] および [データ ソース応答条件] コントロールの XPath エリアおよびリクエスト メッセージ テンプレート)。すると、ツリー/要素タブにはそのメッセージ形式のために指定された構造を使用してメッセージが表示されます。たとえば、JSON レスポンダーのリテラル タブに JSON メッセージを貼り付けた場合、ツリー タブを開くと、メッセージはフォームの JSON 構造で表示されます。

    ツリーおよび要素タブでリテラルなネイティブフォーマット メッセージを別のメッセージ形式で表示したい場合、[レスポンダーの関連付けを適用する前に受信リクエストを XML に変換する] オプションをオンにしてメッセージ形式を指定します。 

  • [レスポンスと異なるメッセージ形式を使って受信リクエストを XML に変換する] は、メッセージ レスポンダーがレスポンス用に構成されたものと異なるフォーマットでメッセージを受信するように構成できます。たとえば、 EDI メッセージを受信して固定長メッセージで応答したい場合、 Fixed Length Message Responder を作成して着信リクエストを EDI に変換するように構成します。



パフォーマンス

メッセージ レスポンダーの実行時間に関する次のオプションを設定できます。

  • パフォーマンス グループ: パフォーマンス プロファイルを使用している場合、ここでレスポンダーのパフォーマンス グループの設定や変更ができます。パフォーマンス プロファイルについての詳細は、「パフォーマンス プロファイルの使用」を参照してください。
  • 思考時間: エミュレートしたいメッセージ遅延の時間 (ミリ秒) を入力します。この時間は次の時間に追加されます。 a) 「サーバーがリクエストの受信を完了した時間からレスポンスの送信が開始するまでの時 間」から計算される実行時間。および、 b) パフォーマンス プロファイルを介して指定された追加時間 (「パフォーマンス プロファイルの使用」を参照)。また、データ ソースが利用できる場合は、この値をパラメータライズすることが可能です。

スタイル/使用

これらのオプションを使用すると、メッセージのボディ スタイルおよびエンコーディングを選択できます。

  • ボディ スタイル: document または rpc のいずれかを選択します。
  • 使用: encoded または literal のいずれかを選択します。
  • エンコーディング スタイル URI: リクエスト送信に使用されるエンコーディング スタイル URI を表示します。利用可能な場合は自動で入力されます。
  • ターゲット オブジェクト URI: ターゲット オブジェクト URI を指定します。

添付ファイルのカプセル化フォーマット:

カプセル化フォーマットをデフォルトかカスタムか指定します。[デフォルト] オプションは、設定パネルで添付ファイルのカプセル化フォーマットとして選択されたものを指定します。[カスタム] オプションは、 MIME、 DIME、 MTOM Always、あるいは MTOM Optional を選択できます。詳細については、「添付ファイルの処理」を参照してください。

SOAP バージョン

SOAP 1.1 または 1.2 のどちらを使用するかを指定します。

ISO 8583 パッケージ

ISO 8583 のパッケージャー ファイルを構成できます。詳細については、「ISO 8583 メッセージ パッケージャーの構成」を参照してください。このオプションは特に SOAP Message Responder と プレーン XML Message Responder のために設計されています。

送信メッセージのエンコード

このオプションを使用すると、リクエスト メッセージとは異なるエンコーディングを送信メッセージに指定することができます。

エンコーディング オプションをアクティブにするには、[リクエストと異なるエンコーディングを使用する] オプションを有効化します。エンコーディング オプションがアクティブな場合、ドロップダウン メニューから [カスタム] を選択してエンコーディング オプションを指定できます。[デフォルト] を選択して、レスポンダー スイートで設定されたエンコーディングを使用することも可能です。

[変換オプション] タブ

[オプション] タブではメッセージの処理方法を構成できます。これらのオプションは XML に変換されるメッセージ形式にだけ使用可能であり、使用可能なオプションはフォーマットごとに異なります。特定のツールの変換オプションに関する詳細は、関連トピックを参照してください。

レスポンスのために既存のデータ ソースを使用またはデータ ソースをすばやく作成

データ ソースにレスポンス値を定義すると、大量のリクエスト/レスポンスのペアを効率的に追加できます。

既存のデータ ソースの使用

リクエスト パラメーターおよび対応するレスポンス パラメーターの値が定義されたデータ ソースが既に存在する場合、次の操作を行って、それらの値を使用できます。

  1. データ ソースを追加します (「Virtualize のデータ ソース使用方法」を参照)。
  2. 適切なリクエスト列でメッセージ レスポンダーのデータ ソース マッピングを構成します (詳細については、「Data Source Correlation Tab」を参照してください)。

レスポンス XML用のデータ ソースの自動生成

使用可能なデータ ソースがまだ存在していないが、複数のリクエスト/レスポンスのセットをすばやく指定したい場合、次の操作を行います。

  1. メッセージ要素にデータ投入するためのデータ ソース テンプレートの生成」の手順に従って、メッセージ レスポンダー ツールの [フォーム入力] ビューから CSV ファイルを作成します。データ ソースが生成され、レスポンダー スイートに追加されます。この生成されたデータ ソースには、レスポンスの列が含まれています。Message Responder ツールの [フォーム入力] ビューは自動的にパラメータライズされます。
  2. レスポンスを決定するために使用する必要があるリクエスト パラメーターの分だけデータ ソースに新しい列を追加します (Excel、OpenOffice などのスプレッドシート アプリケーションを使用して)。ワイルドカードを使用できます。
  3. 追加した新しいリクエスト列を使用して Message Responder のデータ ソース マッピングを構成します。詳細については、「Data Source Correlation Tab」 を参照してください。
  4. データ ソースに新しい行を追加し (Excel、OpenOffice などのスプレッドシート アプリケーションを使用)、リクエスト パラメーターおよび対応するレスポンス パラメーターに値を指定します 。

着信リクエストに基づいて値をスクリプト化

スクリプトを使用して、受信リクエストに基づいてレスポンスの値を記述できます。そのため、仮想アセットでより複雑なロジックを可能にします。さらに、メッセージ レスポンダーはスクリプトを通してデータ ソース値にアクセスすることを可能にします。データ ソースの値へのアクセス方法は、Extension ツールからアクセスする場合と似ています。

スクリプト化したロジックをメッセージ レスポンダー ツールで使用するには、次の操作を行います。

  1. メッセージ レスポンダー ツールの [WSDL URL] フィールドに WSDL を入力します。
  2. メッセージ レスポンダーのノードを右クリックし、 [出力の追加] を選択します。[出力の追加] ウィザードが表示されます。
  3. [出力の追加] ウィザードで、左ペインから [受信リクエスト] を選択し、右ペインから [XML Data Bank] を選択して [終了] をクリックします。
  4. メッセージ レスポンダー ノードの下の [受信リクエスト] > [XML Data Bank] ノードをダブルクリックします。GUI 右側のパネルに XML Data Bank ツールの構成パネルが表示されます。
  5. GUI 右側のパネルで、スクリプトからアクセスする値の XPath を追加します。



  6. メッセージ レスポンダーのノードをダブルクリックします。メッセージ レスポンダーのコンフィギュレーション パネルが右側の GUI パネルに表示されます。
  7. [レスポンス] タブで [スクリプト] ビューを選択します。
  8. ロジックを入力します。次のコードは、データ ソースおよびデータ バンクの値にアクセスするための基本的なテンプレートです。

    def customLogic(context):
        # Retrieve the data source value. "Data Source Name" should be replaced
        # with the name of your data source and "Column Name" should be the column
        # that your value is coming from. You can access many columns from the same
        # data source within this script. For Data Bank values, the table is always
        # named "Generated Data Source" so you only need to replace "Data Bank Column Name"
        dataSourceValue = context.getValue("Data Source Name", "Column Name")
        dataBankValue = context.getValue("Generated Data Source", "Data Bank Column Name")
        # add custom logic that uses value from data source
     
    # The following method tells what data source you will be using in this script. 
    # "Data Source Name" should be replaced with the name of your data source
    def addDataSources(context):
        return "Data Source Name"


  9. [メソッド] コンボ ボックスから適切なメソッドを選択します。選択するメソッドは、エントリ ポイントでなければなりません。上記の例では、 customLogic() メソッドを選択します。

メッセージ レスポンダーに Attachment Handler を追加

必要に応じて、受信したすべての MIME 添付ファイルを管理するためにメッセージ レスポンダーに Attachment Handler を追加できます。メッセージ レスポンダーに Attachment Handler を追加するには、次の操作を行います。

  1. メッセージ レスポンダーのノードを選択し、[レスポンダーまたは出力の追加] ボタンをクリックします。[出力の追加] ウィザードが表示されます。
  2. [出力の追加] ウィザードの左側のペインで [受信リクエスト] を選択し、右側のペインで [Attachment Handler] を選択して [終了] をクリックします。
  3. Attachment Handler ノードをダブルクリックし、ツール構成パネルでツールの構成を行います。
  4. (任意) メッセージ レスポンダー ノードの下にある Attachment Handler ノードを選択し、[レスポンダーまたは出力の追加] ボタンをクリックします。[出力の追加] ウィザードが表示されたら、添付ファイルをバイナリ ファイルとして書き出すために Write File ツールを追加できます。

任意のエンドポイントにメッセージを転送

Message Forward ツールは、任意のエンドポイント (例: 実際のリソースなど) にメッセージを転送できるツールであり、メッセージ レスポンダー ツールに連結できます。エンド ポイントから返される応答は、メッセージ レスポンダーから返された応答として使用されます。

詳細については「Message Forward」を参照してください。

仮想データベースの値の更新

SQL Responder Action ツールは、 メッセージ レスポンダーが CSV 駆動型の SQL Responder に代表される仮想データベースの値を更新することを可能にします。

詳細については「SQL Responder Action」を参照してください。

レスポンダーの着信リクエストまたは送信レスポンスにツールを連結

メッセージ レスポンダーの着信リクエストや送信レスポンスにツールを連結できます。

  1. ツールを追加したい、仮想アセット エクスプローラーのノードを右クリックします。
  2. [出力の追加] を選択します。
  3. 左ペインで任意の出力タイプを選択し、右ペインでツールを選択します。

XML に変換されたペイロード

注意: カスタム レスポンダーまたは EDI/CSV/固定長レスポンダーを使用している場合、ペイロードが XML に変換されるツール (着信リクエスト)、またはペイロードが XML としてモデル化されるツール (送信レスポンス) を連結するオプションがあります。これは、ネイティブ形式のペイロードにツールを追加する、標準のペイロード オプションに追加されます。


実行順序

連結されたツールは以下の順序で実行されます。

  1. 着信リクエスト
    1. トランスポート ヘッダー
    2. ペイロード
    3. XML に変換されたペイロード
    4. 添付ファイル
  2. 送信レスポンス
    1. トランスポート ヘッダー
    2. XML としてモデル化されたペイロード
    3. ペイロード
  3. 両方 > トラフィック オブジェクト
  4. 転送 > トラフィック

たとえば、次の目的でツールを連結することが考えられます。


目的手段

レスポンダーがデータベースの更新アクションのトリガーとなる

例: リレーショナル データベースに行を更新/削除/追加する、あるいは SELECT クエリーを実行する

メッセージ レスポンダーの着信リクエストに DB Tool を連結する。 

また、リレーショナル データベースから取得した値でレスポンスにデータ投入するために、 DB Tool の XML 出力に XML Data Bank を連結し、レスポンダーの出力でこれらのデータ バンクの値を参照できる。

データベースのデータがレスポンス メッセージを手動で構成する  

例: 任意の XML レスポンス フォーマットを生成するために、戻されたレコードを順に処理する

メッセージ レスポンダーの送信レスポンスに DB Tool を連結し、 XML Transformer、XSLT Tool、または Extension Tool を連結する。これらのツールの出力は、メッセージ レスポンダーのエディターの [レスポンス] タブで構成されたコンテンツを置き換える。このことは、メッセージを手動で構成することに柔軟性を提供する。 

データベースから特定の値を使用したい場合は、上記のように着信メッセージに DB Tool を連結する。

レスポンダーが別のサービスを呼び出すメッセージ レスポンダーの着信リクエストに SOAP Client または Messaging Client を連結する。メッセージ レスポンダーの送信レスポンスに SOAP Client や Messaging Client を連結することはサポートされていない。
レスポンダーが別のサービスを呼び出し、その出力の一部をレスポンス パラメーターに投入するために使用する

メッセージ レスポンダーの着信リクエストに SOAP/Messaging Client を連結し、クライアントのレスポンスに Data Bank を連結する。これらのデータ バンクの値は、動的なレスポンス メッセージを構築するためにメッセージ レスポンダーの [フォーム入力] や [フォーム XML] ビューで参照される。  

レスポンダーで受信したリクエストから抽出したパラメーターでそのサービスを呼び出す必要がある場合、レスポンダーの着信リクエストに XML Data Bank を連結し、レスポンダーの着信リクエストに SOAP/Messaging Client を連結し、リクエストから抽出したデータ バンク値でリクエストをパラメータライズする。ここでは順番に注意すること。データ バンクはクライアントがその値を使用できるように、クライアントの前に設置する必要がある。

MQ 文字セットの処理

Virtualize は送信 (レスポンス) MQ メッセージの characterSet フィールドを着信 (リクエスト) MQ メッセージと同じ値に設定します。

XML, CSV、固定長、またはプレーン テキストなどの文字データでレスポンスを送信するときは、「フォーマット」である MQ ヘッダー タイプを MQFMT_STRING 定数の値、すなわち 「MQSTR」に設定する必要があります。このフォーマット ヘッダーはメッセージ レスポンダーの [トランスポート ヘッダー] タブで構成されるべきです (MQ ヘッダー テーブルで formatMQSTR に設定してエントリを追加します)。



レスポンス メッセージは MQ "characterSet" ヘッダー フィールドに基づいてエンコードされます。  デフォルトでは、 Virtualize は送信 (レスポンス) メッセージの characterSet フィールドを着信 (リクエスト) MQ メッセージと同じ値に自動的に設定します。しかし、この文字セットはメッセージ レスポンダーの [トランスポート ヘッダー] タブに "characterSet" ヘッダーを追加することで明示的に構成することも可能です。  

値はサポートされているコード化文字セット識別コード (CCSID) の値の 1 つです。 

  • 850  - ASCII
  • 819  - ISO standard ASCII
  • 37   - American EBCDIC
  • 1200 - Unicode
  • 1208 - UTF-8


  • No labels