サンプル: UN/EDIFACT を XML にマッピングする

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

ホーム >  データソースとターゲット > MapForce と EDI > UN/EDIFACT >

サンプル: UN/EDIFACT を XML にマッピングする

この演習では、UN/EDIFACT メッセージからのデータを XML スキーマ/ドキュメントへマッピングして、更なる処理を行うための XML ファイルを作成する方法について記述します。このサンプルで紹介されているマッピングは以下のパスで確認することができます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\EDI_Order.mfd.

 

 

ステップ 1: UN/EDIFACT コンポーネントをマッピングに追加する

 

1.新規マッピングを作成し、 次の変換言語から1つ選択します: Java、C#、C++、または、 BUILT-IN。 このサンプルでは、が変換言語として使用されています。
2.「挿入」 メニューから、「EDI」 をクリックします。
3.EDI のコレクションダイアログボックスから、 EDIFACT を選択し、 ORDERS を選択し、 「OK」 をクリックします。

 

edifact2xml_example_01

4.サンプル EDI ファイルを提供するようにプロンプトされると、参照 をクリックして、 <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\ ディレクトリから   ORDERS.EDI を選択し、開くをクリックします。コンポーネント設定ダイアログボックスが開かれ、入力ならびに出力 EDI インスタンスを選択することができます。これによりマッピングに追加する前に、 EDI コンポーネントの設定を確認することができます。必要な場合これらの設定をいつでも変更することができます(次を参照: EDI コンポーネント設定 )。ORDERS.EDI ファイルがの入力 EDI ファイルとして表示されることを確認してください。

edifact2xml_example_03

5.「OK」をクリックします。EDI コンポーネントがマッピング領域に表示されます。Message_ORDERS ノードをダブルクリックして、子アイテムを確認します。コンポーネントウィンドウの右下をドラッグすることで、コンポーネントウィンドウの大きさを変更することができます。

edifact2xml_example_04

 

 

ステップ 2: ターゲットスキーマコンポーネントをマッピングに追加する

 

1.「挿入」 メニューから、XML スキーマ/ファイル をクリックして、 <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\ ディレクトリから Order.xsd を選択します。
2.サンプル XML ファイルを指定するよう促されるので、「スキップ」をクリックして、Order をターゲットドキュメントのルートとして選択します。

edifact2xml_example_05

この時点で、ソース EDI コンポーネントとターゲット XML スキーマはマッピングエリアに表示されており、マッピング接続を開始することができます。

edifact2xml_example_06

 

ステップ 3: EDI アイテムをマップする

 

EDI コンポーネントには、選択したコレクション (ORDERS) から得られたメッセージの構造が表示されます。通常、全てのノードにデータが含まれることはなく、EDI を伴うプロジェクトを扱う際には、使用する EDI ドキュメントに十分精通している必要があります。

 

MapForce では、ソースアイテムとターゲットアイテム間に接続を描くことでマッピングを行うことができます。手順を追っての MapForce 内でのマッピング接続に関しては、 接続と作業するを参照してください。

 

このサンプルでは、 ( Group/Message_ORDERS ノードから始まる)次のノードが最初にマップ(接続)されます:

ソース

ターゲット

BGM/C106/F1004

Order/Header/Number

SG2/NAD/C082/F3039

Order/Customer/Number

SG2/NAD/C080/F3036

Order/Customer/CompanyName

SG2/NAD/C059/F3042

Order/Customer/Address/Street

SG2/NAD/F3164

Order/Customer/Address/City

SG2/NAD/C819/F3229

Order/Customer/Address/State

SG2/NAD/F3251

Order/Customer/Address/ZIP

SG2/SG5/CTA/C056/F3412

Order/Customer/ContactName

この時点では、マッピングは以下にあるようなものになるはずです:

 

edi-8

 

マッピングプロセスを継続します:

ソース

ターゲット

SG29

Order/LineItems

SG29/LIN/C212/F7140

Order/LineItems/LineItem/Article/Number

SG29/IMD/C273/F7008

Order/LineItems/LineItem/Article/Name

SG29/QTY/C186/F6060

Order/LineItems/LineItem/Article/Amount

SG29/SG33/PRI/C509/F5118

Order/LineItems/LineItem/Article/SinglePrice

 

 

ステップ 4: 日付のフォーマット

 

edifact ライブラリから to-datetime 関数をマッピング領域にドラッグします。内で関数を作業する方法に関しては、次を参照してください 関数と作業する.

 

DTM/C507 要素の F2380 と F2379 コンポーネントを適用することで、適正な方法でフォーマットされた受信側の datetime を作成することができます。

 

ですから以下のフィールドをマップします:

ソース

ターゲット

DTM/C507/F2380

to-datetime  関数の F2380 入力

DTM/C507/F2379

to-datetime  関数の F2379 入力

to-datetime 関数の result 出力

Order/Header/Received

edi-10

 

 

ステップ 5:  からの注文をフィルターする

 

ここで、"Buyer" からの購入注文をフィルタリングすることにします。フィルタリングは NAD (Name と Address) セグメントのパーティーを識別することで行われます。この場合、'BY' という値により "Buyer" (商品やサービスが販売される相手)が示されます。

 

1.core ライブラリからマッピング領域へ、 equal 関数をドラッグします。
2.マッピングにフィルターを追加します (「挿入」 メニューから、「フィルター: ノード/行」をクリックします)。
3.マッピングに定数を追加します (「挿入」 メニューから、「定数」をクリックします )。 "BY" という値にテキストフィールドに "BY" を入力して定数を割り当てます:

edifact2xml_example_07

以下のアイテムをマップします:

 

ソース

ターゲット

SG2/NAD/F3035

equal  関数の b 入力

"BY" 定数

equal  関数の a 入力

equal  関数の 結果

filter コンポーネントのbool 入力

SG2/NAD

フィルターコンポーネントの node/row

on-true の場合の filter コンポーネントの結果

スキーマの Order/Customer

この操作により、NAD ノードが、パーティーコードの "BY" により識別される "Buyer" を示している時だけ、データのマッピングが行われるようになります。

edi-12

 

 

ステップ 6: 価格と税金の計算

 

このタスクの最終的な仕上げとして、価格と税金の計算を行います。

 

1.core ライブラリから、multiply  関数を 2 つ、そして divide  関数を 1 つ、マッピング領域へドラッグします。
2.定数コンポーネントを挿入します (「挿入 | 定数」)。 数値が選択された状態で、"100.0" という値をテキストフィールドへ入力します。
3.以下のアイテムをマップします:

ソース

ターゲット

SG29/QTY/C186/F6060

最初の multiply 関数の value1

SG29/SG33/PRI/C509/F5118

最初の multiply 関数の value2

最初の multiply 関数の結果

Order/LineItems/LineItem/Article/Price

SG29/SG40/TAX/C243/F5278

divide 関数の value1

定数 "100.0"

divide 関数の value2

最初の multiply 関数の結果

2番目の multiply 関数の value1

divide 関数の結果

2番目の multiply 関数の value2

2番目の multiply 関数の結果

Order/LineItems/LineItem/Article/Tax

マッピングは以下に示されているようなものになります:

edi-14

出力タブをクリックすることで、変換が実行され、XML ドキュメントの変換結果が表示されます:

edi-15


(C) 2019 Altova GmbH