このセクションでは、[パラメータライズされたメッセージを生成] トラフィック ウィザードで Virtualize がどのようにメッセージをグループ化するかについて説明します。Virtualize はメッセージごとにレスポンダーを生成するため、生成されるレスポンダーを決定するにはグループ化が重要です。  

セクションの内容:

グループ化とは

Virtualize がトラフィック解析および適用するグループ化基準は、Virtualize がメッセージをグループ化する方法に影響を与えます。推奨されるグループ化の方法は自動的に選択されますが、必要に応じて調整および上書きできます。 

トラフィックは 2 段階で解析および処理されます。

  1. まず Virtualize は、どのグループ化方法を有効にするかを推奨します。
  2. 次に、Virtualize は選択された方法を適用して、メッセージをグループに分けます。

PVA の作成時に、グループごとに 1 個のレスポンダーが生成されます。

推奨するグループ化手法は、以下の経験則に基づいて選択されます。

  • リクエスト ボディに基づいたグループ化: 以下の場合に選択されます。
    • SOAP トラフィック
    • XML ではないメッセージ形式。カスタム メッセージ形式を含む。
    • HTTP ではない traffic
  • HTTP メソッドと URL パスに基づいたグループ化: 他の場合に選択されます。ただし、提供されたトラフィックにさまざまな手法がある場合、HTTP メソッドだけが選択されます。

Virtualize は以下のようにグループ化を行います。

  • 一般的なものよりも具体的なものを優先します。Virtualize は、他のグループのメッセージには一致しない、そのグループだけの全メッセージに一致する可能な限り具体的な表現を生成します。これにより、生成されたレスポンダーが同じトラフィックに正しく関連付けられます。
  • グループ化の順序 (HTTP メソッド、URL パス、URL パラメーター、そしてリクエスト ボディの内容) に従います。たとえば、URL パスがグループ間で区別できるようなパスである場合、Virtualize はリクエストの応答条件を作成しません。これは他のグループ化条件についても同様です。

HTTP メソッドによるグループ化

HTTP メソッド (POST、GET、PUT、その他) に基づいて、生成されたメッセージ レスポンダーを分割します。この手法が有効な場合、固有の HTTP メソッドごとにメッセージ レスポンダーが生成されます。 

たとえば、順番は関係なく、トラフィックに 10 個の POST メッセージと 15 個の GET メッセージがある場合、Virtualize は生成された PVA で 2 個のレスポンダーを作成します。1 つは POST メッセージ用、もう 1 つは GET メッセージ用です (他のグループ化手法がさらにグループに分割していないものと仮定します)。 

作成されたグループをカスタマイズして、複数の HTTP メソッドをキャプチャできるようにすることができます。たとえば、あるグループ内で POST と PUT の両方が有効な場合、POST メソッドを使用するメッセージと PUT メソッドを使用するメッセージがそのグループに一致し、そのグループに割り当てられます。言い換えると、そのグループに基づいて生成されるレスポンダーは、POST メッセージと PUT メッセージの両方に対応します (いずれかを受け入れます)。

URL パスによるグループ化

一意な URL パスに基づいて、生成されたメッセージ レスポンダーを分割します。一意な HTTP URL パスごとにメッセージ レスポンダーが生成されます。HTTP URL パスによるグループ化設定は、基本的にその一意性を定義します。 

この手法に基づいてグループが最初に生成されるとき、URL パスが解析され、メッセージタイプを最も良く表したパス表現が作成されます。パス表現の作成には、本質的に主観的なパス解析アルゴリズムが使用されます。このアルゴリズムは、REST サービスで最も一般的なパターンになるよう設計されていますが、結果を最適にするために、生成されたパス条件の変更が必要なこともあります。

たとえば、トラフィックに以下の HTTP URL パスがある場合 (簡潔にするために、HTTP メソッド、URL パラメーター、その他の要素を省略しています)。


/service/order/v1/1/summary 
/service/order/v1/2/summary 
/service/order/v1/2/summary
/service/customer/v1/a/contact 
/service/customer/v1/b/contact 
/Foo
/Foo


Virtualize は、生成された PVA で 3 個のレスポンダーを作成します。

  • レスポンダー 1: summary パス用 (3 メッセージ)
  • レスポンダー 2: contact パス用 (2 メッセージ)
  • レスポンダー 3: Foo パス用 (2 メッセージ)

なお、これらのレスポンダーは Ant スタイルのワイルドカードを使って生成されます。* はゼロ個以上の文字に一致し、** はゼロ個以上のディレクトリに一致します。詳細と例については「URL パスによるグループ化」を参照してください。

