このセクションでは、着信するリクエスト メッセージに関連したレスポンス メッセージを送信する、さまざまなメッセージ レスポンダー ツールの構成方法について説明します。メッセージ レスポンダーは、実際の振る舞いをキャプチャするトラフィック ファイルから作成したり、 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 から変換されるフォーマットにだけ使用可能です。
メッセージ タイプ:
このタブは 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 つのタイプの応答条件を指定することも、複数のタイプの応答条件を指定することも、あるいは応答条件を指定しないこともできます。応答条件が指定されていない場合、メッセージ内のすべてが処理されます。
トランスポート応答条件を構成するには、次の操作を行います。
リクエスト ボディ応答条件を構成するには、次の操作を行います。
URL パラメーター応答条件は HTTP/HTTPS 上でアクセスされる仮想アセットに適用します。
URL パラメーター応答条件を構成するには、次の操作を行います。
たとえば、仮想アセットが http://myvirtserver:9080/MyAsset/MyPath
というパスにデプロイされ、レスポンダーで次の URL パラメーターが指定されると仮定します。
パラメーター名 | 値 |
---|---|
param1 | value1 |
param2 | value2 |
次のリクエスト URL はこの応答条件に一致します。
次の URL はこのレスポンダーにマッピングされません。
URL パス応答条件は HTTP/HTTPS 上でアクセスされる仮想アセットに適用します。注意: Virtualize 9.7 から一致方法が変わりました。既存の仮想アセットは、現在のパラダイムを使用するために、変更時に自動的に再構成されます。
URL パス応答条件を構成するには、次の操作を行います。
たとえば、仮想アセットが http://myvirtserver:9080/MyAsset/MyPath
というパスにデプロイされ、 /segment1/segment2/**
というパスがレスポンダー応答条件で指定されると仮定します。
次の URL はこの応答条件に一致します。
次の URL はこの応答条件に一致しません。
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/foo/bar/Entries |
例 2: org/parasoft/virtualize/**
一致する | 一致しない |
---|---|
org/parasoft/virtualize/tools/service | org/parasoft/somethingelse |
例 3: org/parasoft/**/EM/*
一致する | 一致しない |
---|---|
org/parasoft/EM/Entries | org/parasoft/EM/foo/bar/Entries |
HTTP メソッド応答条件は HTTP/HTTPS 上でアクセスされる仮想アセットに適用します。
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 メッセージの要素を使用したい場合、次のように記述できます。
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 メソッドに応答したい場合は、次のように記述できます。
from com.parasoft.api import * def correlateHTTPMethod(context): method = context.get(CorrelationScriptingHookConstants.REQUEST_METHOD) return "GET" == method |
カスタム レスポンダー応答条件で添付ファイルにアクセスするには、CorrelationScriptingHookConstants.ATTACHMENTS
キーを使用してすべての添付ファイルのリストを取得します。返却される attachment インターフェイスには単一のメソッド getContents があり、添付ファイルの MIME タイプに基づいたオブジェクトを返します。
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 はデータソース応答条件に基づいてデータソースでデータ ルックアップを実行し、データ行を見つけます。この行は、データ ソースからパラメータライズした値をレスポンス ([レスポンス] タブに定義されたように) に投入するために使用されます。
たとえば、下の図では、受信メッセージの loanAmount 値と ApprovalLists データ ソースの Amount 列の間に応答条件が設定されています。
それぞれの着信リクエストでは、 loanAmount 値が Amount 列の行のひとつに一致させられます。その後、レスポンスは同じ行の他の列の値でパラメータライズされます。
[レスポンス] タブに次の設定をすることで、承認された値が Decision データソース列の関連する値でパラメータライズされます。
そしてメッセージの値が Message データソース列の関連する値でパラメータライズされます。
デフォルトでは、データソース応答条件で使用される値では大文字と小文字が区別されますが、データソース応答条件のさまざまな面で大文字と小文字を区別しないモードで Virtualize を開始できます。コマンドラインから Virtualize を起動し、次のシステム プロパティの 1 つまたはすべてを含めます。
parasoft.correlation.value.case.insensitive | このプロパティは、データ リポジトリ データ セット キー値について、大文字/小文字の区別を変更します。トラフィックから新しく作成されたアセットの値にのみ影響します。 利用できる値:
例:
|
parasoft.correlation.field.name.case.insensitive | このプロパティは、レスポンダー応答条件とデータソース応答条件のリクエスト本文フィールド名について、大文字/小文字の区別を変更します。 利用できる値:
例:
|
parasoft.correlation.url.path.case.insensitive | このプロパティは、リクエスト URL パスについて、大文字/小文字の区別を変更します。このプロパティは、アセットのデプロイメント パス、プロキシ リスン パス、およびレスポンダー URL パスの応答条件に影響します。 利用できる値:
例:
|
[複数レスポンス] モードで仮想アセットを構成する方法の 1 つは、着信メッセージの性質に基づいて、メッセージ レスポンダー ツールが異なるレスポンス メッセージを送信するように手動で構成することです。
もう 1 つの方法は、データ ソースを使用して仮想アセットが任意のメッセージで動的に応答するように構成することです。データ ソース テーブル (Excel など) に簡単に入力できます。各行は、仮想アセットに応答させる着信メッセージ内の値 (通常はただのリーフ ノード値) です。別の列では、指定の条件に一致したときに仮想アセットにどのように応答させるかを指定します (詳細については、 「Using Existing Data Sources or Rapidly Creating Data Sources for Responses」 を参照)。その後、リクエスト メッセージおよびレスポンス メッセージの値とデータ ソースの列のマッピングを構成します。
これによって、編集しやすい表 (データ ソース) で簡単にリクエスト/レスポンスのユース ケースを構成でき、メッセージの数が増えたときにも対応可能な方法で管理することができ、またより柔軟にレスポンス メッセージを処理できます (なぜなら、フォーム入力では一部の値を固定し、他の値をパラメーターライズし、自動の値やスクリプト化された値も使用することができるからです)。
データ ソース応答条件は、非常に柔軟です。単なる比較/応答条件を超えたルールやロジックを使用して受信リクエスト値に応答する仮想アセットを構成できます。たとえば、クレジット カード番号の下 4 桁を評価したり、数値が特定の値未満または特定の値を超えるかを評価したり、その他のパターンや式を評価できます。
値の比較はワイルドカード *
および ? をサポートしています。*
はゼロ個以上の文字に一致し、?
は 1 個の文字に一致します。
たとえば、"title keyword" という受信値に Linux という単語が含まれている場合にデータ ソースの行と一致させたい場合、データ ソースの値として "[like *Linux]" を指定できます。
データ ソースの値で仮想アセット レスポンスをパラメータライズするには、次の操作を行います。
[> "55"]、 [like "alpha?beta*"]、 [like "*b*" or like "*a*" and like "*z*"]
) を使用できます。詳細については、「メッセージ レスポンダーで値を照合するための条件式」を参照してください。データ ソース応答条件では以下の構成オプションが利用可能です。
データソース応答条件が有効な場合、Virtualize はこのタブで指定された条件を使用して、着信メッセージの値をデータ ソースの値と照合しようとします。特定の着信メッセージの値に一致するデータ ソース行がない場合、これは 「データ ソース応答条件の失敗」と見なされます。
[データ ソース応答条件が失敗した場合、一致するレスポンダーの検索を続行する] が有効 (デフォルト設定) であり、このレスポンダーについてデータ ソース応答条件が失敗する場合、Virtualize は一致するレスポンダー応答条件があるレスポンダーの検索をレスポンダー スイートに対して続行します。以下の場合にだけエラーが レポートされます:
[データ ソース応答条件が失敗した場合、一致するレスポンダーの検索を続行する] が無効であり、このレスポンダーに対するデータ ソース応答条件が失敗する場合、直ちにエラーがレポートされ、Virtualize は一致するレスポンダーの検索を停止します。
リクエスターにエラーが返されるとき、エラー イベントは [イベント詳細] ビューにも記録されます (仮想アセットのモニタリングが有効になっている場合。詳細は 「サーバーイベントの可視化」を参照してください)。
ここでは、1 つ以上の値を抽出するために、着信メッセージで実行する XPath を 1 つ以上指定できます。抽出された値は、マッピングされたデータ ソース列の値とマッチングされます。
このエリアは、 HTTP/HTTPS 上でアクセスされる仮想アセットに適用します。リクエスト URL 内で検索する 1 つ以上の URL パラメーターを指定します。パラメーター値はマッピングされたデータ ソース列の値とマッチングされます。
応答条件のために複数の列が使用される場合、同じ行における各列の値は、すべてデコードまたはエンコードされなければなりません。すべての値がエンコードされる場合、それらの値はすべて同じ方法でエンコードされなければなりません。スペースにはプラス記号または “%20” を使用します。両方を使用することはできません。
たとえば、以下は許されます:
Borrower 1 | Borrower 2 |
---|---|
John Smith | Jane Doe |
John+Smith | Jane+Doe |
John%20Smith | Jane%20Doe |
この場合、Virtualize はクエリー文字列 Borrower1=John+Smith&Borrower2=Jane+Doe または URL エンコーディング中の他のバリエーションを着信リクエストと対応させることができます。
以下は許可されません:
Borrower 1 | Borrower 2 |
---|---|
John Smith | Jane+Doe |
John+Smith | Jane%20Doe |
John%20Smith | Jane Doe |
データ ソース応答条件は、リクエスト中のフィールドの欠如に対応できます。たとえば、リクエスト ボディの XML 要素のテキスト値に対してデータソース応答条件が設定されたレスポンダーがあるものとします。ただしこの XML 要素の使用は任意です。同じデータ ソースを使って、フィールドがない場合に、パラメータライズされた値を使ってレスポンスにデータ投入することができます。それには、データ ソース行の対応するフィールドの値を空文字列として設定します。XPath 関数のプロパティのため、空文字列は XML 要素がない状況および XML 要素が空の状況に一致します。これは、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 1 | Borrower 2 |
---|---|
John Smith | Jane Doe |
John+Smith | Jane+Doe |
John%20Smith | Jane%20Doe |
この場合、Virtualize はクエリー文字列 Borrower1=John+Smith&Borrower2=Jane+Doe または URL エンコーディング中の他のバリエーションを着信リクエストと対応させることができます。
以下は許可されません:
Borrower 1 | Borrower 2 |
---|---|
John Smith | Jane+Doe |
John+Smith | Jane%20Doe |
John%20Smith | Jane Doe |
抽出してマッチングしたいリクエスト値のヘッダーを指定し、それぞれをデータ ソース列にマッチングします。抽出された値は、マッピングされたデータ ソース列の値とマッチングされます。
メッセージ レスポンダーがアクティブであるとき、これらの XPath 式/URL パラメーターを通して着信メッセージが評価されます。値と対応するデータ ソース値 (それぞれに対応する列) が比較され、値が一致する行が検索されます。
データ ソースの行は、その行に対するメッセージ レスポンダーのデータ ソース応答条件リストで指定されたすべての値が一致したら、一致したと見なされます。
一致する行が見つかった場合、その行はメッセージ レスポンダーのレスポンス メッセージでパラメータライズした値に使用されます。そうすることで、仮想アセットは着信メッセージの値に基づいた任意のメッセージ値で応答できます。
処理の詳細については「メッセージ レスポンダーで値を照合するための条件式」を参照してください。
[添付ファイル] タブでは、レスポンス メッセージにバイナリまたは XML の HTTP 添付ファイルのいずれかを送信できます。
MTOM を使用しているときは、[添付ファイル] タブに何も追加する必要はありません。MTOM オプションを使用すると、最適化された (エンコードされていない) SOAP エンベロープに xsd:base64Binary コンテンツで自動的に MIME_boundary が作成されます。[添付ファイル] タブは MIME/DIME オプションにだけ適用します。
アタッチメントを送信するには、次の操作を行います。
[オプション] タブではメッセージの処理方法を構成できます。次のオプションが利用可能です。
リクエスト日テンプレートは、リクエスト メッセージ テンプレートまたはリクエスト URL テンプレートに日付が存在しない場合など、一致が見つからない場合にインライン式を生成するときに日付のオフセットを計算するために使用されます。現在の日付/時刻を使用するには、メニューから [現在の日付/時刻] を選択します。日時を指定するには、フィールドに入力します。空白のままにすると、オフセットは計算されません。
テスト対象アプリケーションが対応する (そしてレスポンダーがシミュレートすべき) URL に特有のまたはそれを代表する URL を入力します。パラメータライズされたトラフィック ウィザード ( パラメータライズされたメッセージ レスポンダーのトラフィックからの作成で説明) からレスポンスを作成する場合、このフィールドには、レスポンダーに対応するトラフィック中のいずれかのリクエストの URL が設定されています。
ここで指定された値は、[レスポンダー応答条件] タブと [データ ソース応答条件] タブの両方で、URL パスおよび URL パラメーターの応答条件を設定するために使用されます。
XPath パラメーターを生成するときに (たとえばデータ ソース応答条件およびレスポンダー応答条件のメッセージ リクエスト XPath ダイアログや複数レスポンス XPath ダイアログで)、期待される XML レスポンスに自動的にデータ投入するために使用される XML 形式のテンプレートを指定できます。
レスポンスを求めるか、通知のみかを選択します。
メッセージを返す方法を指定します。たとえば、正常に実行されているサービスやエラーがあるメッセージをエミュレートするために使用します。デフォルト値の 200 OK を使用する場合、[デフォルトのリターン ステータスを使用] チェック ボックスをオンにします。このオプションがオフの場合、以下のオプションを使用できます。
これらのオプションは、応答条件が適用される前に着信リクエストを変更できるかどうか (およびその方法) を決定します。
データ ソースや複数レスポンスの応答条件がメッセージに適用される前に、リクエスト メッセージを変更するツールを連結したい場合は、[データ ソースまたは複数の応答条件を適用する前に、受信リクエスト ツールがメッセージを変更できるようにする] を選択します。しかし、リクエストを変更するかもしれないツールを連結しているが、データ ソースや複数レスポンスの応答条件に渡されるメッセージにそのような変更による影響がないようにしたい場合、このオプションはオフにしておきます。このことは、応答条件に適するように XML を変更する必要がある場合、あるいはメッセージが XML ではなく、仮想アセットが呼び出し元にリクエストに適したレスポンスを送信する前に変換が必要である場合に重要です。
着信メッセージがデータ ソース列に正常に関連付けられなかった場合に、連結されたリクエスト ツールの実行を防止したい場合、[データ ソース応答条件が失敗した場合、受信リクエスト ツールをスキップ] を選択します。
XML に変換されるメッセージ形式には [XML Conversion] オプションが利用可能です。
[レスポンダーの関連付けを適用する前に受信リクエストを XML に変換する] は、応答条件が適用される前に XML 変換が必ず行われます。このオプションがオンの場合、応答条件は変換された XML に基づくようになります。
[レスポンダーの関連付けを適用する前に受信リクエストを XML に変換する] オプションがオンの場合、サンプルのネイティブ形式 トラフィックをリテラル タブに貼り付けることができます ([レスポンダー応答条件] および [データ ソース応答条件] コントロールの XPath エリアおよびリクエスト メッセージ テンプレート)。すると、ツリー/要素タブにはそのメッセージ形式のために指定された構造を使用してメッセージが表示されます。たとえば、JSON レスポンダーのリテラル タブに JSON メッセージを貼り付けた場合、ツリー タブを開くと、メッセージはフォームの JSON 構造で表示されます。 ツリーおよび要素タブでリテラルなネイティブフォーマット メッセージを別のメッセージ形式で表示したい場合、[レスポンダーの関連付けを適用する前に受信リクエストを XML に変換する] オプションをオンにしてメッセージ形式を指定します。 |
メッセージ レスポンダーの実行時間に関する次のオプションを設定できます。
これらのオプションを使用すると、メッセージのボディ スタイルおよびエンコーディングを選択できます。
カプセル化フォーマットをデフォルトかカスタムか指定します。[デフォルト] オプションは、設定パネルで添付ファイルのカプセル化フォーマットとして選択されたものを指定します。[カスタム] オプションは、 MIME、 DIME、 MTOM Always、あるいは MTOM Optional を選択できます。詳細については、「添付ファイルの処理」を参照してください。
SOAP 1.1 または 1.2 のどちらを使用するかを指定します。
このオプションを使用すると、リクエスト メッセージとは異なるエンコーディングを送信メッセージに指定することができます。
エンコーディング オプションをアクティブにするには、[リクエストと異なるエンコーディングを使用する] を有効化します。エンコーディング オプションがアクティブな場合、メニューから [カスタム] を選択してエンコーディング オプションを指定できます。[デフォルト] を選択して、レスポンダー スイートで設定されたエンコーディングを使用することも可能です。
[オプション] タブではメッセージの処理方法を構成できます。これらのオプションは XML に変換されるメッセージ形式にだけ使用可能であり、使用可能なオプションはフォーマットごとに異なります。特定のツールの変換オプションに関する詳細は、関連トピックを参照してください。
データ ソースにレスポンス値を定義すると、大量のリクエスト/レスポンスのペアを効率的に追加できます。
リクエスト パラメーターおよび対応するレスポンス パラメーターの値が定義されたデータ ソースが既に存在する場合、次の操作を行って、それらの値を使用できます。
使用可能なデータ ソースがまだ存在していないが、複数のリクエスト/レスポンスのセットをすばやく指定したい場合、次の操作を行います。
スクリプトを使用して、受信リクエストに基づいてレスポンスの値を記述できます。そのため、仮想アセットでより複雑なロジックを可能にします。さらに、メッセージ レスポンダーはスクリプトを通してデータ ソース値にアクセスすることを可能にします。データ ソースの値へのアクセス方法は、Extension ツールからアクセスする場合と似ています。
スクリプト化したロジックをメッセージ レスポンダー ツールで使用するには、次の操作を行います。
ロジックを入力します。次のコードは、データ ソースおよびデータ バンクの値にアクセスするための基本的なテンプレートです。
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" |
必要に応じて、受信したすべての MIME 添付ファイルを管理するためにメッセージ レスポンダーに Attachment Handler を追加できます。メッセージ レスポンダーに Attachment Handler を追加するには、次の操作を行います。
Message Forward ツールは、任意のエンドポイント (例: 実際のリソースなど) にメッセージを転送できるツールであり、メッセージ レスポンダー ツールに連結できます。エンド ポイントから返される応答は、メッセージ レスポンダーから返された応答として使用されます。
詳細については「Message Forward」を参照してください。
SQL Responder Action ツールは、 メッセージ レスポンダーが CSV 駆動型の SQL Responder に代表される仮想データベースの値を更新することを可能にします。
詳細については「SQL Responder Action」を参照してください。
メッセージ レスポンダーの着信リクエストや送信レスポンスにツールを連結できます。
注意: カスタム レスポンダーまたは EDI/CSV/固定長レスポンダーを使用している場合、ペイロードが XML に変換されるツール (着信リクエスト)、またはペイロードが XML としてモデル化されるツール (送信レスポンス) を連結するオプションがあります。これは、ネイティブ形式のペイロードにツールを追加する、標準のペイロード オプションに追加されます。
連結されたツールは以下の順序で実行されます。
たとえば、次の目的でツールを連結することが考えられます。
目的 | 手段 |
---|---|
レスポンダーがデータベースの更新アクションのトリガーとなる 例: リレーショナル データベースに行を更新/削除/追加する、あるいは 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 を連結し、リクエストから抽出したデータ バンク値でリクエストをパラメータライズする。ここでは順番に注意すること。データ バンクはクライアントがその値を使用できるように、クライアントの前に設置する必要がある。 |
Virtualize は送信 (レスポンス) MQ メッセージの characterSet フィールドを着信 (リクエスト) MQ メッセージと同じ値に設定します。
XML, CSV、固定長、またはプレーン テキストなどの文字データでレスポンスを送信するときは、「フォーマット」である MQ ヘッダー タイプを MQFMT_STRING 定数の値、すなわち 「MQSTR」に設定する必要があります。このフォーマット ヘッダーはメッセージ レスポンダーの [トランスポート ヘッダー] タブで構成されるべきです (MQ ヘッダー テーブルで format
を MQSTR
に設定してエントリを追加します)。
レスポンス メッセージは MQ "characterSet" ヘッダー フィールドに基づいてエンコードされます。デフォルトでは、 Virtualize は送信 (レスポンス) メッセージの characterSet フィールドを着信 (リクエスト) MQ メッセージと同じ値に自動的に設定します。しかし、この文字セットはメッセージ レスポンダーの [トランスポート ヘッダー] タブに "characterSet" ヘッダーを追加することで明示的に構成することも可能です。
値はサポートされているコード化文字セット識別コード (CCSID) の値の 1 つです。