Excerpt | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
このセクションでは、メッセージ レスポンダー ツールおよび SQL レスポンダー ツールで値の照合に使用される条件式について説明します。このセクションの内容ツールで値の照合に使用される条件式について説明します。 このセクションの内容:
条件式の概要条件式は、以下の照合を行うための簡潔な構文です。
条件式の構文は、文字列や数字の比較、およびワイルドカードや正規表現を使用した照合をサポートします。この構文は次の目的で使用されます。
Virtualize はレスポンダーが提供した入力値に対して条件式を評価します。 条件式が true を返す場合に値は一致したと考えられます。 SQL レスポンダーでの条件式の使用構文とその有用性を理解するために、簡単な SQL レスポンダーで考えてみましょう。 Virtualize がデータベーストラフィックの記録中に次の 2 つの SQL クエリーをキャプチャしたと仮定します。
これらの SQL 文は両方とも次の SQLレスポンダーの SQL クエリーテンプレートに対応します。
記録されたデータを使用して、Virtualize は 1 つのクエリー テンプレートと次のパラメーター判定条件のテーブルを生成しました。興味深いのは、 SQL 文の WHERE 節の値に対応する "yearCreated" と "category"列です。
構成されたように、SQL レスポンダーは Virtualize が記録中にキャプチャした 2 つの SQL 文のみに結果セットを返すことができます。Virtualize は、記録中に見つけた値に正確に一致するようにパラメーター判定条件を構成します。レスポンダーは、 2005 年に作成された widget の "tool-metal" の結果セットを持っていません。また、 2011 年に作成された widgetの "construction-molding" に分類されたもの以外の結果セットも持っていません。 すべての "tool-metal" widget をレスポンダーで処理したい場合は、作成された年で widget をグループ化することで実施可能です。 2008 年より前に作成されたすべての "tool-metal" widget に結果セットを 1 つ返し、2008 年以降に作成されたすべての "tool-metal" widget に別の結果セット (Virtualize が記録中にキャプチャしたもの ) を返すには、"yearCreated" パラメーターに数値比較を使用します。2008 年より前に作成された widget のために、レスポンダーに別の結果セットを手動で追加する必要があります。最終的に、パラメーター判定条件テーブルは次のようになります。
"category"が "tool-metal" である行の "yearCreated" 列のエントリに注意してください。両方のエントリが大括弧で囲まれています。大括弧は、エントリをリテラル文字列として照合するのではなく、より高性能な応答条件として扱われるべきである、ということを示します。大括弧内の式は true または false に評価されます。[< 2008] という式は入力値が 2008 より小さい数の場合に true を返します。入力値は着信 SQL 文から取得されます。 SQL レスポンダーは SQL をパースし、クエリーテンプレートの "${yearCreated}" に対応する値を見つけて、その値を [< 2008] 式に入力値として提供します。 ほとんどのプログラミング言語の小なりの比較は、 < や >= に加えて、条件式は <=、 >、 == (等しい)、および != (等しくない) をサポートしています。数値の比較にも文字列の比較にも同じ比較演算子を使用できます。 パラメーター判定条件テーブルの最初の 2 行では、 "category"の値は tool-metal です。tool-metal という式は [== "tool-metal"] という式と同等です。簡単にするために、 Virtualize は式が "[" 文字で始まらない限り、式をリテラル文字列の照合に使用します。副作用として、 "[" で始まるリテラル文字列を照合するには、明示的に == 演算子を使用する必要があります。"[xyz"というリテラル文字列を照合するには、[== "[xyz"] という式を使用する必要があります。 数値と文字列に使用できる比較演算子に加えて、Virtualize は文字列を分析するために更なる演算子をサポートします。2011 年に作成され、categoryが "construction-" で始まるすべての widget に別の結果セットを使用したいと仮定します。これを行うには、レスポンダーに別の結果セットを追加し、 "category" パラメーターに [like "construction-*"] という式を使用します。この式は、construction-support や construction-something-misc といった入力に一致します。like 演算子はワイルドカードとして * および ? を使用します。* ワイルドカードは 0 以上の文字に一致します。? ワイルドカードは正確に 1 文字に一致します。 category が "circuit" または "circuit-" の後に任意の文字列が続くもので、かつ 2011 年に作成されたすべての widget に別の結果セットを使用したいと仮定します。"circuitbreaker" のような category は対象外です。これを行うには、レスポンダーに別の結果セットを追加して、正規表現で "category" パラメーターを照合するようにします。条件式 [=~ /^circuit(-.+)?$/] を使用できます。正規表現は circuit、または circuit-electric のように circuit の後に - と 1 つ以上の文字が続くことを照合します。 パラメーター判定条件テーブルは次のようになります。
ユーザーが使用しているクエリーテンプレートに一致するどんな SQL 文にも、SQL レスポンダーが結果セットを返すように設定したいと仮定します。 他のパラメーター条件には一致せず、 2000 年から 2007 年の間に作成された widget 用に結果セットを 1 つ用意します。他の一致しない widget には、最終的な結果セットを用意します。 2000 から 2007 の間の "yearCreated" に一致させるには、 2 つの数値比較演算子と and 演算子を組み合わせて使用します。 この式は、次の範囲に一致します: [>= 2000 and および <= 2007] という式は 2000 から 2007 の範囲に一致します。and 。and 演算子は 2 つの条件式を結合し、両方の式が true を返すときに限り true を返します。or 演算子も同じような動きをしますが、どちらか 1 つまたは両方の式が true を返すときに限り true を返します。 "category" パラメーターのどんな値にも一致させるには、条件式 [*] を使用できます。条件式 [*] はどんな入力にも一致します。あるいは、[] 式を使用できます。[] は条件がないことを意味するので、true と評価されます。より意味が明確なので Virtualize は [*] をサポートします。空の式 (パラメーター判定条件のテーブルで空のテーブルセルとして表現される) はどんな入力にも一致しません。むしろ、文字列の長さが 0 の入力に一致します。 最後に、 widget に一致しなかったものに一致させるには、最終的な結果セットを判定テーブルの最終行として追加します。 "yearCreated" と "category" パラメーターそれぞれに [*] 式を使用します。 パラメーター判定条件テーブルは次のようになります。
データソース応答条件の設定は SQL レスポンダーの構成とは異なりますが、 Virtualize のデータソース応答条件は同じ条件式の構文をサポートします。 条件式の構文条件式はリテラル文字列に一致させるか、より高度な式かのいずれかに解釈されます。 式が [ で始まらない場合、Virtualize は式をリテラル文字列に一致させるものと解釈します。[ で始まり、] で終わらない式は不正な式なのでパースされません。大括弧で囲まれた式は、入力値に対して評価をするいくつかの演算子 (比較演算子、like 演算子および正規表現を使用した文字列のパターンマッチング) および条件式を結合するための boolean 演算子をサポートしています。 Virtualize は入力値に対して式を評価します。入力値は数値または文字列のいずれかを使用できます。各条件は true または false に評価されます。true は照合に成功したことを示します。 比較演算子Virtualize は数値の比較にも文字列の比較にも使用できる、いくつかの比較演算子をサポートします。サポートしている演算子は次のとおりです。
たとえば、数値と推定される入力が 57 より小さいことをチェックするには、[< 57] を使用します。入力値は暗黙的に左オペランドです。右オペランドは入力値と比較する値です。 文字列は二重引用符で囲みます。例:
という式は Virtualize は文字列を辞書順に比較します。たとえば、 A < AA < Z < Zoo < a < aa < z < zoo です。比較では大文字と小文字が区別されることに注意してください。Virtualize は各文字の Unicode 値を比較します。2 つの文字列があり、1 つの文字列の方がもう 1 つの文字列より長いこと以外 2 つの文字列が同じであるとしたら、短い文字列は長い文字列より小さいです。 二重引用符内の文字列は、次のエスケープシーケンスを含むことができます。
Java は同じエスケープ シーケンスをサポートします。一重引用符のエスケープシーケンス \' は厳密には必要ありません。しかし、Java 文字列の構文との互換性のために提供されています。 数値と文字列の扱いは異なります。式 [== "30"] は 30 という入力文字列には一致しますが、30.0 という入力文字列には一致しません。しかし、[== 30] は両方の入力文字列に一致します。右オペランドと入力値の両方とも、数値か文字列のいずれかのタイプがあります。両方とも数値の場合、Virtualize は数値比較を実行します。どちらか一方だけが数値の場合、Virtualize はもう一方のオペランドを数値に変換しようと試みます。成功した場合、Virtualize は数値比較を実行します。失敗した場合は、数値のオペランドを文字列に変換し、文字列比較を実行します。 二重引用符の有無によって、右オペランドが数値かどうか判断されます。二重引用符の有無によって、右オペランドが数値かどうか判断されます。 SQL レスポンダーは SQL 文をパースすることで入力値のタイプを判断します。 SQL 文内の一重引用符内の値は文字列です。一重引用符内にない数字は数値です。メッセージレスポンダーのデータソース応答条件では、すべての入力値が文字列となります。数値比較を行うためには、右オペランドが数字である必要があります。 次のテーブルは、比較演算子の使用方法と一致する入力値を表します。
構文をさらに詳しく説明するために、次のテーブルではいくつかのパース不可能な式を表します。
文字列照合比較演算子に加えて、より高度な文字列照合を行うために like 演算子と正規表現を使用できます。 like 演算子は、[like "alpha?beta*"] 形式の式を使用した簡単なパターン マッチングをサポートします。ワイルドカード文字 ? は任意の 1 文字に一致します。ワイルドカード文字 * は 1 つ以上の文字に一致します。入力文字が数値の場合、 Virtualize は入力を文字列に変換します。 正規表現は、 [=~ = /pat-tern/] 形式の式を使用してより強力なパターン の形式の式を使用して、より強力なパターン マッチングをサポートします。入力文字が数値の場合、 Virtualize は入力を文字列に変換します。Perl と同様に、 =~ は正規表現による比較を表し、パターン自身はスラッシュで囲まれます。Virtualize は Java の正規表現で使用されるものと同じパターン構文を使用します。Java のパターン構文に関する詳細なドキュメントについては、Javadoc で java.util.regex.Pattern クラスを参照してください。Java のパターン構文と異なる点は、 / 文字に一致することです。そのため、バックスラッシュでエスケープする必要があります。 入力文字列のいくつかの部分文字列がパターンに一致する場合、正規表現による比較は true を返します。abc123 や 123abc でははく abc に一致させたい場合、[=~ /abc/ ] ではなく [=~ /^abc$/] を使用する必要があります。^ および $ はそれぞれ文字列の最初と最後を照合します。 次のテーブルは、比較演算子の使用方法と一致する入力値を表します。
複合式Virtualize は and および or 演算子による条件式の結合をサポートします。たとえば、入力値が 0 から 9 の間の場合、[>= 0 and <= 9] は true を返します。 and 演算子は or 演算子よりも優先順位が高くなります。式を囲むのに括弧を使用できます。 [like "*b*" or like "*a*" and like "*z*"] という式は [like "*b*" or (like "*a*" and like "*z*")] と同等です。 演算子名は大文字と小文字を区別します。次の式は AND が有効な演算子ではないため、パースエラーとなります: [> 0 AND < 10] 次のテーブルは、比較演算子の使用方法と一致する入力値を表します。
メッセージ レスポンダーでの条件式の使用メッセージ レスポンダーでデータソース応答条件を設定する一般的なプロセス (リクエスト内の値をデータソース列の値に対して比較するように構成) については、「[データソース応答条件] タブ」 に記述しています。 このセクションで説明した構文は Virtualize 9.2 で導入され、仮想アセット (.pva ファイル) に特有のものです。Virtualize 9.1 の構文はサポートされていません。 さらに、 Virtualize 環境にスタブとともに Parasoft .tst ファイルをインポートした場合、Virtualize はこれらのアイテムのデータソース応答条件にレガシー構文を使用します。 |
Page History
Overview
Content Tools