このセクションでは、[トラフィックからパラメータライズされたメッセージを生成] ウィザードの [データの再利用] ページの設定方法について説明します。このページの設定に基づいて、トラフィック ファイルの新規データで既存のリポジトリ データ セットおよびデータ レポートを拡張および/または更新する方法が決定されます。

セクションの内容:

データ セットおよびレコード タイプの表示

左側のパネルには、データ セットが表示されます。指定されたリポジトリに存在するすべてのデータ セットに (existing) というラベルが表示されます。


SOAtest のデータ再利用ページ

Virtualize のデータ再利用ページ


右側のパネルには、グループのレコード タイプおよびフィールドが表示されます。既存のデータ リポジトリのレコードに一致するレコード タイプまたはフィールドには、(matching) というラベルが表示されます。

  • [データ セットのインポート] オプションは、左側のパネルに表示されたデータ セットに適用されます。「Understanding Data Set Import Options」に説明があります。
  • [レコードのインポート] オプションは、右側のパネルに表示されたレコード タイプに適用されます。「Understanding Record Import Options」に説明があります。
  • [レコード タイプ] ツリーの変更オプションについては、「」および「」で説明されています。

制約の推論

CTP を使用している場合、制約の推論オプションも選択できます。制約とは、データと関連づけられた追加のプロパティであり、モデルを作成したり、テスト データを生成することを可能にします (「Data Modeling」を参照)。たとえば、データに文字列、数値、日付、ブール型などの制約をかけることができます。

  • 制約を定義しない場合は、[なし] を選択します。
  • データに基づいて自動的に制約を設定するには、[データ] を選択します。データからデータ リポジトリにメタデータを入力するオプションが表示されます。たとえば、データ セットにアメリカ合衆国の電話番号が含まれている場合、次の制約が設定されるでしょう:

Constraint:String

