このセクションの内容:

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 を作成するには、以下の操作を行います。

  1. 以下の操作を行って、新しい空の .tst ファイルを作成します。
    1. [ファイル] > [新規] > [プロジェクト] を選択します。
    2. [SOAtest] > [空のプロジェクト] を選択し、[次へ] をクリックします。
    3. プロジェクト名を入力して [終了] をクリックします。
  2. 以下の操作を行って、新しい EDI Client を作成します。
    1. 新しいテスト スイート ノードを右クリックし、[新規追加] > [テスト] を選択します。
    2. [EDI Client] を選択して [終了] をクリックします。



  3. EDI Client ツールの [リクエスト] タブに移動し、[入力モード] を [リテラル] に変更します。



  4. 以下のテキストを貼り付けます。

    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~
  5. [入力モード] を [リテラル] から [フォーム入力] に変更し、値を上書きすることを確認します。[ダイアレクト]、[バージョン]、[メッセージ タイプ] がすでに自動的に設定されている点に注意してください。



  6. [トランスポート] タブに移動して [ルーター エンドポイント] フィールドに http://localhost:8080/parabank/echo.jsp と入力し、エディターを保存します。



    EDI Client を実行します。 
  7. Traffic Viewer を開きます。



リクエストが EDI 形式で送られた点に注意してください。ただし、各行はオリジナル メッセージにあった "~" 文字ではなく引用符で終了しています。EDI Client のデフォルトのセグメント区切りは、私達がメッセージで使用したいセグメント区切り文字ではありません。

EDI 変換オプションの設定

では、正しいセグメント区切り (行端の文字) を使って EDI コンテンツを送信するように設定しましょう。

  1. 以下の操作を行って、Diff 出力を追加します。
    1. EDI Client を右クリックし、[出力の追加] を選択します。
    2. [リクエスト] > [ペイロード] と [Diff] を選択し、[終了] をクリックします。



  2. 上記と同じテキストを Diff ツールに貼り付けます。



  3. [オプション] タブを開き、[空白を無視] チェックボックスをオンにします。上記のテキストをコピーして Diff ツールに貼り付けると、改行文字が挿入されます。[空白を無視] オプションをオンにすると、これらの文字が差異としてレポートされません。



  4. Diff ツールを保存します。
  5. EDI Client を再び実行します。16 行が変更されたので、テストは失敗するはずです。これは予想どおりの結果です。なぜなら、EDI Client はオリジナル メッセージと異なるセグメント区切りを使用しているからです。



  6. 以下の操作を行って、EDI Client の変換オプションを変更します。
    1. EDI Client ツールの [変換オプション] タブを開きます。
    2. [セグメント区切り] オプションに ~ と入力します。



    3. EDI Client を保存します。
  7. EDI Client を再び実行します。今回は成功するはずです。

小数点記号がピリオド (.) ではなくカンマ (,) であるロケールでは、1 行目で 1 個のテストが失敗するでしょう。これは、小数点記号が異なるためです。

EDI メッセージの設定

EDI Client を使用する主な理由のひとつは、EDI メッセージを簡単に設定できることです。EDI メッセージのフィールドのひとつをパラメータライズしましょう。

  1. 以下の操作を行って、新しいテーブル データ ソースを作成します。
    1. テスト スイート ノードを右クリックし、[新規追加] > [データ ソース] を選択します。
    2. [テーブル] を選択して [終了] をクリックします。



    3. データ ソース名を Companies にします。
    4. [1行目は列名を表す] チェックボックスをオンにします。
    5. 1 列目に、列名として Company Availability と入力します。そして行 1 と行 2 にそれぞれ XYZCOMPANY AVAILABILITY および PARASOFT AVAILABILITY と入力します。    



    6. データ ソースを保存します。
  2. 作成した最初の EDI Client をコピーし (右クリックして [コピー] を選択し)、同じテスト スイートに貼り付けます。
  3. 新しい EDI Client で、Request Payload に連結された Diff ツールを削除します。



  4. 新しい EDI Client の[リクエスト] タブで、[入力モード] が [フォーム入力] に設定されていることを確認します。
  5. フォーム入力で表示されるツリーで、1 番目の IFT02-FreeText ノードを選択します (このノードへのフルパスは "IATA/PAORES/IFT-InteractiveFreeText/IFT02-FreeText" です)。
  6. 右側のドロップダウン メニューで、[固定] を [パラメータライズ] に変更します。



    [パラメータライズ] の右側のコンボ ボックスに、Company Availability というデータ ソース列が表示されているはずです。


     
  7. EDI Client を保存します。
  8. テストを実行します。
  9. テスト 2: EDI Client の Traffic Viewer を開くと、テストが 2 回実行されたことが分かります。データ ソース中の各行につき 1 回テストが実行されました。

EDI コンテンツの検証

現在 EDI Client は、送られたリクエストとまったく同じ内容を単純に返すサービスにリクエストを送るように設定されています。したがって、 EDI Client はリクエストで送ったものと同じ EDI コンテンツをレスポンスで受け取っています。この EDI コンテンツの検証をセットアップしましょう。

  1. 以下の操作を行って、新しい XML Assertor 出力を追加します。
    1. パラメータライズされた EDI Client (2 番目のもの) を右クリックし、[出力の追加] を選択します。
    2. レスポンス > XML に変換されたペイロード と XML Assertor を選択し、[終了] をクリックします。



  2. テストを再び実行して XML Assertor のコンテンツを投入します。
  3. 以下の操作を行って、XML Assertor を設定します。
    1. XML Assertor の [構成] タブに移動します。
    2. [追加] ボタンをクリックし、[値アサーション] を選択して [次へ] をクリックします。



    3. [値アサーション] を選択して [次へ] をクリックします。



    4. 表示されるツリーで、最初の IFT02-FreeText ノードを選択し、[終了] をクリックします (このノードへのフル パスは "IATA/PAORES/IFT-InteractiveFreeText/IFT02-FreeText" です)。



    5. [期待値] フィールドに XYZCOMPANY AVAILABILITY と入力します。



    6. XML Assertor を保存します。
  4. テストを実行します。  次のメッセージを表示してテストは失敗するはずです。DataSource: Companies (row 2): Value Assertion: 要素 "../IFT02-FreeText" の期待値は XYZCOMPANY AVAILABILITY ですが、 PARASOFT AVAILABILITY でした



    この不一致が発生する原因は、リクエストはパラメータライズされていますが、XML Assertor はされていないからです。
  5. XML Assertor の [期待値] フィールドを [パラメータライズ] に変更します。右側のコンボボックスにデータ ソースの列 "Company Availability" が表示されるはずです。



  6. XML Assertor を保存します。
  7. テストを実行します。今回は成功するはずです。

これらの演習に対応する .tst ファイルは、 <SOAtest install dir>/examples/tests/EDI にあります。

  • No labels