サンプル:検索と連結

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  関数 > ユーザー定義関数 >

サンプル:検索と連結

MapForce には、ユーザー定義関数の通常の使用方法を示すデモマッピングが複数存在します。PersonListByBranchOffice.mfd<マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\ フォルダー内で使用することのできるマッピングの一つです。

mf_udf_19

PersonListByBranchOffice.mfd

このマッピングには以下のビジネス上での必要条件が存在します:

 

XML ファイルからデータを抽出し、ターゲット XML ファイルに書き込みます。氏名などの社員の詳細によりデータは構成されています。
XML ファイル内で(電話番号、電子メールアドレス、地位などの) 各社員の特定のデータを検索します。
ターゲットに書き込む前にデータを希望する方法で処理します。具体的には、各社員の電話番号、電子メール、地位が(コンマで区切られている) 単一の文字列に処理され、ターゲット XML の Details 要素に書き込まれます。
特定の条件に一致する XML 要素のみを抽出します。この場合、特定の支店オフィスからの社員に関する情報が抽出されます。  マッピングの発信者は、 MapForce Server でマッピングが実行される場合など、 コマンドラインでパラメーターとして支店名を指定する必要があります。

 

上記の必要条件を実装するコンポーネントを検証してみましょう:

 

マッピング ("OfficeName") の入力パラメーターは、シンプルな入力コンポーネントです。 デフォルトの値 (「Nanonull, Inc.」) は定数により提供され、この値は、マッピングの発信者がパラメーターの値を提供しない場合使用されます。シンプルな入力コンポーネントを検索するには、マッピングにパラメーターを与えるを参照してください。
特定の支店にのみ属する社員をフィルターするには、マッピングは フィルターコンポーネント ("Office") を使用します。基本的には、フィルターは、パラメーターにより提供される支店名がソース XML ファイル内の支店名と同じかをチェックします。 もし「はい」の場合、フィルターはデータをソース Office アイテムからにターゲットコンポーネントパスします。 フィルターに関する詳細は、 フィルターと条件を参照してください。
2番目のソース XML ファイルから情報を検索するには、 マッピングは、ユーザー定義関数 「LookupPerson」 を呼び出します。 この関数のロジックは、下で更に詳細に説明されています。
社員のデータを処理するために 「LookupPerson」 関数は、内部で適切な方法で社員に関する上をを抽出し結合する他の関数を呼び出します。 これらすべての操作は、これらの操作は関数の自身のマッピングにあり、メインマッピングでは表示されません。これはカプセルかの一般的なサンプルです。  「LookupPerson」 関数は、ターゲット XML 内に Details 要素を作成します。

 

ルックアップの実行

機能は定義が下に示されている 「LookupPerson」 関数により適用されます。

mf_udf_20

「LookupPerson」 関数

上記のとおり、 関数には、データが抽出されるソース XML ファイルが含まれています。次に、 look-up 値を提供する次の3つの入力パラメーターが存在します: Office_NameFirst_Name、と Last_Name。すべての入力パラメーターは必須として設定されています (すなわち、 チェックボックス 「入力は必須」 がプロパティダイアログボックス内で選択されています)。

 

「EqualAnd」 関数は、現在内で囲まれている個別のユーザー定義関数です。 この関数はブール値を返します。上で示されるシーケンス内のこの関数の呼び出しは、ブールのロジックを提供します:

mff_udf_lookup_example

関数の値 (TRUE または FALSE) は、新規のアイテムが処理される都度フィルターにパスされます。フィルターが価 TRUE を取得すると、 look-up 操作は成功し、社員の詳細が取得され、マッピングの外側に返されます。それ以外の場合、ループが完了するまで、コンテキスト内の次のアイテムが検証されます。

 

「EqualAnd」 関数が発生する場合、コネクタ b には丸印が付けられ、これは、このパラメーターが優先コンテキストとして設定されていることを示しています。優先コンテキストは、マッピングの実行を最適化するための任意の機能です。具体的には、特定のオフィスの個人データが入力パラメーター a に提供され、最初に処理されることを保証します。パラメーターを優先コンテキストに設定するには、右クリックして、「優先」 をコンテキストメニューから選択します。 詳細に関しては、 優先コンテキスト node/itemを参照してください。

 

連結の実行

"Person2Details" 関数は 「LookupPerson」 関数にネストされている他の関数です。この関数は文字列の値を返します。パラメーターと2つの定数として受信されている3つの値は下に示されるように結合されます:

mf_udf_21

"Person2Details" 関数

concat 関数はパラメータを必要な数だけ取る MapForce ビルトイン関数です。 関数引数の追加、または、削除を参照してください。

 

マッピングの実行

MapForce 内で、マッピングの実行をプレビューするには、「出力」 タブをクリックします。 デフォルトの入力パラメーター (「Nanonull, Inc.」) を使用してマッピングは実行され、この結果、このオフィスのためにのみ社員の情報を抽出します。他のオフィスのためにデータを抽出するには、入力パラメーターを 「Nanonull, Inc.」 から 「Nanonull Partners, Inc.」 に変更し、マッピングを再度実行します。

 

最初に、メニューコマンド「ファイル | MapForce Server 拡張ファイルにコンパイルする」 を使用して、 MapForce Server 拡張ファイル (.mfx) にマッピングをコンパイルします。 また、 MapForce Server 拡張ファイルにマッピングをコンパイルするを参照してください。  .mfx ファイルをサーバーマシンにコピーし、下のコマンドを使用して MapForce Server を実行します。 名前付けられたパラメーター -p=OfficeName は入力値を提供します:

 

mapforceserver run PersonListByBranchOffice.mfx -p=OfficeName:"Nanonull, Inc."

 

メモ:

 

mapforceserver は、使用中のオペレーティングシステムに適用することのできる MapForce Server 実行可能へのパスです。
.mfx ファイルへのパスを適用できるように変更、または、実行可能と同じフォルダー内に .mfx をコピーします。

(C) 2019 Altova GmbH