DTL <assign>
構文
<assign property="propertyname" value="expression" />
属性
属性 | 説明 | 値 |
---|---|---|
property | 必須項目。この割り当てのターゲットであるプロパティです。 | 1 文字以上の文字列。 |
value | 必須項目。プロパティの値を指定します。 | プロパティの有効な値を指定する ObjectScript 式。 |
action | オプション。value がコレクション・プロパティ (リストまたは配列) の場合は、action を使用して、実行する割り当てのタイプを指定します。デフォルトは set アクションです。 | 以下の値、set、clear、remove、append、insert のいずれか 1 つです。詳細は、"アクション" の節を参照してください。 |
key | value がコレクション・プロパティ (リストまたは配列) である一部の場合を除き、オプション。該当する場合は、このキーを使用して割り当ての実行対象となる要素を指定します。 | 1 文字以上の文字列。この文字列は、キーとして評価される式です。 |
要素
要素 | 目的 |
---|---|
<annotation> | オプション。<assign> 要素について記述するテキスト文字列。 |
説明
DTL の <assign> 要素は、DTL <transform> 要素内から、ターゲット・プロパティとそのプロパティに値を割り当てる式を指定するために使用されます。一般に、この式はデータ変換のソース・オブジェクトから取得した値を含みますが、リテラル値も使用できます。DTL の <assign> アクティビティに含まれるプロパティはすべて、データ変換のソースまたはターゲット・オブジェクト内のプロパティでなければなりません。
メッセージ で説明されているように、ソース・オブジェクトおよびターゲット・オブジェクトは、通常、プロダクション・メッセージ本文オブジェクトです。これらは、メッセージ・ヘッダとメッセージ本文オブジェクトで構成されます。
標準のプロダクション・メッセージ本文のプロパティは、データ型、オブジェクト、またはこれらいずれかのコレクションです。コレクション・プロパティは、クラス定義で [ Collection = list ] または [ Collection = array ] のいずれかで宣言されます。標準のプロダクション・メッセージ本文のプロパティは、任意のオブジェクト・プロパティについて、ドット構文を使用して参照できます。
仮想ドキュメントのプロパティには独自の構文が必要です (次のトピックを参照)。
<assign> 要素のアクション
DTL の <assign> 操作には、オプションの action 属性で指定される、いくつかのタイプがあります。デフォルト値の set を除くと、このようなアクションは、標準のプロダクション・メッセージ本文内のコレクション・プロパティに関係した割り当てを処理するためのものです。以下の表に、<assign> 要素のアクションを説明します。
アクションの割り当て | 説明 | 例 |
---|---|---|
set | 指定したプロパティの値を value 属性の値に設定します。value 属性は、式を含んでおり、それ自体がオブジェクトまたはオブジェクトのプロパティを参照できます。 | 以下の文では、ターゲットの BankName プロパティの値が次のように設定されます。<assign property='target.BankName' value='process.BankName' action='set'/> |
append | リスト・プロパティの最後にターゲット要素を追加します。 | |
clear | 指定したコレクション・プロパティの内容を消去します。value 属性と key 属性は無視されます。(これは、コレクション・プロパティにのみ当てはまります。) | 以下の文では、コレクション・プロパティ List の内容が消去されます。<assign property='target.List' action='clear' /> |
insert | 指定したコレクション・プロパティに値を挿入します。key 属性が存在する場合は、key で指定された位置 (整数) の後ろに新しい値が挿入されます。指定がない場合、新しい項目は末尾に追加されます。(これは、リスト・コレクション・プロパティにのみ当てはまります。) | 以下の文では、キー primary を使用して、値が配列コレクション・プロパティ Array に挿入されます。<assign property='target.Array' action='insert' key='primary' value='source.Primary' /> |
remove | 指定したコレクション・プロパティからアイテムを削除します。value 属性は無視されます。(これは、コレクション・プロパティにのみ当てはまります。) |
仮想ドキュメントでは、set 以外の action 値は使用されません。
set アクションでは、指定したプロパティの値が value 属性の値に設定されます。value 属性は、以下のように、式を含んでおり、それ自体がオブジェクトまたはオブジェクトのプロパティを参照できます。
<assign property='target.SSN' value='source.SSN' />
ターゲット・プロパティが配列コレクションの場合、key 属性の値は配列内のアイテムを指定します。それ以外の場合、key 属性は無視されます。
ターゲット・プロパティがコレクションで、value 属性で以下のように同じタイプが指定されている場合は、コレクションの内容がターゲット・コレクションにコピーされます。
<assign property='target.List' value='source.List' />
assign 要素のデフォルトのアクションは set 操作です。action が指定されていない場合、assign では set 操作が指定されます。
オブジェクトとオブジェクト参照
ソースとして別のオブジェクトの任意のオブジェクト・プロパティまたは最上位のソース・オブジェクトから <assign> する場合、ターゲットは、オブジェクト自体ではなくそのオブジェクトの複製されたコピーを受け取ります。これにより、オブジェクト参照の不注意な共有を避け、ユーザ自身が複製オブジェクトを生成する手間を省きます。ただし、ソースとターゲットの間でオブジェクト参照を共有したい場合は、ソースから中間の一時的な変数に <assign> して、その後、その変数からターゲットに <assign> します。
一斉コピー
ソースの完全コピーであるターゲット・オブジェクトを作成するには、以下を使用しないでください。
<assign property='target' value='source' />
代わりに、含まれる <transform> 要素内で create='copy' 属性を使用します。
create オプションは、以下の値のいずれかを持つことができます。
-
new — データ変換内の要素を実行する前に、ターゲット・タイプの新しいオブジェクトを作成します。これがデフォルトです。
-
copy — 変換内の要素を実行する前に、ターゲット・オブジェクトとして使用するソース・オブジェクトのコピーを作成します。
-
existing — ターゲット・オブジェクトとしてデータ変換の呼び出し側により指定される既存のオブジェクトを使用します。