7.1 データマッパー
- Magic xpi の代表的なコンポーネントであるデータマッパは、データを送り元から送り先へマッピング、連携することができます。
- 連携することのできる送り元/送り先として以下の種類があります。
|
送り元 |
送り先 |
XML ※1 |
〇 |
〇 |
JSON ※1 |
〇 |
〇 |
データベース |
SELECT |
INSERT, UPDATE, DELETE, UPSERT ※2 |
フラットファイル(CSV, 固定長ファイル等) |
〇 |
〇 |
XMLインタフェースを持つコンポーネント |
〇 |
〇 |
変数 |
〇 |
〇 |
ODS |
〇 |
〇 |
UDS |
〇 |
〇 |
フロー呼び出し(Call Flow) |
× |
〇 |
テンプレートファイル ※3 |
× |
〇 |
※1
XML、JSONを使用する場合はスキーマファイルが必要
※2
UPSERTはMSSQL、Oracle、DB2、DB2/400、MySQL、PostgreSQLで使用可能。
データベーススキーマプロパティ「UPSERT」を「Yes」に設定
※3
HTMLやテキストにxpi独自のタグを埋め込んだテンプレートファイルを用意し、タグ部分に動的に値を設定
【データマッパーの設定例】

7.6 CSVをDBに取り込む
【仕様】
- データマッパーを使用してCSVのデータをDB上の商品マスタに書き込みます。
- CSVおよびDB上の商品マスタのレイアウトは下記の通りです。

列名 |
データ型 |
商品番号 |
float |
商品名 |
char(255) |
販売価格 |
numeric(17,5) |
在庫数量 |
float |
仕入先コード |
float |
作成日 |
datetime |
作成時刻 |
char(6) |
更新日 |
datetime |
更新時刻 |
char(6) |
【Magic xpi スタジオの起動】
- 「ファイル」メニューから「開く」を選択し「MagicxpiSample1.sln」を開きます。
- ビジネスプロセスを右クリックし「CSV→DB」に名前変更します。
- フローを右クリックし「CSV→DB書込」に名前変更します。

【MSSQLデータベースリソースの登録】
- メニュー > プロジェクト > 設定をクリックします。
- 左ペインで「リソース」が選択されている状態で「追加」ボタンを押します。

- リソースタイプ「Database」を選択します。
- リソース名「MSSQL」と入力し、「OK」ボタンを押します。
※禁則文字(@、&、% 等)は使用できません。

- 右ペインにデータベース接続のための詳細情報を入力します。
- 入力が終わったら画面下部の「検証」ボタンを押します。

名 |
値 |
DBMS |
Microsoft SQL Serverを選択します |
データベース名 |
iBOLTTest |
サーバ |
.\SQLEXPRESS |
ユーザ |
sa |
パスワード |
mgtr |
※ご利用の環境にあわせて設定します。
- データベースへ接続できた場合は、設定を保存します。
- データベースへ接続できなかった場合は、設定を修正してください。

- ツールボックスから「データマッパー」をフローエリアにDrag&Dropします。

- データマッパーを選択し、プロパティペインでステップ名を設定します。

- マッパ画面が表示されます。
- 送り元にFlat FileをDrag&Dropし、プロパティペインで以下のように設定します。

送り元タイプ |
File |
データ送り元エンコーティング |
ANSI |
ファイルパス
※次々頁参照 |
EnvVal(‘currentprojectdir’)&’csv\input1.csv’ |
区切文字をデータに含める
※次頁参照 |
No |
名 |
CSV |
【区切文字をデータに含める】
- 区切文字(CSVの場合はカンマ)をデータに含める場合、その文字が区切文字なのか、それともデータの一部なのかを識別するために、データをダブルクォーテーションで囲う必要があります。
例)
Tokyo, Ohta,03-1111-2222 ← 3つのデータとして識別される
“Tokyo, Ohta”,”03-1111-2222″ ← 2つのデータとして識別される
- 送り元のデータがダブルクォーテーションで囲われている場合、送り元のプロパティ「区切文字をデータに含める」を「Yes」に設定します。
- 送り先のデータをダブルクォーテーションをつけて出力したい場合、送り先のプロパティ「区切文字をデータに含める」を「Yes」に設定します。
【式アシスター】
- ファイルパス右側の[…]ボタンをクリックすると「式アシスター」画面が表示されます。
- 各ボタンによる入力補助機能を使用して式を作成し、文法チェックを行うことができます。

