Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

データ変換のテスト

データ変換クラスをコンパイルしたら、それをテストできます (テストすべきです)。この章では、その方法について説明します。

Note:

この章は、DTL 変換とカスタム変換の両方に適用されます。

変換テスト・ページの使用法

管理ポータルで、変換テスト・ウィザードを使用できます。このウィザードには、管理ポータルの以下の場所からアクセスできます。

  • データ変換ビルダの [ツール] タブで [テスト] をクリックします。

  • 変換を選択して、[データ変換リスト] ページで [テスト] をクリックします。

初期状態では [出力メッセージ] ウィンドウは空で、[入力メッセージ] ウィンドウにはソース・メッセージに適した形式のテキスト・スケルトンが入力されています。テストするには、以下の手順を実行します。

  1. DTL コードが aux、コンテキスト、またはプロセス・システム・オブジェクトのプロパティを参照する場合、これらのプロパティの値を入力して、これらのオブジェクトがインスタンス化された状態でデータ変換が呼び出された場合と同様に結果を表示します。値を入力するテーブルが表示されるのは、DTL が aux、プロセス、またはコンテキスト・システム・オブジェクトの内部プロパティを参照する場合のみです。

  2. 適切なデータが含まれるように、[入力メッセージ] を編集します。この入力ボックスに表示される内容と入力する内容は、次のようにソースのタイプとクラスに応じて異なります。

    • EDI メッセージの場合は、このウィンドウには生のテキストが表示されます。したがって、いくつかの保存されたテキスト・ファイルを用意し、これらのファイルから [入力メッセージ] ボックスにテキストをコピー・アンド・ペーストできるようにします。

    • 通常のプロダクション・メッセージの場合は、このウィンドウには、メッセージ・オブジェクト内の各プロパティのエントリを持つ XML スケルトンが表示されます。したがって、各プロパティの値を入力します。

    • レコード・マップ、複雑なレコード・マップ、およびバッチ・レコード・マップについては、未加工のテキストまたは XML を入力できます。

  3. [テスト] をクリックします。

  4. [出力メッセージ] ボックスで結果を確認します。

以下に例を示します。

An example of a tested output message.

プログラムによる変換のテスト

変換をプログラムを使ってテストするには、ターミナルで以下を実行します (またはこれらのステップを含むルーチンまたはクラス・メソッドを作成します)。

  1. ソース・メッセージ・クラスのインスタンスを作成します。

  2. そのインスタンスのプロパティを設定します。

  3. 変換クラスの Transform() クラス・メソッドを呼び出します。このメソッドには、以下のシグニチャがあります。

    classmethod Transform(source As %RegisteredObject, ByRef target As %RegisteredObject) as %Status
    

    説明 :

    • source はソース・メッセージです。

    • target は変換によって作成されたターゲット・メッセージです。

  4. ターゲット・メッセージを検査して、期待どおりに変換されているかどうかを確認します。XML 形式の両方のメッセージを簡単に検査するには、次の手順を実行します。

    1. %XML.WriterOpens in a new tab のインスタンスを作成します。

    2. オプションで、そのインスタンスの Indent プロパティを 1 に設定します。

      これにより、出力に改行が追加されます。

    3. ソース・メッセージを引数として渡す Writerインスタンスの RootObject() メソッドを呼び出します。

    4. Writerインスタンスを強制終了します。

    5. ターゲット・メッセージで繰り返します。

以下に例を示します。

 //create an instance of the source message
 set source=##class(DTLTest.Message).CreateOne()
 set writer=##class(%XML.Writer).%New()
 set writer.Indent=1 do writer.RootObject(source)
 write !!
 set sc=##class(DTLTest.Xform1).Transform(source,.target)
 if $$$ISERR(sc)
  {do $system.Status.DisplayError(sc)}
 set writer=##class(%XML.Writer).%New()
 set writer.Indent=1
 do writer.RootObject(target)
FeedbackOpens in a new tab