このセクションでは、Fixed Length Client ツールについて説明します。Fixed Length Client ツールは、固定長形式と XML 形式間の変換をサポートします。また、Fixed Length Client ツールは Fixed Length Call Back ツールに対応します。Fixed Length Call Back ツールは、受信した固定長メッセージの処理を容易にします。
このセクションの内容:
Fixed Length Client は EDI Client ツールの一種であり、固定長メッセージの処理用に構成されています。[ツールの追加] ウィザードから直接 Fixed Length Client ツールを作成できます。または、EDI Client ツールを追加してから、形式を固定長に変更することもできます。すると、ツールの名前が Fixed Length Client に変わります ([デフォルト名の使用] オプションがオフにされていない場合)。
同様に、Fixed Length Call Back ツールは固定長メッセージの処理用に構成された Enhanced Call Back ツールの一種です。Fixed Length Call Back ツールを作成するには、Enhanced Call Back ツールを追加し、形式を固定長に変更します。すると、ツールの名前が Fixed Length Call Back に変わります ([デフォルト名の使用] オプションがオフにされていない場合)。
固定長は、標準的な定義のないデータ形式です。一般的には、固定長データ形式は複数のレコードで構成されます。各レコードには 1 つ以上のフィールドがあり、各フィールドの長さは固定です (そのため「固定長形式」という名前で呼ばれます)。通常、フィールドの間に区切りはありません。
簡単な例として、1 行が 1 レコードであり、以下の 2 つのフィールドを持つメッセージを挙げます。
フィールドの長さはそれぞれ 10 文字であり、右寄せで、空白文字で埋められます。
Smith John
Doe Jane
固定長形式のレコードには、別の固定長のレコードを持つセクションがネストされる場合があります。ネストされたセクションには、一定ではない数のレコードが含まれる場合があります。最初の例を基に、2 つ目の固定長形式の例を挙げます。個人ごとに、その人が所有する一定ではない数のペットを指定すると仮定します。上記で使用したデータ形式をベースにして、以下を追加します。
以下はそのようなデータの例です。
Smith John00
Doe Jane02 Cat Fluffy Dog Spot
最初の人物のレコードには 0 匹のペットがあり、2 番目の人物のレコードには 2 匹のペットがあります。ペットのサブセクションには、一定ではない数のペット レコードがあります。
さまざまな固定長形式があるため (そして統一された標準がないため)、Parasoft SOAtest は、簡単な構成によって組織が使用するどんな固定長メッセージでも認識できるよう設計されています。そのため、ユーザーは独自のメッセージ タイプを使用して作業する際に、SOAtest のインターフェイスを利用して、メッセージの設定、送信、検証を行うことができます。
SOAtest で固定長メッセージを設定して検証するには、以下の設定を一度だけ行う必要があります。
この時点で、Fixed Length Client、Fixed Length Call Back Tool、および XML Converter でデータ モデルを利用できます。Fixed Length Client でメッセージを設定し、Fixed Length Client の出力で検証を設定できます。
この手順については、次のセクションで詳しく説明します。
固定長データ形式を記述するデータ モデルの定義には、大きく分けて次の 2 つのステップがあります。
SOAtest で固定長メッセージを処理するための最初のステップは、使用する固定長データ形式を記述するデータ モデルを定義することです。
新規データ モデルを作成するには、次の操作を行います。
ウィザードは、ワークスペース内の指定された場所に .datamodel という拡張子のファイルを作成します。ファイルはテスト ケース エクスプローラーには表示されません。ナビゲーター ビューに切り替え、プロジェクト内のファイルを保存した場所を見ると、ファイルが表示されています。
次のステップでは、データ モデル エディターを使用して SOAtest に固定長メッセージの構造を指示します。SOAtest は、この情報を使用してメッセージと XML の間の変換を行います。
新規モデル定義を作成した後、データ モデル エディターが開きます。ナビゲーターでデータ定義ファイルのノードをダブルクリックしてエディターを開くこともできます。
この名前は、ツールでメッセージ形式を識別する際に使用されます。
次に、全体としてのセクションに関する全般的な説明を入力します。名前、含まれるレコード、レコードの区切り、次のレコードの条件などです。
名前
セクション名を指定します。この名前は、メッセージ構成インターフェイスに表示されるほか、変換後の XML の XML タグ名として使用されます (XML で使用できない文字は削除されます)。任意の名前を指定することができます。
レコード名
セクション内のレコードの名前を指定します。この名前は、メッセージ構成インターフェイスに表示されるほか、変換後の XML の XML タグ名として使用されます (XML で使用できない文字は削除されます)。任意の名前を指定することができます。
レコード セパレーター
セクション内のレコードの区切りとして使用する文字を指定します。オプションの 1 つを選択するか (フィールドをダブルクリックするとドロップダウン リストが表示されます)、カスタムの区切り文字を入力します。
次のオプションが利用可能です。
次のレコードの条件
固定長メッセージを XML に変換する際に、パーサーがこのセクションの読み込みが終わったと判断するための条件を指定します。このセクションの後に、セクションの一部として処理するべきではない他のコンテンツがある場合、このオプションの指定は重要です。パーサーは、このセクションの処理を終了して次に移る前に、いくつのレコードがあるのかを認識できなければなりません。
有効な値は以下のとおりです。
XPath オプションは、パーサーが当該セクションの定義に従ったコンテンツの処理を続行する条件を指定します。パーサーは、条件 がtrue に評価される間は、セクションが継続していると解釈します。条件が false に評価された場合、パーサーはこのセクションの処理を終了します。レコードの読み取り開始時に条件が適用され、その後のコンテンツがセクションに所属するレコードかどうかが判断されます。
このオプションを選択した場合、[XPath] という新しいオプションが表示されます。コンテンツをこのセクションの定義に従って継続処理する条件を表す XPath 式を入力できます。条件が評価される際、固定長ドキュメントから生成された XML ドキュメントに対して XPath 式が適用されます。
デフォルトの XPath は "count($section/*) < 1" です。この式の意味を確認してみましょう。$section は、このコンテキストにだけ適用される特別な XPath 変数です。この変数は、当該セクションを表す XML 要素を指します。"$section/*" は、セクション要素のすべての子要素を取得します。基本的に、このセクションに含まれるレコードを表すすべての XML 要素が取得されます。"count()" は通常の XPath 関数であり、渡されたノードセットのノード数をカウントします。結果として、"count($section/*)" は、それまでの処理で XML ドキュメントに追加されたレコードの数を返します。式全体は、「このドキュメントにすでに追加されたレコードの数が 1 より少ない場合にレコードをこのセクションに追加する」という意味になります。つまり、デフォルトでは 1 レコードだけが追加されます。
しかし多くの場合、読み取るべきレコード数は、ドキュメント内の他のフィールドによって指定されます。その場合、XPath を使用してレコード数を指定するフィールドを参照します。XPath は作成される XML ドキュメントに対して評価されるため、XML ドキュメント内の XML 要素を参照することを忘れないでください。ドキュメントに "NumberOfPets" というフィールドがある場合、子の要素を指す XPath は "$section/../NumberOfPets" となるでしょう。これは、「このセクションを表す XML 要素から開始して、1 つ上の親要素に移動し、NumberOfPets 要素を取得する」という意味になります。つまり、現在の要素の兄弟要素である "NumberOfPets" 要素を取得します。この場合、XPath 式全体は "count($section/*) < $section/../NumberOfPets" となるでしょう。
このコンテキスト固有の XPath 関数として、次の 2 つを使用できます: fixedlen:peek() および fixedlen:peek-starts-with()
fixedlen:peek()
この関数は、引数として 1 つの整数を受け取ります。この関数は、固定長ドキュメント内のまだ読み取りおよび XML への変換が行われていないコンテンツを先取りします。これは、このセクションに読み取るべきレコードがまだあるかどうかを、ファイルの後の部分のコンテンツに基づいて判断する場合に使用します。たとえば、次のようにレコードが "<" という文字で始まるケースを例とします。
Doe Jane< Cat Fluffy>< Dog Spot>
この場合、XPath 式は "fixedlen:peek(1) = '<'" となります。
fixedlen:peek-starts-with()
この関数は、引数として 1 つの文字列を受け取ります。この関数は、固定長ドキュメント内のまだ読み取りおよび XML への変換が行われていないコンテンツを先取りします。これは、このセクションに読み取るべきレコードがまだあるかどうかを、レコードの開始を通知する何らかの区切り文字に基づいて判断する場合に使用します。 たとえば、次のようにレコードが "<" という文字で始まるケースを例とします。
Doe Jane< Cat Fluffy>< Dog Spot>
この場合、XPath 式は "fixedlen:peek-starts-with('<')" となります。
fixedlen:peek-starts-with() 関数は、"starts-with(fixedlen:peek(1), '<')" という XPath 式と同じです。
デフォルトのオプションは greedy です。ネストされたサブセクションを処理しており、セクションがドキュメントの最後のコンテンツでない場合を除いて、通常はこのオプションを使用します。
[コンポーネント] セクションで、セクションに含まれるフィールドおよび/またはサブセクションの詳細を指定します。複数のフィールドおよび/またはサブセクションを追加できます。
フィールドを追加するには、次の操作を行います。
フィールドごとに以下を設定します。
サブセクションを追加するには、次の操作を行います。
全般的なセクションの詳細を設定する方法の詳細については、「2. セクションについての全般情報の指定」を参照してください。
データ モデル エディターの初期表示では、データ モデルはツリー構造を基にした表に表示されます。ツリー形式では、データ モデルの階層および構造を容易に確認することができます。ツリーが表形式で表示されるため、データ モデル 構造のコンテキスト内で値を編集できます。
このツリー-テーブル ビューでは、次のカテゴリのフィールドを編集することができます。
多数のフィールドにデータを入力する場合、ツリー形式から表形式に切り替えるとよいでしょう。表形式は、単一のセクションにフィールドをすばやく容易に入力することを可能にします。
表ビューに切り替えるには、次の操作を行います。
表ビューはスプレッドシートに似ています。セクションの各フィールドが表の一行で表され、表の列はフィールドのオプションに相当します。このビューでフィールドを追加するには、表の最終行を編集し、矢印キーまたは Enter キーを押します。
以下のボタンも使用できます。
データ モデルのメイン ビューに戻るには、[すべてのデータ モデルに戻る] ボタンをクリックします。
データ モデルにいくつものフィールドやセクションを定義した後、すでに定義したフィールドの途中に新しいフィールドを追加する必要があることに気付くケースがあるかもしれません。
そのような場合、次の操作を行います。
データ モデルを定義する過程で、データ モデルが固定長データ形式を正しく反映しているかを検証したい場合があるでしょう。
それには、次の操作を行います。
誤って定義されていたり、変更する必要がある点に気付く場合があるでしょう。その場合、データ モデルに戻って変更を行います。その後、クライアントに戻って変更を検証します。変更が大きく、既存の Fixed Length Client を再利用するより、新しく Fixed Length Client を追加するほうがよい場合もあるでしょう。
データ モデルに関連付けられた形式を SOAtest ツールで使用できるようにするためには、定義したデータ モデルを登録する必要があります。この登録は、固定長形式を使用するすべての SOAtest で行う必要があります。
データ モデルの登録には、2 つの方法があります。
Fixed Length Client を含むテストを使用して負荷テストを実行する場合、Load Test にも ([Load Test XML Preferences] > [XML 変換] エリアから) データモデルを登録する必要があります。 |
データ モデルを登録すると、固定長形式をサポートする以下のツールでデータ モデルを使用できるようになります。
固定長メッセージの構成または検証を行うには、これらのツールの [メッセージ タイプ] コンボ ボックスで、登録したデータ モデルを選択します。
以降は、これらのツールで固定長形式を使用する場合も、EDI 形式を使用する場合と同じように動作します。例外は、次のセクションで説明する固定長データのサンプルの生成です。ツールの使用方法の詳細については、「EDI Client」および 「Enhanced Call Back」を参照してください。
前のセクションで説明したようにメッセージ タイプを選択すると、SOAtest はフォーム入力ビューにサンプル XML を設定します。このサンプルは、そのまま何も修正せずに固定長データに変換できます。
固定長メッセージ タイプのデータ モデル定義に従って、XML のコンテンツが生成されます。XML には、定義で指定されたセクションおよびフィールドが含まれています。
セクションごとに XML 要素が追加されます。セクション要素には、レコード要素が含まれます。セクションの [次のレコードの条件] オプションの設定によって、セクションに追加されるレコードの数が決定されます。
条件 | 追加されるレコード |
---|---|
fixedCount | [レコード カウント] オプションによってレコード数が決定されます。 |
greedy | 1 レコードだけが追加されます。 |
xpath | XML を生成する際に XPath が評価されます。XPath が true に評価される場合、さらにレコードが追加されます。SOAtest は常に最低 1 つのレコードを追加します。また、まれにしか起こらないケースですが、XPath が多数回 true に評価される場合、100 を超えるレコードは追加しません (このように追加されるレコード数に制限があるため、XPath 条件を使用すると、まれに、サンプル XML を修正せずに固定長データに変換することができない場合があります)。 |
フィールドにはデフォルト値が設定されます。整数および小数フィールドには数値の 1 が設定されます。文字列フィールドには a という値が設定されます。サンプル XML を固定長形式に変換したとき、フィールドの始点と終点が分かりやすいよう、値なし (空の文字列) ではなく、このような値が使用されます。
次を参照: 固定長メッセージを使用する作業