例: EDIFACT メッセージのカスタム化

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

ホーム >  データソースとターゲット > MapForce と EDI > EDI 構造のカスタム化 >

例: EDIFACT メッセージのカスタム化

この例は、 EDIFACT メッセージをカスタム化し、MapForce が非標準、または、変更された EDIFACT フォーマットを処理する方法について説明しています。ORDERS メッセージの若干拡張された CTA (Contact Information) セグメントを使用して、カスタム EDIFACT ファイルを処理するサンプルのマッピングは次のパスで見つけることができます: <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\Orders-Custom-EDI.mfd。 このマッピングを次のカスタム化を行う前に開いた場合、 MapForce は、正確に検証できないことに注意してください。この理由は、マッピングが、使用中のマシン上にまだ存在しない カスタム EDIFACT 構成を参照しているからです(この例の中でこの構成は作成されます)。

 

Orders-Custom.EDI ファイルからデータを読み取るサンプルのマッピングは、<マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\ ディレクトリ内にあります。このファイルをテキストエディターで開くと、カスタム化された CTA セグメントが使用されていることに気がつきます。具体的には、  9 列目では、「Mr 」エントリを含みライン 11 列目では、「 Mrs 」エントリを含みます:

edi-adapt-1

上記のような カスタム EDI ファイルからデータをマップする前に、 カスタム EDIFACT 構成が作成される必要があります。この例では、 個人のタイトルに対応するように CTA セグメントに新規フィールドを持つように拡張するために、デフォルトの EDIFACT 構成をカスタマイズします。参照のために、カスタマイズの最終結果は、 ZIP アーカイブ(EDIFACT.Nanonull.zip) として <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\ ディレクトリ内にあります。下の手順は、 ZIP ファイルが ..\Program Files\MapForceEDI\ ディレクトリに既にアンパック済みであると想定しています。

 

カスタマイズファイルのセットアップ

1.MapForce インストールディレクトリ (C:\Program Files\Altova\MapForce2019\ )を開きます。32-ビット MapForce が 64-ビット オペレーティングシステム上で作動している場合は、 パスを C:\Program Files (x86)\Altova\MapForce2019\MapForceEDI に調整してください。
2...\MapForceEDI\ ディレクトリの下に、EDIFACT.Nanonull という名前のディレクトリを作成します。
3....\MapForceEDI\EDIFACT フォルダーから次のファイルを EDIFACT.Nanonull フォルダーにコピーします。

 

EDI.Collection
Envelope.Config
UNCL.Codelist
Admin.Segment
EDSD.Segment (Electronic Data Segment Definition)
ORDERS.Config

 

各ファイルの目的に関する詳細に関しては、次を参照してください EDI 構成ファイル.

 

メモ:        ファイルの属性を編集できるように「読み取り-書き込み」に変更してください。

 

EDI.Collection ファイルを構成する。

 

1.XMLSpy またはエディターで EDI.Collection ファイルを開きます。
2."ORDERS" メッセージ以外のすべての "Message" 要素を削除します。<Messages> タグが保持されていることを確認してください。

 

<?xml version="1.0" encoding="UTF-8"?>
<Messages Version="3">
  <Meta>
    <Version>D</Version>
    <Release>16A</Release>
    <Agency>UN</Agency>
  </Meta>
  <Root File="Envelope.Config"/>  
  <Message Type="ORDERS" File="ORDERS.Config" Description="Purchase order message"/>  
</Messages>

 

3.ファイルを保存します。

 

新規の EDI.Collection ファイル は、 MapForce により使用できるようになっています。以下のようにテストします:

 

1.MapForce を開始します。
2.「挿入」 メニューから 「EDI」 をクリックしてください。または、「EDI の挿入」 ic-edi ツールバーボタンをクリックしてください。 下に表示されているような、新規コレクションの名前 "EDIFACT.Nanonull" を表示するダイアログボックスが開かれます。選択されると、コレクションは、次のメッセージの型のみを表示しています: "ORDERS"。

mf_dlg_edi_customize

 

