Assign アクションの追加
ここでは、DTL 変換にさまざまな assign アクションを追加する方法について詳しく説明します。
仮想ドキュメントでは、データ変換内のエスケープ・シーケンスを手動で変更しないでください。これらは InterSystems IRIS® によって自動的に処理されます。
その他の種類のアクションの追加方法は、次の章を参照してください。
アクションのグループを操作する方法の詳細は、"アクションのグループの操作" を参照してください。
概要
assign アクションには、set、clear、remove、append、および insert の 5 種類があります。assign アクションを作成してから、そのタイプを変更できます。これを実現するには、[アクション] タブの [アクション] ドロップダウンで別の値を選択します。
InterSystems IRIS では、それぞれの assign アクションが DTL ダイアグラム内のコネクタ線で表現されます。
オブジェクトとオブジェクト参照
ソースとして別のオブジェクトの任意のオブジェクト・プロパティまたは最上位のソース・オブジェクトから assign する場合、ターゲットは、オブジェクト自体ではなくそのオブジェクトの複製されたコピーを受け取ります。これにより、オブジェクト参照の不注意な共有を避け、ユーザ自身が複製オブジェクトを生成する手間を省きます。
代わりに、ソースとターゲット間でオブジェクト参照を共有する場合は、ソースから中間一時変数に assign してから、その変数からターゲットに assign する必要があります。
ソース・メッセージのコピー
ソース・メッセージをコピーする assign アクションを作成するには:
-
ソース・メッセージの右にある円形のタブをドラッグします。マウス・ボタンを押さえます。
-
カーソルをターゲット・メッセージの左にある三角形のタブにそのボックスの色が変化するまでドラッグします。
-
左マウス・ボタンを放します。
ソース・プロパティからターゲット・プロパティへの値のコピー
ソース・プロパティからターゲット・プロパティに値をコピーする assign アクションを作成するには:
-
ソース・プロパティからターゲット・プロパティに値をドラッグします。これを行うには、以下を実行します。
-
ソース・プロパティの右にある丸いタブをクリックします。マウス・ボタンを押さえます。画面には以下のように表示されます。
-
カーソルをターゲット・プロパティの左にある三角形のタブにそのボックスの色が変化するまでドラッグします。画面には以下のように表示されます。
-
左マウス・ボタンを放します。画面には以下のように表示されます。
これで、ダイアグラムの下のテーブルに assign アクションの詳細が表示されます。
-
-
オプションで、[アクション] タブで詳細を編集します。
この assign アクションでは set が使用されています。
すべてのサブプロパティの値のコピー
ソースとターゲット内の親プロパティが同じであり、ソースとターゲットが同じタイプの場合は、すべてのサブプロパティの値を一度に割り当てることができます。その場合、親プロパティを展開してサブプロパティを表示する必要はありません。ソース側の親プロパティからターゲット側の親プロパティにカーソルをドラッグするだけです。
以下の DTL ダイアグラムでは、ソース側とターゲット側の EVN プロパティ間の 1 つのコネクタに次の EVN のサブプロパティのすべてが含まれます。
-
EventTypeCode
-
RecordedDateTime とそのすべてのサブプロパティ
-
DateTimePlannedEvent とそのすべてのサブプロパティ
-
EventReasonCode
-
OperatorID、そのすべての反復、およびそのすべてのサブプロパティ
-
EventOccurred とそのすべてのサブプロパティ
この assign アクションでは set が使用されています。
ソースとターゲットのタイプが異なる場合は、構造が並列であるように見える場合でも、この機能を使用してサブプロパティを割り当てることはできません。このような変換の場合は、構造の各リーフ・ノードを別々に割り当てて、for each アクションをプロセス反復に追加する必要があります。for each アクションの詳細は、"For Each アクションの追加" を参照してください。
ターゲット・プロパティへのリテラル値の割り当て
ターゲット・プロパティにリテラル値を割り当てるには:
-
ターゲット・プロパティを選択します。
-
[アクション追加] ドロップダウン・リストで [set] をクリックします。この操作の [アクション] タブが表示されます。
-
[値] フィールドにリテラルの数値または文字列値を入力します。
-
数値リテラルはただの数字です。例えば、42.3 などです。
-
文字列リテラルは二重引用符で囲まれた文字列です。例えば、"ABD" などです。
Note:この文字列には XML 予約文字を含めることができません。仮想ドキュメントの場合は、この文字列に仮想ドキュメント形式で使用されるセパレータ文字を含めることができません。詳細は、"構文ルール" を参照してください。
-
-
[保存] をクリックします。
ターゲット・プロパティの値に対する式の使用
前の節で説明したリテラル値は単純な式の種類です。ターゲット・プロパティの値としてもっと複雑な式を使用したい場合があります。これを実現するには、以下のどちらかを実行します。
-
関数を使用した式を作成する場合は、[値] フィールドの横にある検索ボタン をクリックします。これにより、以降の項で説明するデータ変換関数ウィザードが呼び出されます。
-
より複雑な式を作成する場合は、[値] フィールドに式を入力します。
"有効な式" を参照してください。データ変換用に選択されたスクリプティング言語で書かれた式が有効なことを確認します。"変換詳細の指定" を参照してください。
データ変換関数ウィザードの使用法
データ変換関数ウィザードを使用するには:
-
ドロップダウン・リストから [関数] を選択します。
必要に応じて、式を定義するための複数のフィールドが表示されます。
ドロップダウン・リストから [現在の関数を繰り返す] を選択した場合は、現在の関数のコピーがその関数自体のパラメータとして挿入されて、その関数の再帰呼び出しが作成されます。
-
必要に応じてフィールドを編集します。手順は、ダイアログ内のコンテキスト依存ヘルプを参照してください。
-
[OK] をクリックして変更内容を保存し、ウィザードを終了します。
コレクション項目への値の割り当て
この節は、次の種類のコレクションに適用されます。
-
標準プロダクション・メッセージ内のコレクション・プロパティ
-
XML 仮想ドキュメント内の繰り返しフィールド
コレクションから項目の値を変更するには:
-
ターゲット・リスト・プロパティまたはターゲット配列プロパティを選択します。
-
[アクション追加] ドロップダウン・リストで [set] をクリックします。この操作の [アクション] タブが表示されます。
-
[プロパティ] フィールドで、変更する項目を指定するようにかっこ内の値を編集します。
配列プロパティの場合は、配列項目のキーを使用します。リスト・プロパティの場合は、リスト項目のインデックスを使用します。仮想ドキュメント内の繰り返しフィールドの場合は、セグメントまたはフィールドのインデックスを使用します。
例えば、以下のように表示されていたとします。
target.MyArrayProp.(1)
代わりに以下を含むようにフィールドを編集します。
target.MyArrayProp("key2")
-
リテラル値またはその他の有効な式を含むように [値] を編集します。
"有効な式" を参照してください。データ変換用に選択されたスクリプティング言語で書かれた式が有効なことを確認します。"変換詳細の指定" を参照してください。
-
[保存] をクリックします。
以下に例を示します。
または、表示された値から最後の .(1) を削除するように [プロパティ] フィールドを編集します。その後で、次の節で説明するように、[キー] を使用して変更する項目を指定します。以下に例を示します。
リスト項目の挿入
この節は、標準プロダクション・メッセージ内のリスト・プロパティに適用されます (配列プロパティには適用されません)。このアクションは XML 仮想ドキュメントでも使用できます。"プロダクション内での XML 仮想ドキュメントのルーティング" を参照してください。
リストに項目を挿入するには:
-
ターゲット・リスト・プロパティまたはターゲット配列プロパティを選択します。
-
[アクション追加] ドロップダウン・リストで [insert] をクリックします。この操作の [アクション] タブが表示されます。
-
[プロパティ] フィールドで、表示された値から最後の .(1) を削除します。
例えば、以下のように表示されていたとします。
target.MyListProp.(1)
代わりに以下を含むようにフィールドを編集します。
target.MyListProp
-
リテラル値またはその他の有効な式を含むように [値] を編集します。
"有効な式" を参照してください。データ変換用に選択されたスクリプティング言語で書かれた式が有効なことを確認します。"変換詳細の指定" を参照してください。
-
[キー] で、新しい項目のインデックス位置を指定します。
以下に例を示します。
5
-
[保存] をクリックします。
以下に例を示します。
リスト項目の追加
この節は、標準プロダクション・メッセージ内のリスト・プロパティに適用されます (配列プロパティには適用されません)。このアクションは XML 仮想ドキュメントでも使用できます。"プロダクション内での XML 仮想ドキュメントのルーティング" を参照してください。
リストに項目を挿入するには:
-
ターゲット・リスト・プロパティまたはターゲット配列プロパティを選択します。
-
[アクション追加] ドロップダウン・リストで [append] をクリックします。この操作の [アクション] タブが表示されます。
-
[プロパティ] フィールドで、表示された値から最後の .(1) を削除します。
例えば、以下のように表示されていたとします。
target.MyListProp.(1)
代わりに以下を含むようにフィールドを編集します。
target.MyListProp
-
リテラル値またはその他の有効な式を含むように [値] を編集します。
"有効な式" を参照してください。データ変換用に選択されたスクリプティング言語で書かれた式が有効なことを確認します。"変換詳細の指定" を参照してください。
-
[保存] をクリックします。
以下に例を示します。
コレクション項目の削除
この節は、標準プロダクション・メッセージ内のコレクション・プロパティ (リストと配列) に適用されます。このアクションは XML 仮想ドキュメントでも使用できます。"プロダクション内での XML 仮想ドキュメントのルーティング" を参照してください。
コレクションから項目を削除するには:
-
ターゲット・リスト・プロパティまたはターゲット配列プロパティを選択します。
-
[アクション追加] ドロップダウン・リストで [remove] をクリックします。この操作の [アクション] タブが表示されます。
-
[プロパティ] フィールドで、表示された値から最後の .(1) を削除します。
例えば、以下のように表示されていたとします。
target.MyArrayProp.(1)
代わりに以下を含むようにフィールドを編集します。
target.MyArrayProp
-
[キー] で、削除する項目を指定します。
配列プロパティの場合は、配列項目のキーを使用します。リスト・プロパティの場合は、リスト項目のインデックスを使用します。仮想ドキュメント内の繰り返しフィールドの場合は、セグメントまたはフィールドのインデックスを使用します。
例えば、以下のように指定します。
"key2"
-
[保存] をクリックします。
以下に例を示します。
コレクション・プロパティの消去
この節は、標準プロダクション・メッセージ内のコレクション・プロパティ (リストと配列) に適用されます。このアクションは XML 仮想ドキュメントでも使用できます。"プロダクション内での XML 仮想ドキュメントのルーティング" を参照してください。
コレクションの内容を消去するには:
-
ターゲット・リスト・プロパティまたはターゲット配列プロパティを選択します。
-
[アクション追加] ドロップダウン・リストで [clear] をクリックします。この操作の [アクション] タブが表示されます。
-
[プロパティ] フィールドで、表示された値から最後の .(1) を削除します。
例えば、以下のように表示されていたとします。
target.MyArrayProp.(1)
代わりに以下を含むようにフィールドを編集します。
target.MyArrayProp
-
[保存] をクリックします。
以下に例を示します。