このセクションは、フォーム入力およびフォーム JSON ツリーで使用できるデータ投入オプションに適用されます。このセクションの内容:
はじめに
データを格納した Excel ファイルを手動で作成し、複雑なリクエスト メッセージの各要素を個々にパラメータライズするのは、時間がかかって面倒な場合があります。既存のデータ ソースがある場合、データ投入機能を使用すれば、データ ソースの値とメッセージの要素を自動的にマッピングできます。また、値を格納したデータ ソースがない場合、データ投入機能を使用すれば、フォーム フィールドのセットに対して単純な値を自動生成できます。「メッセージ要素にデータ投入するためのデータ ソース テンプレートを生成」で説明しているとおり、データ ソース テンプレートを自動的に生成し、データ投入することもできます。
データ ソース マッピングと命名規則
要素または属性値をパラメータライズする際、3 つの選択肢があります。
- 値を指定する
- 要素が Nil または Null であることを指定する
- 要素全体の除外を指定する
次の例を使用して、データ ソース マッピングについて説明します。これは、パラメータライズする要素を含む複雑なリクエスト メッセージを表します。
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <addNewItems xmlns="http://www.parasoft.com/wsdl/store-01/"> <book> <id xmlns="">0</id> <title xmlns=""></title> <price xmlns="">0.0</price> <authors xmlns=""> <i></i> <i></i> </authors> <publisher xmlns=""> <id myAtt="attVal">1</id> </publisher> </book> </addNewItems> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
この例には、可変数個の要素を持つ配列 (著者のリスト) が含まれています。関連するデータ ソースの命名規則でデータ投入機能を使用すると、要素を手動でデータ投入するよりも効率的であり、メッセージ パラメーターを個別に設定するというエラーが発生しやすい方法に集中する代わりに、データ駆動型の手法で (データソースを使用して) ユース ケースの設計に集中できます。
値の指定
データ ソース列とリクエスト要素のマッピングは、データ ソースの列名に特定の命名規則を適用することで実現されます。上記の XML の例では、id
という 2 つの要素があります。 1 つの列に book/id
ともう 1 つの book/publisher/id
という名前を付けることで、要素を区別できます。
この命名規則は、ファイル ディレクトリ構造または XPath を真似たものです。同様に、@
記号を追加することで属性を識別します。 上記の例では、book/publisher/id@myAtt
は publisher
ID の myAtt
属性を指します。
authors
要素の例の book/authors/i
識別子のように、いくつかの要素は同じ名前を持つ場合があります。要素の名前が同じである場合は、繰り返される要素を括弧 ()
内の配列番号で識別できます。たとえば、book/authors/i(1)
は最初の要素を指し、book/authors/i(2)
は 2 つ目の要素を指します。
Nil と除外の指定
場合によっては、要素の値を nil にするか、リクエスト メッセージから除外することができます。デフォルトでは、除外には XL
を付加し、nil 値には NIL
を付加することで、これを実現します。たとえば、book/authors/iXL(2)
とすると、著者が 1 人しかいない場合などに authors
要素の 2 番目の子を送信しないよう指定できます。
使用方法
- ツリーの背景エリア (特定の要素ではなく) を右クリックし、ショートカット メニューの [データ投入] をクリックします。
- [パラメーター値をデータ ソース カラムにマップ] をオンにし、すべてのフォーム入力パラメーターを [パラメータライズ] に設定するよう指定します。
- パラメーター名に一致する名前を持つデータ ソース列を選択します。たとえば、データ ソースに
title
という列があり、フォーム入力要素の 1 つが同じtitle
という名前を持つ場合、title
要素はデータ ソースのtitle
列にマッピングされます。 - 必要に応じてその他のオプションを設定します。詳細については「データ投入ウィザードのオプション」を参照してください。
- [OK] をクリックします。
データ投入ウィザードのオプション
オプション | 説明 |
---|---|
パラメーター値をデータ ソース カラムにマップ | (既にデータ ソースがある場合にだけ有効です) すべてのフォーム入力パラメーターを自動的に [パラメータライズ] に設定し、パラメーター名と一致するデータ ソース列を選択します。たとえば、データ ソースに |
要素の除外 リポジトリ データ ソースには適用されません。 | [データ ソースを使用: 空の文字列がある <要素名> を除外] プロパティもデータ ソース列とマッピングするかどうかを指定します。 [空の文字列を除外] オプションの詳細については「データ ソース値を使用してオプションの要素の送信を設定」を参照してください。 [要素の除外] ドロップダウンには以下の選択肢があります。
接頭辞 XL は、[カラム名接尾辞を除外] で指定します。XL はデフォルト値です。たとえば、リクエスト XML メッセージに title という要素があり、スキーマでは |
Nillable 要素 / Null 要素 リポジトリ データ ソースには適用されません。 | [要素の除外] に似ていますが、[Nillable 要素] は [データ ソースの使用: 空文字列に Nil を設定] プロパティに影響を与える点が異なります。このフォーム入力プロパティは、スキーマ タイプに ダイアログの [Nillable 列名の接尾辞] フィールドは接尾辞を指定します。 |
属性の除外 リポジトリ データ ソースおよび Form JSON には適用されません。 | 任意属性を自動的に追加するかどうかを指定します。 |
データ ソース マッピングと命名規則
シーケンス (配列) およびネストされた型の両方: 値のマッピングおよび除外/nillable のマッピングは、要素名と列名の名前比較規則に基づいて実行されます。しかし、同じ要素名が XML メッセージ内で繰り返し使用される場合があるため、要素とデータ ソース列間の 1 対 1 のマッピングを維持するには、マッピングの競合を避ける必要があります。
ネストされた複合型: XPath に似た書式をデータ ソース列名に使用することで、曖昧さを避けることができます。たとえば、データ ソース列名として title
ではなく、book/title
という名前を使用すると、book
要素の下にある title
要素だけにマッピングされます。それでもまだ曖昧さが残る場合、addNewItem/book/title
などの列名を使用して、関連付けられる要素をさらに限定することができます。
シーケンス型 (同じ名前のアイテムが繰り返される配列): アイテムのインデックス番号を使用して曖昧さを避けることができます。たとえば、Parasoft ストア サービスの book
型には authors
要素があり、authors
要素には著者のリストを表す多数の "i
" 要素を含めることができます。データ ソースの列名として単に "i
" を使用すると、すべての "i
" 要素にこのデータ ソース列がマッピングされます。
データ ソースの列名として "i[2]
" を使用すると、2 番目のアイテムとして出現する "i
" 要素すべてにマッピングされます(XPath 仕様とは異なり、インデックスは 0 ではなく 1 から開始されます)。列名が authors/i[2]
の場合は、authors
要素の下にある 2 番目の "i
" 要素にだけマッピングされます。
注意: XML メッセージに複数の authors
要素が出現する場合、 1 対 1 のマッピングを可能にする親ノードが XPath によって指定されていない限り、すべての authors
要素に同じようにマッピングされます。括弧を使用して数値インデックスを指定できるため、authors/i(2)
は authors/i[2]
と同じ要素にマッピングされます。()を使用した構文は、XPath の仕様には準拠していませんが、[]
が有効な SQL 文字ではないデータベース データ ソースを使用する場合に役に立ちます。
除外およびNillable のマッピング: 値と同じ XPath およびインデックスの規則が適用されます。たとえば、データ ソース列名に基づいて "i
" 要素を除外/包含するには、authors/iXL[2]
という列名を使用して、目的の要素を指定します。