メモ:開始する時点で、 MapForce は、 ...\MapforceEDI\ ディレクトリの下の全ての兄弟サブフォルダーをスキャンし、 "EDI.Collection" という名前のファイルを検索します。EDI.Collection ファイルを含む各フォルダー名がダイアログボックス内に表示されます。メッセージの型リストがコレクションファイルのコンテンツを表示します。この例では、 ORDERS メッセージだけが含まれています。

 

 

グローバルなカスタマイズとインラインなカスタマイズ

この例の目的は、 CTA (Contact Information) セグメントを再定義することです。CTA セグメントは、 1つのフィールド (F3139) と1つのコンポジット (C056) により構成されています。(例えば、 "Mr" または、 "Mrs" などの)タイトルデータを保管するには、C056 コンポジットに X1000 と呼ばれる新規のフィールドを追加します。カスタマイズを行うには複数の方法があります:

 

EDSD.segment ファイルをカスタマイズすることにより、グローバルにカスタマイズを行うことができます。 全てのメッセージ内の全てのセグメントは、 コンポジット C056 を使用し、新しい要素を含むまたは参照します。
ORDERS.Config ファイルをカスタマイズすることにより、インラインにカスタマイズを行うことができます。現在のメッセージ内のカスタマイズされたセグメント (CTA)のみが新規の要素を含みます。

 

グローバルなカスタム化

新規の X1000 フィールド にグローバルにアクセスを作成する場合、 EDSD.Segment ファイルのみに変更が加えられます。コンポジット C056 を使用する全てのメッセージ内の全てのセグメントは、新しい要素を含むまたは参照します。

 

コンポジット C056 をグローバルに再定義します:

 

1.EDSD.Segment ファイルをテキストまたは XML エディター内で開き、 「構成 | 要素 | コンポジット | C056」 にナビゲートします。

<Composite name="C056" info="CONTACT DETAILS">
 <Data ref="F3413" minOccurs="0"/>
 <Data ref="F3412" minOccurs="0"/>
</Composite>

2. 次のラインを C056 セグメントの "F3412" の下に挿入します:

 

<Data name="X1000" type="string" maxLength="35" minOccurs="0" info="New Element"/>

 

Composite 定義は以下のようになります:

<Composite name="C056" info="CONTACT DETAILS">
 <Data ref="F3413" minOccurs="0"/>
 <Data ref="F3412" minOccurs="0"/>

 <Data name="X1000" type="string" maxLength="35" minOccurs="0" info="New Element"/>
</Composite>

上のコードリストでは、  "ref" 属性。を使用するセグメントの他のフィールドに対して、新規の X1000 フィールドが "name" 属性を使用して定義されています。他の2つのフィールドは、ファイルの最初に定義されており、参照されているだけです。

 

C056 を使用する全てのメッセージで新規の X1000 フィールドを使用することができます。MapForce 内の新しいフィールドを以下のようにプレビューすることができます:

1.「挿入」 メニューから EDI をクリックしてください。または、 「EDI の挿入」 ic-edi ツールバーボタンをクリックしてください。
2."EDIFACT.Nanonull" コレクションをクリックして、 ORDERS メッセージを選択します。
3.ソース EDI ファイルを選択するように問われると、「スキップ」をクリックします。ORDERS が、マッピングウィンドウ内で表示されています。
4.コンポーネントヘッダーをクリックし、「Ctrl + F」 を押して、"X1000" を検索テキストとして入力します。「次を検索」 をクリックし、(Envelope/Interchange/Group/Message_ORDERS/SG2/SG5/CTA/C056 の下に存在する)新規の X1000 要素の次の発生に移動します。

mf_map_Orders-Custom-EDI_1

 

インラインのカスタマイズ

新規の X1000 フィールドへローカルに (または、 インラインで) アクセスするには、 ORDERS.config ファイルのみに変更が加えられなければなりません。この場合、現在のメッセージ内の再定義された CTA セグメントは、新しい要素を含むまたは参照します。すなわち、 CTA セグメントは、カスタム新規のフィールド X1000 を持つ再定義されたコンポジット C056 を含むようにローカルで再定義されます。

 

コンポジット C056 をローカルで再定義する:

 

1.ORDERS.Config ファイルをテキストまたは XML エディター内で開き、 Group name="SG5" にナビゲートします(または、 SG5 を検索します)。

 

