このサイトをビューするために JavaScript を有効化してください。

Altova MapForce 2020 Enterprise Edition

このサンプルはプロトコルバッファー書式でエンコードされているバイナリファイルにデータを書き込む方法を示しています。 このデモ内では、SQLite データベース (Nanonull.sqlite) からデータソースが来ていますが、同様のアプローチを使用して、 MapForce がサポートする XML、 EDI、JSON などの多種の書式からデータを取得することもできます。

 

ソース デモ データベースは、個人、住所、ストアから注文した製品のデータを保管します。 業務の必要条件は、データベースから注文情報を抽出し、プロトコルバッファー書式で複数のバイナリファイルを生成します。 .dat 拡張子を持つ1つのバイナリファイルは、各注文のために生成される必要があります。生成されたファイル名は Order1.datOrder2.dat などの注文の一意の ID を含む必要があります。 例えば、各 バイナリファイルは、注文 ID 、個人の名前、電子メールアドレス、日付、および、配達先の住所に関する情報を含む必要があります。具体的には、注文の構成を説明する .proto ファイルは以下のようになります:

 

syntax="proto3";

 

package mapforce.demo;

 

message Order {  

 int32 id = 1;  

 string name = 2;

 string email = 3;

 DateType entry_date = 4;

 // An order can have multiple addresses (shipping, billing)

 repeated AddressType address = 5;

}

 

message DateType {

 // Must be from 1 to 9999

 int32 year = 1;

 // Must be from 1 to 12

 int32 month = 2;

 // Must be from 1 to 31, and valid for the year and month

 int32 day = 3;  

}

 

message AddressType {  

 string city = 1;

 string street = 2;

 int32 number = 3;

 bool shipping = 5;

 bool billing = 4;  

}

orders.proto

Nanonull.sqlite データベース と orders.proto ファイルの両方は、次のディレクトリで見つけることができます: <マイ ドキュメント>\Altova\MapForce2020\MapForceExamples\Tutorial\。変換を行うマッピングデザイン ファイルは GenerateOrders.mfd と呼ばれ、同じディレクトリで見つけることができます。マッピングを開き直接実行、または下のステップに従い始めから作成することができます。

mf_proto_04

GenerateOrders.mfd

上記のとおり、マッピングソースコンポーネント (SQLite データベース) とターゲットコンポーネント (バイナリコンポーネント) により構成されています。ソース データベース内では、このマッピングに関連するメインのテーブルは orders です。

 

MapForce は2つのテーブル間で外部キーリレーションシップを自動的に検知するため、テーブル users は テーブル orders の下ににネストされていることに注意してください。同様に、 テーブル addressesusers の下にネストされます。このようなネストされているテーブルから描かれるすべての接続は、キーリレーションシップがマッピングにより保管されることを保証します。 詳細に関しては、データベースリレーションシップの処理 を参照してください。

 

ターゲット側では、ファイル:<動的> アイテムは、マッピングからの情報をベースにしてバイナリコンポーネントがインスタンスファイルを動的に生成することを示しています。ターゲットコンポーネントにファイルを動的に生成させるには、 mf_ic_file_blob ボタンを押して、「マッピングにより提供される動的なファイルの使用」をコンテキストメニューから選択します。 動的なファイル名の詳細に関しては、複数の入力または出力ファイルを動的に処理を参照してください。

 

このマッピングでは、orders データベーステーブル内の各 id では、 ファイル: <動的> アイテムへの接続で示されるように新規のファイルが生成されます。各生成されたファイルの名前は、最初の concat 関数の助けと共に作成されます。この関数は、データベースからの注文票の一意の ID を持つ文字列 "Order" と、 拡張子 ".dat" をジョインします。 このため、 生成されたファイルは Order1.datOrder2.dat などの名前を取得します。

 

concat 関数はマッピングから2度目の呼び出しを受けます。今回は、氏名を連結し、空白文字を間に入力して。個人の名前を返します。

 

最後に、中央の "GetDate" コンポーネントは、バイナリファイル内の日付フィールドを作成するユーザー定義関数です。 この関数は、入力として文字列で表示さえる日付を取り、年度、月、日を個別に整数の値として返します。この変換は、 .proto ファイル 内で定義されている通り日付フォーマットを適応させるために必要とされます。 マッピング上の関数のタイトルバーをダブルクリックすると、この関数の定義を確認または変更することができます。

mf_proto_05

"GetDate" ユーザー定義関数