【式アシスターの環境変数ボタン】
- 式アシスター画面の環境変数ボタンを押し「currentprojectdir」をダブルクリックします。
- 環境変数の値を取得するEnvVal関数を使用した式が設定されます。
- 環境変数「currentprojectdir」の値は、現在のプロジェクトフォルダのパスです。

【フラットファイルの詳細設定】
- 詳細の右側の[…]ボタンをクリックし、フラットファイルの詳細設定画面を表示します。

- 送り先にDataBaseをDrag&Dropし、プロパティペインで以下のように設定します。

【データベースウィザード】
- ウィザードの右側の[…]ボタンをクリックし、データベースウィザード画面を開きます。

【テーブルの選択】
- 「MSSQL商品マスター」を選択し「追加」ボタンで追加し、「次へ」ボタンを押下します。

【列の選択】
- 「MSSQL商品マスター」を選択し「追加」ボタンで追加し、「次へ」ボタンを押下します。

【SQL文の自動生成】

【マッピング】

【接続の仕方】

- 送り元の項目を右クリックし「接続」をクリック → 送り先の項目をクリック

【接続の削除の仕方】
- 送り元の項目を右クリックし「接続を削除」をクリック

- 送り元の親項目を右クリックし「全ての接続を削除」をクリック

【ノード検索方法】
- 送り元や送り先のノードを、下記4つの方法を使用して検索できます。
No |
検索方法 |
使用方法 |
入力例 |
検索結果 |
1 |
名前検索 |
名前を入力します。
|
取引先 |
「取引先」を含むノード |
2 |
データタイプ検索 |
下記いずれかの記号を入力します。
セミコロン区切で複数指定するとOR条件で検索できます。
<C> |
複合ノード |
<D> |
日付型ノード |
<N> |
数値型ノード |
<T> |
時刻型ノード |
<A> |
文字型ノード |
<L> |
論理型ノード |
<B> |
Blob型ノード |
; |
OR条件 |
|
<N>;<A> |
数値型または文字型のノード |
3 |
接続済/未接続検索 |
下記いずれかの記号を入力します。
|
<+> |
接続済みのノード |
4 |
正規表現検索 |
<R>の後に正規表現を入力します。 |
<R>[0-9] |
数字が含まれるノード |
【マッピングの詳細】
送り元(CSVファイル) |
送り先(MSSQLの商品マスタ) |
Record |
dbo.MSSQL商品マスター ※子ノードをマッピングすると自動的にマッピングされる |
Name1 |
MSSQL商品マスター.商品番号 |
Name2 |
MSSQL商品マスター.商品名 |
Name3 |
MSSQL商品マスター.販売価格 |
Name4 |
MSSQL商品マスター.在庫数量 |
Name5 |
MSSQL商品マスター.仕入先コード |
Name6 |
MSSQL商品マスター.作成日 |
Name7 |
MSSQL商品マスター.作成時刻 |
Name8 |
MSSQL商品マスター.更新日 ※マッピングせず「計算値」に式を設定(次頁) |
Name9 |
MSSQL商品マスター.更新時刻 ※マッピングせず「計算値」に式を設定(次頁) |
【式アシスターの関数ボタン】
- 式アシスターの関数ボタンを押すと、ドロップダウンリストに関数が表示されます。
- 関数をダブルクリックすると、式の中に関数が挿入されます。

