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

このセクションの内容:

概要

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

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

メッセージ レスポンダーが着信リクエストに関連する応答メッセージを送信するのに対し、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 から変換されるフォーマットにだけ使用可能です。

メッセージ タイプ:

[定義] タブ

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

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

[レスポンス] タブ

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

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

入力モードとビュー

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

注意

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

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

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

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

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

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

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

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

トランスポート応答条件

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

  1. [応答条件の有効化] を有効にします。
  2. [追加] をクリックします。新しいエントリ行が表示されます。
  3. [ヘッダー名] を入力します。
  4. 次のいずれかを実施します。

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

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

  1. [応答条件の有効化] を有効にします。
  2. [編集] をクリックします。[XPath 関数の編集] ダイアログが表示されます。
  3. 要素ツリーから要素を選択し、[関数] メニューから関数を選択して [OK] をクリックします。
  4. 次のいずれかを実施します。デフォルトでは、XPath のフィールドと値は大文字と小文字を区別しますが、Virtualize の起動時に適切なシステム プロパティを指定することにより、大文字と小文字の区別を変更できます。詳細については「大文字と小文字の区別」を参照してください。
  5. さらに XPath を指定したい場合は同様に追加します。

URL パラメーター応答条件

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

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

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

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

パラメーター名
param1value1
param2value2

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

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

URL パス応答条件

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

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

  1. [応答条件の有効化] を有効にします。
  2. 応答条件に使用したいパスを指定します。

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

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

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

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

例 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またはスクリプト言語で書かれたカスタム メソッドの戻り値に基づいています。 

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

より詳しい情報については、[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 タイプに基づいたオブジェクトを返します。

たとえば、添付ファイル (ここでは "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 はデータソース応答条件に基づいてデータソースでデータ ルックアップを実行し、データ行を見つけます。この行は、データ ソースからパラメータライズした値をレスポンス ([レスポンス] タブに定義されたように) に投入するために使用されます。

たとえば、下の図では、受信メッセージの 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 など) に簡単に入力できます。各行は、仮想アセットに応答させる着信メッセージ内の値 (通常はただのリーフ ノード値) です。別の列では、指定の条件に一致したときに仮想アセットにどのように応答させるかを指定します (詳細については、 「Using Existing Data Sources or Rapidly Creating Data Sources for Responses」 を参照)。その後、リクエスト メッセージおよびレスポンス メッセージの値とデータ ソースの列のマッピングを構成します。  

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

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

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

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

構成手順

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

  1. Message Responder で使用するデータ ソースが Virtualize に存在していることを確認します。
  2. [データ ソース応答条件] タブの適切な場所で [追加] をクリックし、 XPath、 URL パラメーター、あるいは条件式を入力し、適切な列名を選択します。デプロイされた仮想アセットが実行されるとき、 Virtualize はリクエストから指定の値を抽出し、抽出された値に対応する列名を検索します。一致するデータが見つかった場合、該当するデータ ソース行のデータを使用してレスポンスに値が設定されます。
  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 パスに対するデータ ソース応答条件にも当てはまります。リクエスト中のフィールドの欠如に一致させるために、データ ソース行の対応するフィールドの値として空文字列を使用できます。

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

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

リクエスト URL パス

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

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

[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

リクエスト ヘッダー

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

処理の詳細

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

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

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

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

[添付ファイル] タブ

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

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

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

  1. [追加] をクリックします。[アタッチメント テーブル] に XML アタッチメント エントリが追加されます。
  2. XML アタッチメント エントリをダブルクリックします。[添付ファイルの編集] ダイアログが開きます。
  3. [添付ファイルの編集] ダイアログで、 [モード] から XML または バイナリを選択します。
  4. 添付ファイルを構成します。

[オプション] タブ

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

リクエスト テンプレート

リクエスト日

リクエスト日テンプレートは、リクエスト メッセージ テンプレートまたはリクエスト URL テンプレートに日付が存在しない場合など、一致が見つからない場合にインライン式を生成するときに日付のオフセットを計算するために使用されます。現在の日付/時刻を使用するには、メニューから [現在の日付/時刻] を選択します。日時を指定するには、フィールドに入力します。空白のままにすると、オフセットは計算されません。

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

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

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

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

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

メッセージ交換パターン

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

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

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

リクエストの処理

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

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

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

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

パフォーマンス

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

スタイル/使用

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

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

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

SOAP バージョン

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

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

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

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

[変換オプション] タブ

[オプション] タブではメッセージの処理方法を構成できます。これらのオプションは 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 つです。