Pattern:(###) ###-####

Char map:0123456789

詳細については「データ制約の推論」を参照してください。

  • サービス定義ファイル (WSDL/スキーマ) に基づいて制約を定義するには、[定義] を選択します。トラフィック ウィザードで定義ファイルを指定しなかった場合、このオプションは利用できません。
Virtualize での WSDL の使用についてはパラメータライズされたメッセージ レスポンダーのトラフィックからの作成」を、SOAtest での WSDL の使用については「WSDL からのテスト作成」を参照してください。

トラフィック ウィザードで既存のリポジトリを選択すると、既存の制約は上書きされます。CTP で制約を参照および変更できます。「Data Modelingを参照してください。


レコード ID とは

レコード ID とは、レコード タイプのフィールドのサブセットであり、そのレコードを一意に識別します。たとえば、銀行の顧客レコード タイプに 15 のフィールドがあっても、社会保障番号および口座番号だけでレコードを識別できる場合もあるでしょう。  書籍のレコードであれば、その ID としてISBN を使用するかもしれません。

識別フィールドを使用してインポートされたトラフィック データと既存のデータ リポジトリのレコードを関連付けます。この関連付けは、トラフィック ファイルのどのデータが新しく、どのデータが既存データに一致するかを判断するのを助けます。一致するデータが検出されると、レコードのインポート設定によって、既存のレコードを参照/共有するか、あるいは更新するかが決定されます。 

レコード ID の詳細については「レコード識別フィールドの指定」を参照してください。

ウィザードからのレコード ID の指定

このトラフィック ファイルに関連付けられたデータ セットに対して、レコード ID をまだ指定していない場合、ウィザードのレコード タイプ ツリーで設定することができます。

すでに ID の一部であるフィールドは、緑の矢印アイコンでマークされます。(既存) ラベルが付いている既存のレコード タイプについては、ID をウィザードで変更することはできません (ウィザードで ID を削除したり新規に追加することはできません)。既存のデータ セットの ID 設定を変更したい場合は、データ リポジトリ エディターを使用する必要があります (「レコード識別フィールドの指定」を参照)。



既存の ID が存在せず、フィールドを ID として使用することを指定したい場合、以下の操作を行います。

  • フィールドを右クリックし、[ID に追加] を選択します。フィールドのアイコンが変わります。このアイコンは、ウィザードの完了時にこのフィールドが ID になることを表します。



ID からフィールドを削除するには、以下の操作を行います。

  • フィールドを右クリックし、[ID から削除] を選択します。

レコード タイプ/フィールド名の変更とマッピング

インポートするデータのスキーマをさらにコントロールしたい場合、作成するレコード タイプとフィールドの名前を変更できます。名前をカスタマイズするだけでなく、別の名前でマークされた項目が実際には同じであることを示すことができます。

既存のレコードとフィールドの名前を変更することはできませんが、新規に複製して作成することは可能です。

フィールドのレコード タイプ名を変更するには、以下の操作を行います。

  • 適切なツリー ノードを右クリックして [名前の変更] を選択し、新しい名前を入力します。

新しい名前は、矢印の右側に表示され、赤いアスタリスク (*) でマークされます。



なお、既存のレコード タイプまたはフィールドの名前を変更する場合、元のエントリは変更されず、その直下に新しいレコード タイプまたはフィールドが追加される点に注意してください。トラフィック ファイルのデータは、新しいレコード タイプまたはフィールドを使用します。


サンプル

記録されたトラフィックが、実際には同じアドレス タイプである複数の要素 (たとえば address、work_address、home_address) を参照しているものとします。デフォルトでは、要素の名前が異なるためにウィザードはこれらの要素を別のタイプとして扱います。名前を変更することで、同じタイプとして扱うよう指定できます。



work_address を右クリックして名前を address に変更した場合、work_address になかった address 子ノードが work_address に追加されます。さらに、address になかった work_address 子ノードが address に追加されます。

home_addressaddress に名前変更した場合、home_addresswork_address、そして address がマージされます。どのタイプがマージされているかがノード テキストに表示されます。3 つのすべてのタイプにマージが適用された後に、残りの設定と識別設定が適用されます。



マージされたタイプの名前を変更するとき、マージされているすべてのタイプに変更を適用するか、それとも選択したタイプにだけ変更を適用するかの確認があります。たとえば、あるマージされたタイプの名前をaddr に変更して、この変更をマージされたすべてのタイプに適用した場合、結果は以下の図のようになります。



次に、もしも work_addresssecondary_address に名前変更し、この変更を「選択したノード」にだけ適用した場合、「選択したノード」は他から " マージ解除" され (つまり「選択したノード」の子は元に戻り)、名前が変更されます。今後、ウィザードはこのノードを addr とは異なるタイプとして扱います。


注意

  • 別のタイプに名前変更されているノードの識別設定は、名前変更によって削除されます。名前を変更した後に ID を設定できます。
  • 2 つのレコードタイプに共通の子フィールドがあっても、その子フィールドのタイプが異なる場合、名前を変更できません。たとえば、addressWithListwork_address はマージできません。なぜなら、どちらにも misc_info という子フィールドがありますが、そのタイプが異なるからです (一方は list で、もう一方は string です)。
  • 2 つのレコード タイプに共通の子フィールドがあるときに、「それらの子フィールドが異なる方法で名前付けされている」あるいは「一方は名前変更されているがもう一方は名前変更されていない」場合、それらのレコード タイプをマージすることはできません。

2 つのレコード タイプにおいて、トラフィック ファイルのどこかで一方のレコードタイプがもう一方の先祖である場合、それらのレコード タイプをマージすることはできません。

データ セットのインポート オプション

以下のオプションを選択して、トラフィック ファイルからの新規データがどのように既存のリポジトリ データ セットとデータ レコードを拡張あるいは更新するかを設定できます。

SOAtest のオプション

  • 置換: 既存データを削除し、新規データを追加します。
  • 追加: 既存のデータを消去せずに新規データを追加します。

Virtualize のオプション

  • Replace: 既存データを削除し、新規データを追加します。
  • マージ: 既存データを変更せずに、新規データをインポートします。
  • Update: 一致するレコードを新規データで更新し、必要に応じて新規レコードを作成します。
  • Overwrite: 一致するキーを持つ、一致するレコードを新規データで更新します。新規レコードは作成しません。


それぞれのオプションがどのように動作するかを説明するために、以下の既存のデータ セットがあるものとします (CustomerID がキー列です)。

CustomerIDFirstNameLastName
1DarthVader
2LukeSkywalker
3HansSolo

また、以下のデータがある新規トラフィックがあるものとします。

CustomerIDFirstNameLastName
1DarthMaul
2LukeSkywalker
4Obi-WanKenobi

置換

既存データを削除し、新規データを追加します。



上記の例では「置換」の結果は以下のようになります。

CustomerIDFirstNameLastName
1DarthMaul
2LukeSkywalker
4Obi-WanKenobi

マージ

既存データを変更せずに、新規データをインポートします。



上記の例では「マージ」の結果は以下のようになります。

CustomerIDFirstNameLastName
1DarthVader
2LukeSkywalker
3HansSolo
4Obi-WanKenobi

更新

一致するレコードを新規データで更新し、必要に応じて新規レコードを作成します。



上記の例では「更新」の結果は以下のようになります。

CustomerIDFirstNameLastName
1DarthMaul
2LukeSkywalker
3HansSolo
4Obi-WanKenobi

上書き

一致するキーを持つ、一致するレコードを新規データで更新します。新規レコードは作成しません。

新しいデータ セットにトラフィックをインポートする場合、たとえ一致するキーがなくても、新規レコードが作成されます。



上記の例では「上書き」の結果は以下のようになります。

CustomerIDFirstNameLastName
1DarthMaul
2LukeSkywalker
3HansSolo

レコード インポート オプション

レコード インポート オプションを使用することで、一致するデータ (ID で決定されるように、既存のレコード タイプに一致するデータ) が既存のレコード タイプを再利用するか、それとも既存のレコードを更新するかを設定できます。以下のオプションを利用できます。

  • 再利用: 一致する既存レコードを再利用/共有します。
  • 更新: 既存レコードの対応するフィールドを、トラフィックのデータで更新し、新しいレコード タイプのための新規レコードを追加します。

たとえば、SocialSec の ID と、FirstName、LastName、SocialSec、および Email を持つ既存レコードについて考えてみましょう。

[更新] オプションの場合:

  • トラフィック中に、FirstName、LastName、SocialSec が同じで、Email が異なるデータがある場合、Email が更新されます。
  • CustomerPrefs レコード タイプを参照する、ID がないフィールドがトラフィック中にある場合、上記の振る舞いに加えて、新しい CustomerPrefs レコードが作成されます。

[再利用] オプションの場合:

  • トラフィック中に、FirstName、LastName、SocialSec が同じで、Email が異なるデータがある場合、どのフィールドも更新されません。
  • CustomerPrefs レコードタイプを参照する、ID がないフィールドがトラフィック中にある場合、どのフィールドも更新されず、新規レコードも作成されません。

重複するレコード タイプを別の名前で作成したい場合は、一致するレコード タイプの名前をダブルクリックして [名前の変更] オプションを選択し、新しいレコード タイプ名を入力します。



ツリーには、元のレコード タイプと新しい (名前変更された) レコード タイプの両方が表示されます。

  • No labels