このセクションの内容:
EDI メッセージでの作業EDI Client は、EDI ドキュメントを送るためのツールです。現在、AL3、CARGO、EANCOM、EDIFACT、EDIGAS、HIPAA、HL7、IATA、NCPDP、TELCO、TRADACOMS、および X12 がサポートされます。このツールは、XML をユーザーが活用できるようにすることで、読むのが難しいことが多い EDI の使用を簡単にします。 ユーザーは EDI リクエスト ペイロードを XML ドキュメントとしてモデル化することができます。EDI Client は、メッセージを送る前に XML を EDI に自動的に変換します。 サーバーが EDI メッセージを返す場合、クライアントはメッセージを XML に変換できます。そのため、ユーザーは XML Assertor や XML Data Bank といったツールをレスポンスに連結することができます。
新しい EDI Client の作成
新しい EDI Client を作成するには、以下の操作を行います。
- 以下の操作を行って、新しい空の .tst ファイルを作成します。
- [ファイル] > [新規] > [プロジェクト] を選択します。
- [SOAtest] > [空のプロジェクト] を選択し、[次へ] をクリックします。
- プロジェクト名を入力して [終了] をクリックします。
- 以下の操作を行って、新しい EDI Client を作成します。
- 新しいテスト スイート ノードを右クリックし、[新規追加] > [テスト] を選択します。
- [EDI Client] を選択して [終了] をクリックします。
- EDI Client ツールの [リクエスト] タブに移動し、[入力モード] を [リテラル] に変更します。
以下のテキストを貼り付けます。
UNA:+.? ~ UNB+IATB:1+6XPPC+LHPPC+940101:1950+1~ UNH+1+PAORES:93:1:IA~ MSG+1:45~ IFT+3+XYZCOMPANY AVAILABILITY~ ERC+A7V:1:AMD~ IFT+3+NO MORE FLIGHTS~ ODI~ TVL+240493:1000::1220+FRA+JFK+DL+400+C~ PDI++C:3+Y::3+F::1~ APD+74C:0:::6++++++6X~ TVL+240493:1740::2030+JFK+MIA+DL+081+C~ PDI++C:4~ APD+EM2:0:1630::6+++++++DA~ UNT+13+1~ UNZ+1+1~
- [入力モード] を [リテラル] から [フォーム入力] に変更し、値を上書きすることを確認します。[ダイアレクト]、[バージョン]、[メッセージ タイプ] がすでに自動的に設定されている点に注意してください。
- [トランスポート] タブに移動して [ルーター エンドポイント] フィールドに http://localhost:8080/parabank/echo.jsp と入力し、エディターを保存します。
EDI Client を実行します。 - Traffic Viewer を開きます。
リクエストが EDI 形式で送られた点に注意してください。ただし、各行はオリジナル メッセージにあった "~" 文字ではなく引用符で終了しています。EDI Client のデフォルトのセグメント区切りは、私達がメッセージで使用したいセグメント区切り文字ではありません。
EDI 変換オプションの設定
では、正しいセグメント区切り (行端の文字) を使って EDI コンテンツを送信するように設定しましょう。
- 以下の操作を行って、Diff 出力を追加します。
- EDI Client を右クリックし、[出力の追加] を選択します。
- [リクエスト] > [ペイロード] と [Diff] を選択し、[終了] をクリックします。
- 上記と同じテキストを Diff ツールに貼り付けます。
- [オプション] タブを開き、[空白を無視] チェックボックスをオンにします。上記のテキストをコピーして Diff ツールに貼り付けると、改行文字が挿入されます。[空白を無視] オプションをオンにすると、これらの文字が差異としてレポートされません。
- Diff ツールを保存します。
- EDI Client を再び実行します。16 行が変更されたので、テストは失敗するはずです。これは予想どおりの結果です。なぜなら、EDI Client はオリジナル メッセージと異なるセグメント区切りを使用しているからです。
- 以下の操作を行って、EDI Client の変換オプションを変更します。
- EDI Client ツールの [変換オプション] タブを開きます。
- [セグメント区切り] オプションに ~ と入力します。
- EDI Client を保存します。
- EDI Client を再び実行します。今回は成功するはずです。
小数点記号がピリオド (.) ではなくカンマ (,) であるロケールでは、1 行目で 1 個のテストが失敗するでしょう。これは、小数点記号が異なるためです。
EDI メッセージの設定
EDI Client を使用する主な理由のひとつは、EDI メッセージを簡単に設定できることです。EDI メッセージのフィールドのひとつをパラメータライズしましょう。
- 以下の操作を行って、新しいテーブル データ ソースを作成します。
- テスト スイート ノードを右クリックし、[新規追加] > [データ ソース] を選択します。
- [テーブル] を選択して [終了] をクリックします。
- データ ソース名を Companies にします。
- [1行目は列名を表す] チェックボックスをオンにします。
- 1 列目に、列名として Company Availability と入力します。そして行 1 と行 2 にそれぞれ XYZCOMPANY AVAILABILITY および PARASOFT AVAILABILITY と入力します。
- データ ソースを保存します。
- 作成した最初の EDI Client をコピーし (右クリックして [コピー] を選択し)、同じテスト スイートに貼り付けます。
- 新しい EDI Client で、Request Payload に連結された Diff ツールを削除します。
- 新しい EDI Client の[リクエスト] タブで、[入力モード] が [フォーム入力] に設定されていることを確認します。
- フォーム入力で表示されるツリーで、1 番目の IFT02-FreeText ノードを選択します (このノードへのフルパスは "IATA/PAORES/IFT-InteractiveFreeText/IFT02-FreeText" です)。
- 右側のドロップダウン メニューで、[固定] を [パラメータライズ] に変更します。
[パラメータライズ] の右側のコンボ ボックスに、Company Availability というデータ ソース列が表示されているはずです。
- EDI Client を保存します。
- テストを実行します。
- テスト 2: EDI Client の Traffic Viewer を開くと、テストが 2 回実行されたことが分かります。データ ソース中の各行につき 1 回テストが実行されました。
EDI コンテンツの検証
現在 EDI Client は、送られたリクエストとまったく同じ内容を単純に返すサービスにリクエストを送るように設定されています。したがって、 EDI Client はリクエストで送ったものと同じ EDI コンテンツをレスポンスで受け取っています。この EDI コンテンツの検証をセットアップしましょう。
- 以下の操作を行って、新しい XML Assertor 出力を追加します。
- パラメータライズされた EDI Client (2 番目のもの) を右クリックし、[出力の追加] を選択します。
- レスポンス > XML に変換されたペイロード と XML Assertor を選択し、[終了] をクリックします。
- テストを再び実行して XML Assertor のコンテンツを投入します。
- 以下の操作を行って、XML Assertor を設定します。
- XML Assertor の [構成] タブに移動します。
- [追加] ボタンをクリックし、[値アサーション] を選択して [次へ] をクリックします。
- [値アサーション] を選択して [次へ] をクリックします。
- 表示されるツリーで、最初の IFT02-FreeText ノードを選択し、[終了] をクリックします (このノードへのフル パスは "IATA/PAORES/IFT-InteractiveFreeText/IFT02-FreeText" です)。
- [期待値] フィールドに XYZCOMPANY AVAILABILITY と入力します。
- XML Assertor を保存します。
- テストを実行します。 次のメッセージを表示してテストは失敗するはずです。DataSource: Companies (row 2): Value Assertion: 要素 "../IFT02-FreeText" の期待値は XYZCOMPANY AVAILABILITY ですが、 PARASOFT AVAILABILITY でした
この不一致が発生する原因は、リクエストはパラメータライズされていますが、XML Assertor はされていないからです。 - XML Assertor の [期待値] フィールドを [パラメータライズ] に変更します。右側のコンボボックスにデータ ソースの列 "Company Availability" が表示されるはずです。
- XML Assertor を保存します。
- テストを実行します。今回は成功するはずです。
これらの演習に対応する .tst ファイルは、 <SOAtest install dir>/examples/tests/EDI にあります。