このセクションは、フォーム入力およびフォーム 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@myAttpublisher 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 番目の子を送信しないよう指定できます。

使用方法

  1. ツリーの背景エリア (特定の要素ではなく) を右クリックし、ショートカット メニューの [データ投入] をクリックします。

  2. [パラメーター値をデータ ソース カラムにマップ] をオンにし、すべてのフォーム入力パラメーターを [パラメータライズ] に設定するよう指定します。
  3. パラメーター名に一致する名前を持つデータ ソース列を選択します。たとえば、データ ソースに title という列があり、フォーム入力要素の 1 つが同じ title という名前を持つ場合、title 要素はデータ ソースの title 列にマッピングされます。
  4. 必要に応じてその他のオプションを設定します。詳細については「データ投入ウィザードのオプション」を参照してください。
  5. [OK] をクリックします。

データ投入ウィザードのオプション

オプション
説明
パラメーター値をデータ ソース カラムにマップ

(既にデータ ソースがある場合にだけ有効です) すべてのフォーム入力パラメーターを自動的に [パラメータライズ] に設定し、パラメーター名と一致するデータ ソース列を選択します。たとえば、データ ソースに title という列があり、フォーム入力要素の 1 つが同じ title という名前を持つ場合、title 要素はデータ ソースの title 列にマッピングされます。

要素の除外

リポジトリ データ ソースには適用されません。

[データ ソースを使用: 空の文字列がある <要素名> を除外] プロパティもデータ ソース列とマッピングするかどうかを指定します。 

[空の文字列を除外] オプションの詳細については「データ ソース値を使用してオプションの要素の送信を設定」を参照してください。 

[要素の除外] ドロップダウンには以下の選択肢があります。

  • 常にインクルード: データ投入プロセスの一環として、常に新しい任意の要素 (スキーマ タイプの属性が minOccurs='0' の要素) を追加するよう指定します。追加される要素の数は、[連続 (配列) アイテム数] フィールドの値によって決定されます。デフォルトは 2 です。

  • 変更しない: すべての連続要素を現在の状態のままにします。新しい要素は追加されず、除外プロパティも変更されません。

  • データ ソースの使用: データ投入プロセスで、フォーム入力要素の [データ ソースを使用: 空の文字列がある <要素名> を除外] プロパティを同じ名前に接尾辞 XL が付いたデータ ソースにマッピングします。  指定されたデータ ソース列の値が空文字列である場合、任意要素はメッセージに追加されません。データ ソース列に実際の値がある場合、その値がメッセージの一部として送信されます。

接頭辞 XL は、[カラム名接尾辞を除外] で指定します。XL はデフォルト値です。たとえば、リクエスト XML メッセージに title という要素があり、スキーマでは minOccurs='0' という属性付きで定義されている場合、title の親ノードを右クリックすると、[データ ソースを使用: 空の文字列がある title を除外] オプションが利用可能になります。データ投入機能は、除外プロパティをデータ ソース列 titleXL にマッピングします。XL は指定された接尾辞です。 

Nillable 要素 / Null 要素

リポジトリ データ ソースには適用されません。

[要素の除外] に似ていますが、[Nillable 要素] は [データ ソースの使用: 空文字列に Nil を設定] プロパティに影響を与える点が異なります。このフォーム入力プロパティは、スキーマ タイプに nillable="true" が設定されている要素に適用できます。データ ソースに空の文字列が含まれている場合、メッセージの一部として nil 属性が送信されます。値が指定されている場合、リクエスト要素には指定された値が設定され、nil 属性は送信されません。データ ソースに空の文字列 ("") がある場合、リクエスト要素は値を持たず、xsi:nil="true" 属性が設定されます。詳細については「データ ソース値を使用して Nil または Null 属性の使用を構成」を参照してください。

ダイアログの [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] という列名を使用して、目的の要素を指定します。

  • No labels