データ変換のテスト
データ変換クラスをコンパイルしたら、それをテストできます (テストすべきです)。ここでは、その方法について説明します。
このトピックは、DTL 変換とカスタム変換の両方に適用されます。
変換テスト・ページの使用法
管理ポータルで、変換テスト・ウィザードを使用できます。このウィザードには、管理ポータルの以下の場所からアクセスできます。
-
データ変換ビルダの [ツール] タブで [テスト] をクリックします。
-
変換を選択して、[データ変換リスト] ページで [テスト] をクリックします。
初期状態では [出力メッセージ] ウィンドウは空で、[入力メッセージ] ウィンドウにはソース・メッセージに適した形式のテキスト・スケルトンが入力されています。テストするには、以下の手順を実行します。
-
DTL コードが aux、コンテキスト、またはプロセス・システム・オブジェクトのプロパティを参照する場合、これらのプロパティの値を入力して、これらのオブジェクトがインスタンス化された状態でデータ変換が呼び出された場合と同様に結果を表示します。値を入力するテーブルが表示されるのは、DTL が aux、プロセス、またはコンテキスト・システム・オブジェクトの内部プロパティを参照する場合のみです。
-
適切なデータが含まれるように、[入力メッセージ] を編集します。この入力ボックスに表示される内容と入力する内容は、次のようにソースのタイプとクラスに応じて異なります。
-
EDI メッセージの場合は、このウィンドウには生のテキストが表示されます。したがって、いくつかの保存されたテキスト・ファイルを用意し、これらのファイルから [入力メッセージ] ボックスにテキストをコピー・アンド・ペーストできるようにします。
-
通常のプロダクション・メッセージの場合は、このウィンドウには、メッセージ・オブジェクト内の各プロパティのエントリを持つ XML スケルトンが表示されます。したがって、各プロパティの値を入力します。
-
レコード・マップ、複雑なレコード・マップ、およびバッチ・レコード・マップについては、未加工のテキストまたは XML を入力できます。
-
-
[テスト] をクリックします。
-
[出力メッセージ] ボックスで結果を確認します。
以下に例を示します。
プログラムによる変換のテスト
変換をプログラムを使ってテストするには、ターミナルで以下を実行します (またはこれらのステップを含むルーチンまたはクラス・メソッドを作成します)。
-
ソース・メッセージ・クラスのインスタンスを作成します。
-
そのインスタンスのプロパティを設定します。
-
変換クラスの Transform() クラス・メソッドを呼び出します。このメソッドには、以下のシグニチャがあります。
classmethod Transform(source As %RegisteredObject, ByRef target As %RegisteredObject) as %Status
説明 :
-
source はソース・メッセージです。
-
target は変換によって作成されたターゲット・メッセージです。
-
-
ターゲット・メッセージを検査して、期待どおりに変換されているかどうかを確認します。XML 形式の両方のメッセージを簡単に検査するには、次の手順を実行します。
-
%XML.WriterOpens in a new tab のインスタンスを作成します。
-
オプションで、そのインスタンスの Indent プロパティを 1 に設定します。
これにより、出力に改行が追加されます。
-
ソース・メッセージを引数として渡す Writerインスタンスの RootObject() メソッドを呼び出します。
-
Writerインスタンスを強制終了します。
-
ターゲット・メッセージで繰り返します。
-
以下に例を示します。
//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)