Date():システム日付取得
DStr(日付, 書式):日付型→文字型変換
Time():システム時刻取得
TStr(時刻, 書式):時刻型→文字型変換
送り先(MSSQLの商品マスタ) |
「計算値」に設定する式 |
MSSQL商品マスター.更新日 |
Date() |
MSSQL商品マスター.更新時刻 |
TStr(Time(), ‘HHMMSS’) |
【条件の指定】
- CSVの1行目が項目名の場合、そのレコードを読み飛ばす必要があります。
- このような場合は、レコードレベルのマッピングに条件を設定します。

【式アシスターのソースノードボタン】
- 式アシスターのソースノードボタンを押すと、ソースノードを表す文字列が表示されます。
- ソースノードを表す文字列をダブルクリックすると、式に反映されます。


【データベースのデータ確認】
- データベースのデータを確認するにはManagement Studioを使用します。

【フローのデバッグ】
デバッグの方法 |
実施手順 |
備考 |
プロジェクトデバッグ |
メニュー > デバッグxpi > デバッグ開始 |
トリガが設定されている場合や
サブフローがある場合はこの方法でデバッグ |
フローデバッグ |
ソリューションエクスプローラで
フローを右クリックし「デバッグ」 |
特定のフローのみをデバッグ
トリガがなくても自動起動でデバッグできる |
※いずれのデバッグ方法でも、停止手順(メニュー > デバッグxpi > デバッグ停止)は共通です。
- フローデバッグをしてみましょう。
- 「CSV→DB書込」フローを右クリックし、「デバッグ」をクリックします。


【Magic モニタの起動】
- デスクトップのショートカットからMagic モニタを起動します。

- 「アクティビティログ」タブでフローの実行状況を確認します。

【データの確認】
- DBテーブルにレコードが追加されたことを確認します。

【デバッグの停止】
- デバッグを停止するにはメニュー > デバッグxpi > デバッグ停止をクリックします。

7.7 メールを監視する
【仕様】
- メールボックスを監視します。
- メールを受信します。
- メールに添付されたCSVファイルを取り出します。
- CSVファイルの内容をデータベースに格納します。
【フロー完成イメージ】

【受信用メールサーバリソースの登録】
- メニュー > プロジェクト > 設定をクリックします。
- 左ペインで「リソース」が選択されている状態で「追加」ボタンを押します。

- リソースタイプ「Email」を選択します。
- リソース名「MailReceive」と入力し、「OK」ボタンを押します。
※禁則文字(@、&、% 等)は使用できません。

- 右ペインに受信用メールサーバの詳細情報を入力します。
- 入力が終わったら画面下部の「検証」ボタンを押します。

※ご利用の環境にあわせて設定します。
名 |
値 |
備考 |
サーバタイプ |
POP3 |
|
受信メールサーバ |
localhost |
POPサーバアドレス |
受信ポート番号 |
(空白) |
受信用ポート番号(省略時は110)
POP:110、
POP(Secure):995、
IMAP:143
IMAP(Secure):993 |
受信セキュア接続 |
No |
Yes, Noが選択可 |
ユーザ |
postmaster |
POPサーバユーザ |
パスワード |
12345 |
POPサーバパスワード |
【受信用メールサーバサービスの登録】
- xpiで外部からのアクセスを受け付けるために、サービスを登録します。
- メニュー > プロジェクト > 設定をクリックします。
- 左ペインで「サービス」が選択されている状態で「追加」ボタンを押します。

- サービスタイプ「Email」を選択します。
- サービス名「MailTrigger」と入力し、「OK」ボタンを押します。
※禁則文字(@、&、% 等)は使用できません。


名 |
値 |
Email(リソース) |
MailReceive |
ポーリング間隔 |
5(秒) |
【フローの作成】
- ソリューションエクスプローラのビジネスプロセス「CSV→DB」を右クリックし、フローを追加します。
- 追加したフローの名前を「メール監視」に変更します。

【メールトリガーの設定】
- 「メール監視」フローをダブルクリックし、フローエディタを開きます。
- ツールボックスから「Email」をトリガーエリアにDrag&Dropします。

- Emailトリガーをダブルクリックすると設定画面が表示されます。

【受信メールの情報を変数に格納】
- ツールボックスからデータマッパをフローエリアにDrag&Dropします。

