Excel 、CSV、そしてその他のデータ ソースといったリポジトリ データは、データ ソースを用いて Parasoft メッセージング ツールで使用されます。対象データへの接続先や、(任意で) 使用するデータのサブセットを指定するデータ ソースを定義します。それから、このデータ ソースに対して値をパラメータライズしてツールにデータ投入します。
Virtualize では、リポジトリ データは Message Responder、 SQL Responder およびクライアント指向の検証ツールで使用されます。リポジトリ データがどのように SQL Responder で使用されるかの詳細については、「SQL Responder」を参照してください。その他すべての場合は以下に記載しています。
フォーム ビューによる階層的パラメータライズ
フォーム ビュー (たとえば [フォーム入力] や [フォーム JSON] ビュー) を使ってリポジトリのデータでツールの値をパラメータライズするには、次の操作を行います。
- 対象のリポジトリに接続するデータ ソースがあること、パラメータライズしたいツールを含むスイートでそのデータ ソースが利用可能であることを確認します。
- パラメータライズしたいツールで、次の操作を行います。
- [データ ソース] エリアでリポジトリ データ ソースが選択されていることを確認します。
- 使用するフォーム ビューを開きます。
- 適合するデータ リポジトリ列ですべてのアイテムを投入する場合は、ツリーを右クリックし [データ投入] をクリックします。属性除外オプションは、データ投入の処理中にオプションの属性が自動的に追加されるように制御します。リポジトリの値で各アイテムを投入する場合は、 [パラメータライズ] を選択し、使用したい値を含む列の名前を選択します。
- [データ ソース] エリアでリポジトリ データ ソースが選択されていることを確認します。
注意:
ヒント: カスタム ツールからのデータ値へのアクセス
カスタム ツール (Extension Framework を使用して追加されたツール) を使用する場合、データ リポジトリの列の値にアクセスするには、適切なツールのテキスト フィールドに手動で列名を入力します。たとえば、データ リポジトリの "loanAmount" というキー列に格納されている値にアクセスするには、適切なツールのフィールドに ${loanAmount (key)}
と入力します。
- 複雑な要素は、[レコード リスト] 列を使ってパラメータライズするべきです。
- 単純な要素は、[プリミティブ] または [プリミティブ リスト] 列を使ってパラメータライズするべきです。
リテラル ビューによる階層的パラメータライズ
リテラル ビューを使ってリポジトリのデータでツールの値をパラメータライズするには、次の操作を行います。
- 対象のリポジトリに接続するデータ ソースがあること、パラメータライズしたいツールを含むスイートでそのデータ ソースが利用可能であることを確認します。
- パラメータライズしたいツールで、次の操作を行います。
- [データ ソース] エリアでリポジトリ データ ソースが選択されていることを確認します。
- リテラル ビューを開きます。
- メッセージを編集します。そのメッセージの階層レベルをパラメータライズするために使用するデータ リポジトリ列を "ParasoftColumn" を使って指定します。詳細については、「JSON ガイドライン」および「XML ガイドライン」を参照してください。
- [データ ソース] エリアでリポジトリ データ ソースが選択されていることを確認します。
なお、"ParasoftColumn" は複雑な要素にだけ適用できます。単純な要素をパラメータライズするには、{$} 構文を使ってデータ ソースの値にアクセスします。
たとえば、以下のデータ リポジトリ データがあるものとします。
body: info: "some info about stuff" excludedSimple: "[parasoft_exclude]" optionalSimple: "[parasoft_null]" excluded: [] optional: null items: [ { item: [ { name: "bill", last: "mclaren", id: "12345"} { name: "steve", last: "smith", id: "45678" } ] } ] codes: [ { code: [ "abc", "efg", "hij" ] } ]
以下は、このデータ リポジトリ データを使用するようパラメータライズされる JSON メッセージです。
{ "body" : { "ParasoftColumn" : "body", "info" : "${info}", "excludedSimple" : "${excludedSimple}", "optionalSimple" : "${optionalSimple}", "excluded" : { "ParasoftColumn" : "excluded", "excludedChild" : "${excludedChild}" }, "optional" : { "ParasoftColumn" : "optional", "optionalChild" : "${optionalChild}" }, "items" : [ "ParasoftColumn: items", { "ParasoftColumn" : "item", "name" : "${name}", "last" : "${last}", "id" : ${number:id} } ], "codes" : [ "ParasoftColumn: codes", "${code}" ] } }
パラメータライズが完了すると、期待される JSON メッセージは以下のようになります。
{ "body" : { "info" : "some info about stuff", "optionalSimple" : null, "optional" : null, "items" : [ { "name" : "bill", "last" : "mclaren", "id" : 12345 }, { "name" : "steve", "last" : "smith", "id" : 45678 } ], "codes" : [ "abc", "efg", "hij" ] } }
以下は、上記のデータ リポジトリ データを使用するようパラメータライズされる XML メッセージです。
<root> <body ParasoftColumn="body"> <info>${info}</info> <excludedSimple>${excludedSimple}</excludedSimple> <optionalSimple>${optionalSimple}</optionalSimple> <excluded ParasoftColumn="excluded"> <excludedChild>${excludedChild}</excludedChild> </excluded> <optional ParasoftColumn="optional"> <optionalChild>${optionalChild}</optionalChild> </optional> <optional>${optional}</optional> <items customerAttr="val" ParasoftColumn="items"> <item ParasoftColumn="item"> <name>${name}</name> <last>${last}</last> <id>${id}</id> </item> </items> <codes ParasoftColumn="codes"> <code>${code}</code> </codes> </body> </root>
パラメータライズが完了すると、期待される XML メッセージは以下のようになります。
<root> <body> <info>some info about stuff</info> <optionalSimple xsi:nil="true"/> <optional xsi:nil="true"/> <items customerAttr="val"> <item> <name>bill</name> <last>mclaren</last> <id>12345</id> </item> <item> <name>steve</name> <last>smith</last> <id>45678</id> </item> </items> <codes> <code>abc</code> <code>efg</code> <code>hij</code> </codes> </body> </root>
JSON ガイドライン
- オブジェクトおよび配列は、[レコード リスト] 列を使ってパラメータライズするべきです。
- 単純なオブジェクトフィールドは、[プリミティブ] 列を使って値をパラメータライズするべきです。 数値またはブール値の場合、その値は ${number:<value>} または ${boolean:<value>} にするべきです。
- 単純な配列項目は、[プリミティブ リスト] 列を使って値をパラメータライズするべきです。数値またはブール値の場合、その値は ${number:<value>} または ${boolean:<value>} にするべきです。
- リポジトリ データ ソースの [プリミティブ] または [プリミティブ リスト] 列だけでなく、変数を使ってパラメータライズすることができます。
- データ リポジトリの列を使ってオブジェクトまたは配列をパラメータライズする場合、同名の他の要素が同じレベルに存在してはいけません。
- ルート オブジェクトおよびルート配列はパラメータライズされません。
XML ガイドライン
- 複雑な要素は、[レコード リスト] 列を使ってパラメータライズするべきです。
- 単純な要素は、[プリミティブ] または [プリミティブ リスト] 列を使ってパラメータライズするべきです。
- リポジトリ データ ソースの [プリミティブ] または [プリミティブ リスト] 列だけでなく、変数を使ってパラメータライズすることができます。
- データ リポジトリの列を使って要素をパラメータライズする場合、同名の他の要素が同じレベルに存在してはいけません。
- ルート要素はパラメータライズされません。