上記のとおり、"GetDate" ユーザー定義関数は parse-dateTime ビルトイン関数を使用して入力値を解析します。マスク [Y]-[M]-[D] [H]:[m]:[s] は、データベースに保存されている書式に日付書式を一致させます。例えば、 2017-10-19 08:09:54。 書式マスクの詳細に関しては、 parse-dateTime 関数の説明を参照してください。次に、多種のビルドイン関数が呼び出され、解析された日付から重要な日付の部分が抽出され返されます。

 

マッピングの作成方法

上記のマッピング (または類似するマッピング) を作成するには次のステップに従ってください:

 

1.マッピングにデータベースを追加するで説明されているとおり、ソースデータベースを挿入します。

2.ターゲット .proto ファイルを入力します。バイナリファイルをマッピングに追加するを参照してください。

3.ファイル名を動的に生成するために、ターゲットコンポーネントを構成します。これを行うには、mf_ic_file_blob ボタンをクリックして、 「マッピングにより提供される動的なファイル名の使用」 をコンテキストメニューから選択します。ファイル名を提供する入力に ファイル<動的> アイテムを接続します。このサンプルでは、 ファイル名は上記の通り、 concat 関数を使用して生成されます。 動的なファイル名に関する詳細は、複数の入力または出力ファイルを動的に処理を参照してください。

4.任意で MapForce ビルトイン関数を追加し、入力を接続します。このサンプルでは、concat 関数が2回使用されています。詳細に関しては、マッピングにビルトイン関数を追加する を参照してください。 concat などのビルとイン関数を呼び出す場合、文字列定数から入力データの一部が来る可能性があります。このような定数の情報に関しては、マッピングに定数を追加するを参照してください。

5.必要な場合、ユーザー定義関数を追加します。これらにより、マッピングをあいまいにし、大きな概要に集中することができます。 このサンプルでは、「GetDate」 ユーザー定義関数は、文字列を、上記のとおり、日付の部分に変換し、メインマッピングから実装ロジックは隠されます。カスタム関数の詳細に関しては、ユーザー定義関数を参照してください。

 

MapForce の使用の初心者は、シンプルなステップバイステップのサンプルに関してはチュートリアルを参照してください。

 

マッピングの実行

このサンプルの最初に説明されているビジネスの必要条件の通り、マッピングは複数の .dat ファイルを生成することが期待されています。 生成されたファイルをプレビューするには、 「出力」 タブをクリックします。

mf_proto_06

上記のとおり、「出力」 ペインはすべての生成されたファイルを表示し、方向ボタンをクリックして、またはリストからアイテムをピックしてナビゲートすることができます。 生成された出力を保存するには、次のいずれかを実行してください:

 

「出力」 メニューで 「全ての生成ファイルを保存する」 ( ic-save-all-out )をクリックします。

「生成されたすべての出力を保存する」 ( ic-save-all-out ) ツールバーボタンをクリックします。

 

MapForce により生成された出力バイナリファイルをプレビューする場合、個のフォーマットはバイナリ書式とは異なり人間が判読できるため、構造は JSON として表示されます。JSON としてマッピングを確認することは、出力をテストする手助けをします。出力 ファイルを保存する場合、バイナリファイルとして保存されます。

 

MapForce Serve を使用した自動化

ライセンスされた MapForce Server を使用する場合、 Linux、macOS、または Windows マシン上のコマンドラインでマッピングを実行することができます:

 

1.メニューコマンド 「ファイル |  MapForce Server 実行ファイルにコンパイルする」、を使用してマッピングを MapForce Server 実行ファイル (.mfx)にコンパイルします。 MapForce Server 実行可能ファイルにマッピングをコンパイルするを参照してください。

2..mfx ファイルをサーバーマシンにコピーします。

3.このマッピングは SQLite データベースファイルからデータを読み取るため、サーバー上の .mfx ファイルと同じディレクトリに Nanonull.sqlite データベースファイルをコピーします。他のデータベースの種類に関しては、多種の実行環境でのデータベースマッピングを参照してください。

4.MapForce Server を下のコマンドを使用して実行します。

 

mapforceserver run GenerateOrders.mfx

 

メモ:

 

mapforceserver は使用中のオペレーティングシステムのために適用できる MapForce Server 実行可能ファイルへのパスです。

適用できる通り、 .mfx ファイルへのパスを変更、または実行可能ファイルと同じフォルダーに .mfx をコピーします。

 

サーバー実行の際は、 API 呼出、または FlowForce Server ジョブとしてマッピングをオンデマンド、または再帰的なベースで実行することができます。  詳細に関しては、 MapForce Serve を使用した自動化 を参照してください。

(C) 2019 Altova GmbH