- データマッパーをダブルクリックし、マッパ画面を表示します。
- 送り元に「XML」、送り先に「Variable」をDrag&Dropします。

【送り元の設定】
- 送り元を選択し、プロパティペインで送り元のプロパティを設定します。

【送り先の設定】
- 送り先を選択し、プロパティペインで送り先のプロパティを設定します。

【マッピング】
送り元 |
送り先 |
AttachmentName
(添付ファイルのファイル名) |
C.UserString |
AttachmentFile
(添付ファイルの内容) |
C.UserBlob |
【添付ファイルの復元】
- ツールボックスから「ファイル管理」コンポーネントをフローエリアにDrag&Dropします。
- プロパティペインでステップ名を「添付ファイル復元」に変更します。

- 「ファイル管理」コンポーネントをダブルクリックし、設定画面を開きます。
- 「追加」ボタンを押し、「Write File」メソッドを選択します。
- 右ペインで「対象ファイル名」、「データ」を以下のように設定します。

対象ファイル名 |
EnvVal (‘currentprojectdir’) & ‘Output\’ &
RepStr (C.UserString, ‘.csv’, ”) & ‘_’ &
DStr (Date (), ‘YYYYMMDD’) &
TStr (Time (), ‘HHMMSS’) & ‘.csv’ |
データ |
C.UserBlob |
【サブフローの呼び出し】
- ツールボックスから「フロー呼出」コンポーネントをフローエリアにDrag&Dropします。

- 「フロー呼出」コンポーネントをダブルクリックし、設定画面を開きます。
- フローID右側の[…]ボタンを押下し、フローリストを表示します。
- 表示されたフローリストから「CSV→DB書込(BP:CSV→DB)」を選択します。

【(参考)フロー変数の受け渡し】
- 呼び出し元フローと呼び出し先フローで、フロー変数の値を受け渡すことができます。
フロー変数の受け渡し_1.png)
「F.親フローの変数」の値が、「F.子フローの変数」にコピーされます。
子フロー側で「F.子フローの変数」の値を更新しても、「F.親フローの変数」には反映されません。
「F.親フローの変数」の値は、「F.子フローの変数」にコピーされません。
子フロー側で「F.子フローの変数」の値を更新すると、「F.親フローの変数」に反映されます。
「F.親フローの変数」の値が、「F.子フローの変数」にコピーされます。
子フロー側で「F.子フローの変数」の値を更新すると、「F.親フローの変数」に反映されます。
【フローの修正】
- 「CSV→DB書込」フローをダブルクリックし、フローエディタを開きます。
- データマッパをダブルクリックして、マッパ画面を表示します。

- 送り元のプロパティにて、送り元タイプをFileからVariableに変更します。
- 変数欄の[…]ボタンを押し、変数一覧から「C.UserBlob」を選択します。


【データ削除】
- デバッグを行う前に、商品マスターのデータを削除しておきます。

【ブレイクポイントの設定】
- ステップにブレイクポイントを設定すると、そのステップでデバッグが止まります。
- デバッグ停止中の各変数の値を確認することができます。
- 「メール監視」フローのデータマッパーにブレイクポイントを設定します。

【プロジェクトデバッグ】
- 今回のフローはトリガーやサブフローがあるのでプロジェクト全体をデバッグします。
- メニュー > デバッグxpi > デバッグ開始をクリックします。

【メール送信】
- Mozilla Thunderbirdを起動して、メールを送信します。

- デバッガがブレイクポイントで停止します。
- メニュー > デバッグxpi > コンテキストビューをクリックします。

【変数内容の確認】
- コンテキストビューで、その時点での各変数の内容を確認します。

- コンテキストツリーを右クリックし「継続」をクリックして、デバッグを再開します。

【Magic モニタの確認】

【データの確認】
- DBテーブルにレコードが追加されたことを確認します。

【ファイルの確認】
- ファイルが作成されたことを確認します。
- メニュー > デバッグxpi > デバッグ停止でデバッグを停止します。