<Group name="SG5" minOccurs="0" maxOccurs="5" info="CTA - Contact information">
  <Segment ref="CTA"/>
  <Segment ref="COM" minOccurs="0" maxOccurs="5"/>
</Group>

 

2. ライン <Segment ref="CTA"/> を以下のラインと置き換えます:

 

<Segment name="CTA" id="CTA_ORDERS_SG5" info="CONTACT INFORMATION">
  <Data ref="F3139" minOccurs="0"/>
  <Composite name="C056" minOccurs="0" info="DEPARTMENT OR EMPLOYEE DETAILS">
          <Data ref="F3413" minOccurs="0"/>
          <Data ref="F3412" minOccurs="0"/>
          <Data name="X1000" type="string" maxLength="35" minOccurs="0" info="New Element"/>
  </Composite>
</Segment>

 

Group 定義は以下のようになります:

 

<Group name="SG5" minOccurs="0" maxOccurs="5" info="CTA - Contact information">
  <Segment name="CTA" id="CTA_ORDERS_SG5" info="CONTACT INFORMATION">
  <Data ref="F3139" minOccurs="0"/>
  <Composite name="C056" minOccurs="0" info="DEPARTMENT OR EMPLOYEE DETAILS">
          <Data ref="F3413" minOccurs="0"/>
          <Data ref="F3412" minOccurs="0"/>
          <Data name="X1000" type="string" maxLength="35" minOccurs="0" info="New Element"/>
  </Composite>
  </Segment>
  <Segment ref="COM" minOccurs="0" maxOccurs="5"/>
</Group>

 

MapForce 内の新しいフィールドを以下のようにプレビューすることができます:

1.「挿入」 メニューから EDI をクリックしてください。または、 「EDI の挿入」 ic-edi ツールバーボタンをクリックしてください。
2."EDIFACT.Nanonull" コレクションをクリックして、 ORDERS メッセージを選択します。
3.ソース EDI ファイルを選択するように問われると、「スキップ」をクリックします。ORDERS が、マッピングウィンドウ内で表示されています。
4.Envelope/Interchange/Group/Message_ORDERS/SG2/SG5/CTA/C056 にナビゲートすると、 新規の X1000 要素を確認することができます。

mf_map_Orders-Custom-EDI_1

 

マッピング内でカスタマイズされたメッセージを使用する

上記の手順に従った場合、 カスタム EDIFACT 構成 をマッピング内で使用することができます。上記のカスタム EDIFACT 構成を使用するマッピングの例は、 <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\ フォルダー内の Orders-Custom-EDI.mfd です。この中では、ORDERS-Custom.EDI ファイルが Order-EDI スキーマにマップされます。カスタム フィールドが EDI 構造に追加され、X1000 ターゲットスキーマ内の Salutation アイテムにマップします。

mf_map_Orders-Custom-EDI_2

上記の手順に従った場合、このマッピングを開き、マッピングの実行に成功する事ができます。しかしながら、カスタマイズの手順に従わなかった場合、 このマッピングを以下のとおり実行することができます:

 

1."EDIFACT.Nanonull" と呼ばれる新規のディレクトリを "C:\Program Files\Altova\MapForce2019\MapForceEDI\" ディレクトリの下に作成します。32-ビット MapForce を 64-ビット オペレーティングシステム上で作動している場合、パスを C:\Program Files (x86)\Altova\MapForce2019\MapForceEDI に調整してください。
2.EDIFACT.Nanonull.zip ファイルを( <マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\ にある)新規のディレクトリで解凍します。
3.Orders-Custom-EDI.mfd を開きます。

 

マッピングの結果をプレビューするには、「出力」 タブをクリックします。

edi-adapt-9

MapForce 内の他のマッピングデザインファイルと類似して、EDI マッピングは、 MapForce 外で実行されることもできます。例えば、 他のサーバーにデプロイし、 MapForce Server または、 FlowForce Server で実行する、または、プログラムコードを生成し、マッピングを実行することなど。 この例のスコープのために、 C++ コードを生成してマッピングを実行することを選択した場合、 "CC056Type" クラスからアクセスすることのできる "CX1000Type" という名前のクラスが生成されます。


(C) 2019 Altova GmbH