パスベースのデータ ソース応答条件のための設定

Virtualize は、各グループ (レスポンダー) がさまざまな URL パスの値を使って同じリクエストに応答できるよう、新規に PVA を作成するときに URL パス セグメント インデックスを設定します。セグメント インデックスを提供することで URL パス パラメーターを設定します。たとえば以下の URL の場合:


/rest/api/2/version/1234/relatedIssueCounts /rest/api/2/version/4568/relatedIssueCounts /rest/api/2/version/4567/relatedIssueCounts


Virtualize はデータ ソースを使って、5 番目のパスセグメント (4 桁の数字の部分) をパラメータライズします。これらの各 ID のためのレスポンス データはデータ駆動になるため、PVA を編集する必要はありません。

URL パラメーターの存在によるグループ化

HTTP URL パラメーターの存在に基づいて、生成されたメッセージ レスポンダーを分割します。1 個以上の URL パラメーターごとに、メッセージ レスポンダーが生成されます。 

たとえば、トラフィックに以下の URL パラメーターがある場合:


?oid=1&category=women
?oid=2&category=women
?oid=1&category=babies
?ssn=1234567890&state=CA&category=silver 
?ssn=1234567891&state=CA&category=gold


Virtualize は、id、ssn、および state パラメーターの存在に基づいて、生成された PVA で以下のようにレスポンダーを分割します (各レスポンダーは以下のレスポンダー応答条件基準を持ちます)。

  • レスポンダー 1: URL パラメーター oid が存在する (3 個のメッセージ)
  • レスポンダー 2: URL パラメーター ssn および state が存在する (2 個のメッセージ)

この経験則が URL パラメーターの値に基づいてグループを生成するのではない点に注意してください。URL パラメーターの値に基づいてグループ化したい場合は手動で構成することができます。URL パラメーターの存在に基づいたグループ化は、[パラメーターのリストが正確に一致する場合にだけ応答条件に一致する] および [パラメーター名が存在する場合、常に応答条件に一致する (値にかかわらず)] オプションを使って構成します。詳細については「URL パラメーターによるグループ化」を参照してください。

URL パラメーターの値によるグループ化

特定の HTTP URL パラメーターの値リストに基づいて、生成されたメッセージ レスポンダーを分割します。1 個以上の URL パラメーター値のリストごとにメッセージ レスポンダーが生成されます。 

たとえば、トラフィックに以下の URL パラメーターがある場合:


?oid=1&category=women
?oid=2&category=women
?oid=1&category=babies
?ssn=1234567890&state=CA&category=silver 
?ssn=1234567891&state=CA&category=gold


Virtualize は、以下のレスポンダー応答条件基準に基づいて、生成された PVA でレスポンダーを分割します。

  • レスポンダー 1: category=women (2 個のメッセージ)
  • レスポンダー 2: category=babies (1 個のメッセージ)
  • レスポンダー 3: state=CA, category=silver (1 個のメッセージ)
  • レスポンダー 4: state=CA, category=gold (1 個のメッセージ)

リクエストボディの内容に基づいたグループ化

リクエストの内容で評価される XPath 表現のリストに基づいて、生成されたレスポンダーが分割されます。各 XPath 表現は、1 つのグループと XML 応答条件基準を表します。

この手法が有効な場合、SOAP メッセージは (デフォルトで) ボディの 1 番目の要素名に基づいてグループ化されます。SOAP ではない XML コンテンツの場合は、ルート要素名に基づいてグループ化されます。 

なお、カスタム メッセージ形式 (またはビルトインの非 XML 形式) を使用する場合、XPath 表現は、XML 形式に変換されたリクエストに基づきます。

条件の組み合わせによるグループ化

上記で説明した事例から、1 つ以上のグループ化条件に一致するメッセージのグループごとにレスポンダーを生成します。 

たとえば、トラフィック ファイルに以下のメッセージがある場合:


GET /service/order/v1/1/summary?oid=1&category=women
GET /service/order/v1/2/summary?oid=1&category=women
GET /service/order/v1/2/summary?oid=1&category=babies
POST /service/customer/v1/a/contact?ssn=1234567890&state=CA&category=silver 
POST /service/customer/v1/b/contact?ssn=1234567891&state=CA&category=gold 
POST /Foo
POST /Foo


Virtualize は、レスポンダー/グループごとに以下の条件に基づいてメッセージをグループ化し、レスポンダーを生成します。


グループ/レスポンダーHTTP メソッドURL パスURL パラメーターの存在リクエスト ボディの内容
1GETsummaryoid
2POSTcontactssn, state
3POSTFoo
child 1 of Body = myOperation
  • No labels