
エディタは、入力中に式を検証します。無効な式というメッセージが表示された場合は、構文に何らかの問題があります。これは通常、角括弧、丸括弧、スラッシュなどの予約文字をエスケープしていないことが原因で起こります。
空をnull として扱う
空の入力値(長さが0の文字列など)をNULL 出力値として扱うには、空をnull として扱うにチェックを入れます。デフォルトではチェックが外れているため、空の入力値は空の文字列("")として扱われます。 この設定をOFF のままにしておくと、マッピングがNULL 値を受け入れない列を含むデータベーステーブルとやり取りする可能性がある状況で役立ちます。このような場合、空の文字列値を使用することで、データベースへの挿入時にエラーを回避できます。また、データベースから取得した空の文字列値をNULL に変換して、データセットをより適切に反映させる必要がある場合もあります。データソース
データソースタブには、ソースから動的に生成されたXML 要素のリストが含まれており、必要な要素をスクロールして選択できます。選択した要素の正しいXPath がScript に適用され、エディタで追加の変更を行うことができます。 角括弧で囲まれた式は、Script 内で変数として評価されます。ほとんどの場合、変数式にはソースドキュメント内の要素の xpath() 評価が含まれます。複数の角括弧式を使用して複数の変数を表現でき、連続して配置することも、リテラル文字(角括弧の外側)と混在させることもできます。 例えば、2つの異なるパスにある値を組み合わせるには:[xpath('Customer/First')] [xpath('Customer/Last')]
メッセージヘッダー
メッセージヘッダーは、 がフローを通過するデータの進行状況を追跡するのに役立ちます。すべての追跡されたヘッダーは、マッピングエディタのメッセージヘッダータブに表示され、式で参照できます。ノードを追跡ヘッダーとして追加するには、マッピング内のノードを右クリックまたは省略記号をクリックして、トラッキングを追加を選択します。 マッピングエディタのメッセージヘッダーを追加フィールドを使用して既存のヘッダー名を指定することで、式に他のメッセージヘッダーを含めることもできます。これらは追跡されたヘッダーである必要はありません。
変数
マッピングのある時点で変数を設定し、その変数をマッピングの後半で再度参照することは有用です。変数のスコープは、マッピングによって処理されるドキュメント全体を網羅します。つまり、変数のあらゆる属性はマッピング全体で保持され、 がファイルの処理を完了したときにのみクリアされます。 例えば、マッピングで、注文書内の複数の明細項目の総コストを集計する必要がある場合があります(マッピングにいくつかの LineItemCost 要素と TotalCost 要素が含まれている場合など)。 LineItemCost に変数を追加して、各 LineItemCost 要素の値を合計することができます。すべての明細項目をループするForeach ループ内の要素にこの変数を含めると、Foreach ループが終了したときにその合計が TotalCost になります。 変数を追加するには、マッピングエディタでノードの省略記号をクリックし、ノードを追加 > 変数を追加を選択します。これを実行すると、変数が変数タブに表示され、式で参照できるようになります。Vault
Vault タブを使用して、グローバル設定Vault からアイテムを式に追加します。これは、フロー内のさまざまな場所で再利用する値がある場合に便利です。これらの値をVault で定義し、式の先頭で参照することができます。Vault 内のアイテムの 値 を使用したい場合は、角括弧で囲んで参照する必要があることに注意してください。そうしないと、エディタはアイテムの 名前 をリテラルとして解釈します。フォーマッタ
フォーマッタは、異なるXPath で返される値の操作をサポートします。フォーマッタは式の中でパイプ文字(|)で区切られ、左から右に評価されます。次に例を示します:[xpath('City') | toupper | substring(0,3)]
この例では、City XPath の値が返される前に、すべての文字列が大文字に変換され、最初の3文字の部分文字列が結果として返されます。例えば、ソースドキュメントに次の値があった場合:
<City>Durham</City>
結果の式は以下を返します:
DUR
フォーマッタはフォーマッタタブにリストされます。リストからフォーマッタをクリックして、式にフォーマッタを追加します。
文字列操作
文字列操作は、エディタでよく使用される機能です。一般的な文字列フォーマッタには以下が含まれます: 例えば、入力XML のCustomerName 値を、出力XML の2つのフィールドに分割したいとします。これを実現するには、split フォーマッタを使用します。split のパラメータは、文字列を分割する文字と、返される結果の配列のインデックスです(インデックスは1から始まります)。
[xpath(CustomerName) | split(' ', 1)]
文字列フォーマッタの完全なリストはこちらをご覧ください。
日付操作
もう1つの一般的な使用例は、ソースドキュメントの日付を宛先の日付に再フォーマットすることです。これはtodate フォーマッタによってサポートされており、以下の3つの引数を指定できます:- output date format(必須)
- input date format(オプション):フォーマッタが入力日時形式を自動検出できない場合にこれを使用します。
- strict input format(オプション):受信した日付値が入力形式と一致するかどうかを確認するために使用します。一致しない場合は、タスクは日付を標準の日付形式に変換する代わりにエラーをスローします。デフォルトでは確認しません。強制的に確認するには、フォーマッタに
trueを追加します。
[xpath(PurchaseDate) | todate(D, "mm/dd/yy", true)]
日付計算に役立つ追加の関数として、dateadd とcompare があります。これらの関数を使用すると、日付に一定の期間を加算または減算したり、日付を比較したりできます。
日付フォーマッタの完全なリストはこちらをご覧ください。
数値演算
数値演算は、ソースXML の数値に対して計算を行う際に便利です。次の例では、セントをドルに変換し、結果の値が小数点以下2桁になるようにします:[xpath(ItemCost) | divide(100) | decimal(2)]
数値フォーマッタを使用して税金を計算し、その税額を合計に追加することができます。次の例には、ネストされた数値フォーマッタ式が含まれています。各式は左から右に評価され、ネストされた式は外側の式に戻る前に完全に評価されます:
[xpath(Subtotal) | divide(100) | multiply([xpath(TaxPercent) | divide(100) | add(1)]) | decimal(2)]
数値フォーマッタの完全なリストはこちらをご覧ください。
Lookahead
xpath() フォーマッタは、ソースドキュメントからどの値を宛先にマッピングすべきかをさらに指定するための先読み構文をサポートしています。先読み構文を使用すると、繰り返されるXML 要素構造の中で特定の値をターゲットにすることができます。 例えば、入力XML に複数の明細項目があり、そのうちの1つだけに目的の値が含まれている場合があります。各明細項目は同じXPath を持つため、同じXPath にある値から目的の値を取得するには先読み構文が必要です。 次のXML はこの状況を示しています。LineItem 要素が一致するXML 構造を持っていることに注意してください:
[xpath(LineItem/ItemAmount)]
Tax 明細項目を指定するには、式はLineItem 要素内のItemType 要素を検索し、その行項目が Tax 項目であることを確認する必要があります。LineItem 要素は先読みの’親’ であり、ItemType 要素は先読みの’ターゲット’ です。
先読み構文は次のとおりです:XPath 式内で、先読みの親要素の直後に角括弧を追加します。角括弧内には、先読みのターゲット要素へのXPath を指定し、equals 式を使用してターゲット値を確認します(角括弧はバックスラッシュでエスケープする必要があることに注意してください):
[xpath(LineItem\[ItemType='Tax'\]/ItemAmount)]
これは、LineItem/ItemType が Tax であるLineItem 要素の LineItem/ItemAmount から値を見つけることを意味します。この式は、値1.38 を返します。
スクリプトモード
エディタの上部にあるスクリプトモードトグルを使用すると、条件エディタをデザイナーモードからスクリプトモードに切り替えられます。これは、標準のデザイナーモードを使用する代わりに、条件をScript で記述する必要があることを意味します。スクリプトモードでは、出力値を返す必要のないカスタムScript を記述できます。ノードでスクリプトモードが有効になっている場合、そのノードの値はスクリプトの名前として表示されます。これは、