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独自のタグを埋め込んだテンプレートファイルを用意し、タグ部分に動的に値を設定
【データマッパーの設定例】
![データマッパーの設定例](https://www.magicsoftware.com/wp-content/uploads/2021/03/データマッパーの設定例-1024x543.png)
7.6 CSVをDBに取り込む
【仕様】
- データマッパーを使用してCSVのデータをDB上の商品マスタに書き込みます。
- CSVおよびDB上の商品マスタのレイアウトは下記の通りです。
![CSVをDBに取り込む](https://www.magicsoftware.com/wp-content/uploads/2021/03/CSVをDBに取り込む.png)
列名 |
データ型 |
商品番号 |
float |
商品名 |
char(255) |
販売価格 |
numeric(17,5) |
在庫数量 |
float |
仕入先コード |
float |
作成日 |
datetime |
作成時刻 |
char(6) |
更新日 |
datetime |
更新時刻 |
char(6) |
【Magic xpi スタジオの起動】
- 「ファイル」メニューから「開く」を選択し「MagicxpiSample1.sln」を開きます。
- ビジネスプロセスを右クリックし「CSV→DB」に名前変更します。
- フローを右クリックし「CSV→DB書込」に名前変更します。
![Magic xpi スタジオの起動](https://www.magicsoftware.com/wp-content/uploads/2021/03/Magic-xpi-スタジオの起動-1.png)
【MSSQLデータベースリソースの登録】
- メニュー > プロジェクト > 設定をクリックします。
- 左ペインで「リソース」が選択されている状態で「追加」ボタンを押します。
![MSSQLデータベースリソースの登録](https://www.magicsoftware.com/wp-content/uploads/2021/03/MSSQLデータベースリソースの登録.png)
- リソースタイプ「Database」を選択します。
- リソース名「MSSQL」と入力し、「OK」ボタンを押します。
※禁則文字(@、&、% 等)は使用できません。
![リソースタイプ「Database」](https://www.magicsoftware.com/wp-content/uploads/2021/03/リソースタイプ「Database」.png)
- 右ペインにデータベース接続のための詳細情報を入力します。
- 入力が終わったら画面下部の「検証」ボタンを押します。
![CSVをDBに取り込む](https://www.magicsoftware.com/wp-content/uploads/2021/03/CSVをDBに取り込む2.png)
名 |
値 |
DBMS |
Microsoft SQL Serverを選択します |
データベース名 |
iBOLTTest |
サーバ |
.\SQLEXPRESS |
ユーザ |
sa |
パスワード |
mgtr |
※ご利用の環境にあわせて設定します。
- データベースへ接続できた場合は、設定を保存します。
- データベースへ接続できなかった場合は、設定を修正してください。
![CSVをDBに取り込む3](https://www.magicsoftware.com/wp-content/uploads/2021/03/CSVをDBに取り込む3.png)
- ツールボックスから「データマッパー」をフローエリアにDrag&Dropします。
![「データマッパー」をフローエリアにDrag&Drop](https://www.magicsoftware.com/wp-content/uploads/2021/03/CSVをDBに取り込む4-1024x552.png)
- データマッパーを選択し、プロパティペインでステップ名を設定します。
![CSVをDBに取り込む](https://www.magicsoftware.com/wp-content/uploads/2021/03/CSVをDBに取り込む5-1024x527.png)
- マッパ画面が表示されます。
- 送り元にFlat FileをDrag&Dropし、プロパティペインで以下のように設定します。
![CSVをDBに取り込む](https://www.magicsoftware.com/wp-content/uploads/2021/03/CSVをDBに取り込む6-1024x552.png)
送り元タイプ |
File |
データ送り元エンコーティング |
ANSI |
ファイルパス
※次々頁参照 |
EnvVal(‘currentprojectdir’)&’csv\input1.csv’ |
区切文字をデータに含める
※次頁参照 |
No |
名 |
CSV |
【区切文字をデータに含める】
- 区切文字(CSVの場合はカンマ)をデータに含める場合、その文字が区切文字なのか、それともデータの一部なのかを識別するために、データをダブルクォーテーションで囲う必要があります。
例)
Tokyo, Ohta,03-1111-2222 ← 3つのデータとして識別される
“Tokyo, Ohta”,”03-1111-2222″ ← 2つのデータとして識別される
- 送り元のデータがダブルクォーテーションで囲われている場合、送り元のプロパティ「区切文字をデータに含める」を「Yes」に設定します。
- 送り先のデータをダブルクォーテーションをつけて出力したい場合、送り先のプロパティ「区切文字をデータに含める」を「Yes」に設定します。
【式アシスター】
- ファイルパス右側の[…]ボタンをクリックすると「式アシスター」画面が表示されます。
- 各ボタンによる入力補助機能を使用して式を作成し、文法チェックを行うことができます。
![式アシスター](https://www.magicsoftware.com/wp-content/uploads/2021/03/式アシスター-1-1024x386.png)
【式アシスターの環境変数ボタン】
- 式アシスター画面の環境変数ボタンを押し「currentprojectdir」をダブルクリックします。
- 環境変数の値を取得するEnvVal関数を使用した式が設定されます。
- 環境変数「currentprojectdir」の値は、現在のプロジェクトフォルダのパスです。
![式アシスターの環境変数ボタン](https://www.magicsoftware.com/wp-content/uploads/2021/03/式アシスターの環境変数ボタン.png)
【フラットファイルの詳細設定】
- 詳細の右側の[…]ボタンをクリックし、フラットファイルの詳細設定画面を表示します。
![フラットファイルの詳細設定](https://www.magicsoftware.com/wp-content/uploads/2021/03/フラットファイルの詳細設定-1024x417.png)
- 送り先にDataBaseをDrag&Dropし、プロパティペインで以下のように設定します。
![CSVをDBに取り込む](https://www.magicsoftware.com/wp-content/uploads/2021/03/CSVをDBに取り込む7-1024x536.png)
【データベースウィザード】
- ウィザードの右側の[…]ボタンをクリックし、データベースウィザード画面を開きます。
![データベースウィザード](https://www.magicsoftware.com/wp-content/uploads/2021/03/データベースウィザード-1024x473.png)
【テーブルの選択】
- 「MSSQL商品マスター」を選択し「追加」ボタンで追加し、「次へ」ボタンを押下します。
![テーブルの選択](https://www.magicsoftware.com/wp-content/uploads/2021/03/テーブルの選択-1024x311.png)
【列の選択】
- 「MSSQL商品マスター」を選択し「追加」ボタンで追加し、「次へ」ボタンを押下します。
![列の選択](https://www.magicsoftware.com/wp-content/uploads/2021/03/列の選択-1024x341.png)
【SQL文の自動生成】
![SQL文の自動生成](https://www.magicsoftware.com/wp-content/uploads/2021/03/SQL文の自動生成-1024x350.png)
【マッピング】
![マッピング](https://www.magicsoftware.com/wp-content/uploads/2021/03/マッピング-1024x506.png)
【接続の仕方】
![接続の仕方](https://www.magicsoftware.com/wp-content/uploads/2021/03/接続の仕方-1024x149.png)
- 送り元の項目を右クリックし「接続」をクリック → 送り先の項目をクリック
![接続の仕方2](https://www.magicsoftware.com/wp-content/uploads/2021/03/接続の仕方2-1-1024x197.png)
【接続の削除の仕方】
- 送り元の項目を右クリックし「接続を削除」をクリック
![接続の削除の仕方](https://www.magicsoftware.com/wp-content/uploads/2021/03/接続の削除の仕方-1024x142.png)
- 送り元の親項目を右クリックし「全ての接続を削除」をクリック
![接続の削除の仕方](https://www.magicsoftware.com/wp-content/uploads/2021/03/接続の削除の仕方2-1-1024x177.png)
【ノード検索方法】
- 送り元や送り先のノードを、下記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商品マスター.更新時刻 ※マッピングせず「計算値」に式を設定(次頁) |
【式アシスターの関数ボタン】
- 式アシスターの関数ボタンを押すと、ドロップダウンリストに関数が表示されます。
- 関数をダブルクリックすると、式の中に関数が挿入されます。
![CSVをDBに取り込む](https://www.magicsoftware.com/wp-content/uploads/2021/03/CSVをDBに取り込む8.png)
Date():システム日付取得
DStr(日付, 書式):日付型→文字型変換
Time():システム時刻取得
TStr(時刻, 書式):時刻型→文字型変換
送り先(MSSQLの商品マスタ) |
「計算値」に設定する式 |
MSSQL商品マスター.更新日 |
Date() |
MSSQL商品マスター.更新時刻 |
TStr(Time(), ‘HHMMSS’) |
【条件の指定】
- CSVの1行目が項目名の場合、そのレコードを読み飛ばす必要があります。
- このような場合は、レコードレベルのマッピングに条件を設定します。
![条件の指定](https://www.magicsoftware.com/wp-content/uploads/2021/03/条件の指定-1024x398.png)
【式アシスターのソースノードボタン】
- 式アシスターのソースノードボタンを押すと、ソースノードを表す文字列が表示されます。
- ソースノードを表す文字列をダブルクリックすると、式に反映されます。
![式アシスターのソースノードボタン](https://www.magicsoftware.com/wp-content/uploads/2021/03/式アシスターのソースノードボタン.png)
![完成](https://www.magicsoftware.com/wp-content/uploads/2021/03/完成-1024x448.png)
【データベースのデータ確認】
- データベースのデータを確認するにはManagement Studioを使用します。
![データベースのデータ確認](https://www.magicsoftware.com/wp-content/uploads/2021/03/データベースのデータ確認-1024x391.png)
【フローのデバッグ】
デバッグの方法 |
実施手順 |
備考 |
プロジェクトデバッグ |
メニュー > デバッグxpi > デバッグ開始 |
トリガが設定されている場合や
サブフローがある場合はこの方法でデバッグ |
フローデバッグ |
ソリューションエクスプローラで
フローを右クリックし「デバッグ」 |
特定のフローのみをデバッグ
トリガがなくても自動起動でデバッグできる |
※いずれのデバッグ方法でも、停止手順(メニュー > デバッグxpi > デバッグ停止)は共通です。
- フローデバッグをしてみましょう。
- 「CSV→DB書込」フローを右クリックし、「デバッグ」をクリックします。
![フローデバッグ](https://www.magicsoftware.com/wp-content/uploads/2021/03/フローデバッグ.png)
![デバッグの実行中](https://www.magicsoftware.com/wp-content/uploads/2021/03/デバッグの実行中.png)
【Magic モニタの起動】
- デスクトップのショートカットからMagic モニタを起動します。
![Magic モニタの起動](https://www.magicsoftware.com/wp-content/uploads/2021/03/Magic-モニタの起動-1024x365.png)
- 「アクティビティログ」タブでフローの実行状況を確認します。
![アクティビティログ](https://www.magicsoftware.com/wp-content/uploads/2021/03/アクティビティログ-1024x505.png)
【データの確認】
- DBテーブルにレコードが追加されたことを確認します。
![データの確認](https://www.magicsoftware.com/wp-content/uploads/2021/03/データの確認-1024x518.png)
【デバッグの停止】
- デバッグを停止するにはメニュー > デバッグxpi > デバッグ停止をクリックします。
![デバッグの停止](https://www.magicsoftware.com/wp-content/uploads/2021/03/デバッグの停止-1024x578.png)
7.7 メールを監視する
【仕様】
- メールボックスを監視します。
- メールを受信します。
- メールに添付されたCSVファイルを取り出します。
- CSVファイルの内容をデータベースに格納します。
【フロー完成イメージ】
![フロー完成イメージ](https://www.magicsoftware.com/wp-content/uploads/2021/03/フロー完成イメージ-1024x461.png)
【受信用メールサーバリソースの登録】
- メニュー > プロジェクト > 設定をクリックします。
- 左ペインで「リソース」が選択されている状態で「追加」ボタンを押します。
![受信用メールサーバリソースの登録](https://www.magicsoftware.com/wp-content/uploads/2021/03/受信用メールサーバリソースの登録.png)
- リソースタイプ「Email」を選択します。
- リソース名「MailReceive」と入力し、「OK」ボタンを押します。
※禁則文字(@、&、% 等)は使用できません。
![リソースタイプ「Email」を選択](https://www.magicsoftware.com/wp-content/uploads/2021/03/リソースタイプ「Email」を選択.png)
- 右ペインに受信用メールサーバの詳細情報を入力します。
- 入力が終わったら画面下部の「検証」ボタンを押します。
![右ペインに受信用メールサーバの詳細情報](https://www.magicsoftware.com/wp-content/uploads/2021/03/右ペインに受信用メールサーバの詳細情報.png)
※ご利用の環境にあわせて設定します。
名 |
値 |
備考 |
サーバタイプ |
POP3 |
|
受信メールサーバ |
localhost |
POPサーバアドレス |
受信ポート番号 |
(空白) |
受信用ポート番号(省略時は110)
POP:110、
POP(Secure):995、
IMAP:143
IMAP(Secure):993 |
受信セキュア接続 |
No |
Yes, Noが選択可 |
ユーザ |
postmaster |
POPサーバユーザ |
パスワード |
12345 |
POPサーバパスワード |
【受信用メールサーバサービスの登録】
- xpiで外部からのアクセスを受け付けるために、サービスを登録します。
- メニュー > プロジェクト > 設定をクリックします。
- 左ペインで「サービス」が選択されている状態で「追加」ボタンを押します。
![受信用メールサーバサービスの登録](https://www.magicsoftware.com/wp-content/uploads/2021/03/受信用メールサーバサービスの登録.png)
- サービスタイプ「Email」を選択します。
- サービス名「MailTrigger」と入力し、「OK」ボタンを押します。
※禁則文字(@、&、% 等)は使用できません。
![サービスタイプ「Email」を選択](https://www.magicsoftware.com/wp-content/uploads/2021/03/サービスタイプ「Email」を選択.png)
![右ペインにサービスの詳細情報を入力](https://www.magicsoftware.com/wp-content/uploads/2021/03/右ペインにサービスの詳細情報を入力-1024x499.png)
名 |
値 |
Email(リソース) |
MailReceive |
ポーリング間隔 |
5(秒) |
【フローの作成】
- ソリューションエクスプローラのビジネスプロセス「CSV→DB」を右クリックし、フローを追加します。
- 追加したフローの名前を「メール監視」に変更します。
![フローの作成](https://www.magicsoftware.com/wp-content/uploads/2021/03/フローの作成.png)
【メールトリガーの設定】
- 「メール監視」フローをダブルクリックし、フローエディタを開きます。
- ツールボックスから「Email」をトリガーエリアにDrag&Dropします。
![メールトリガーの設定](https://www.magicsoftware.com/wp-content/uploads/2021/03/メールトリガーの設定-1024x437.png)
- Emailトリガーをダブルクリックすると設定画面が表示されます。
![Emailトリガーをダブルクリック](https://www.magicsoftware.com/wp-content/uploads/2021/03/Emailトリガーをダブルクリック.png)
【受信メールの情報を変数に格納】
- ツールボックスからデータマッパをフローエリアにDrag&Dropします。
![受信メールの情報を変数に格納](https://www.magicsoftware.com/wp-content/uploads/2021/03/受信メールの情報を変数に格納.png)
- データマッパーをダブルクリックし、マッパ画面を表示します。
- 送り元に「XML」、送り先に「Variable」をDrag&Dropします。
![データマッパーをダブルクリック](https://www.magicsoftware.com/wp-content/uploads/2021/03/データマッパーをダブルクリック.png)
【送り元の設定】
- 送り元を選択し、プロパティペインで送り元のプロパティを設定します。
![送り元の設定](https://www.magicsoftware.com/wp-content/uploads/2021/03/送り元の設定-1024x392.png)
【送り先の設定】
- 送り先を選択し、プロパティペインで送り先のプロパティを設定します。
![送り先の設定](https://www.magicsoftware.com/wp-content/uploads/2021/03/送り先の設定-1024x442.png)
【マッピング】
送り元 |
送り先 |
AttachmentName
(添付ファイルのファイル名) |
C.UserString |
AttachmentFile
(添付ファイルの内容) |
C.UserBlob |
【添付ファイルの復元】
- ツールボックスから「ファイル管理」コンポーネントをフローエリアにDrag&Dropします。
- プロパティペインでステップ名を「添付ファイル復元」に変更します。
![添付ファイルの復元](https://www.magicsoftware.com/wp-content/uploads/2021/03/添付ファイルの復元.png)
- 「ファイル管理」コンポーネントをダブルクリックし、設定画面を開きます。
- 「追加」ボタンを押し、「Write File」メソッドを選択します。
- 右ペインで「対象ファイル名」、「データ」を以下のように設定します。
![ファイル管理」コンポーネント](https://www.magicsoftware.com/wp-content/uploads/2021/03/ファイル管理」コンポーネント.png)
対象ファイル名 |
EnvVal (‘currentprojectdir’) & ‘Output\’ &
RepStr (C.UserString, ‘.csv’, ”) & ‘_’ &
DStr (Date (), ‘YYYYMMDD’) &
TStr (Time (), ‘HHMMSS’) & ‘.csv’ |
データ |
C.UserBlob |
【サブフローの呼び出し】
- ツールボックスから「フロー呼出」コンポーネントをフローエリアにDrag&Dropします。
![サブフローの呼び出し](https://www.magicsoftware.com/wp-content/uploads/2021/03/サブフローの呼び出し.png)
- 「フロー呼出」コンポーネントをダブルクリックし、設定画面を開きます。
- フローID右側の[…]ボタンを押下し、フローリストを表示します。
- 表示されたフローリストから「CSV→DB書込(BP:CSV→DB)」を選択します。
![「フロー呼出」コンポーネント](https://www.magicsoftware.com/wp-content/uploads/2021/03/「フロー呼出」コンポーネント-1024x404.png)
【(参考)フロー変数の受け渡し】
- 呼び出し元フローと呼び出し先フローで、フロー変数の値を受け渡すことができます。
![(参考)フロー変数の受け渡し](https://www.magicsoftware.com/wp-content/uploads/2021/03/(参考)フロー変数の受け渡し_1.png)
「F.親フローの変数」の値が、「F.子フローの変数」にコピーされます。
子フロー側で「F.子フローの変数」の値を更新しても、「F.親フローの変数」には反映されません。
「F.親フローの変数」の値は、「F.子フローの変数」にコピーされません。
子フロー側で「F.子フローの変数」の値を更新すると、「F.親フローの変数」に反映されます。
「F.親フローの変数」の値が、「F.子フローの変数」にコピーされます。
子フロー側で「F.子フローの変数」の値を更新すると、「F.親フローの変数」に反映されます。
【フローの修正】
- 「CSV→DB書込」フローをダブルクリックし、フローエディタを開きます。
- データマッパをダブルクリックして、マッパ画面を表示します。
![フローの修正](https://www.magicsoftware.com/wp-content/uploads/2021/03/フローの修正-1024x393.png)
- 送り元のプロパティにて、送り元タイプをFileからVariableに変更します。
- 変数欄の[…]ボタンを押し、変数一覧から「C.UserBlob」を選択します。
![送り元のプロパティ](https://www.magicsoftware.com/wp-content/uploads/2021/03/送り元のプロパティ.png)
![フローの作成は終了](https://www.magicsoftware.com/wp-content/uploads/2021/03/フローの作成は終了-1024x476.png)
【データ削除】
- デバッグを行う前に、商品マスターのデータを削除しておきます。
![データ削除](https://www.magicsoftware.com/wp-content/uploads/2021/03/データ削除.png)
【ブレイクポイントの設定】
- ステップにブレイクポイントを設定すると、そのステップでデバッグが止まります。
- デバッグ停止中の各変数の値を確認することができます。
- 「メール監視」フローのデータマッパーにブレイクポイントを設定します。
![ブレイクポイントの設定](https://www.magicsoftware.com/wp-content/uploads/2021/03/ブレイクポイントの設定-1024x476.png)
【プロジェクトデバッグ】
- 今回のフローはトリガーやサブフローがあるのでプロジェクト全体をデバッグします。
- メニュー > デバッグxpi > デバッグ開始をクリックします。
![プロジェクトデバッグ](https://www.magicsoftware.com/wp-content/uploads/2021/03/プロジェクトデバッグ-1024x307.png)
【メール送信】
- Mozilla Thunderbirdを起動して、メールを送信します。
![メール送信](https://www.magicsoftware.com/wp-content/uploads/2021/03/メール送信-1024x440.png)
- デバッガがブレイクポイントで停止します。
- メニュー > デバッグxpi > コンテキストビューをクリックします。
![デバッガがブレイクポイント](https://www.magicsoftware.com/wp-content/uploads/2021/03/デバッガがブレイクポイント-1024x460.png)
【変数内容の確認】
- コンテキストビューで、その時点での各変数の内容を確認します。
![変数内容の確認](https://www.magicsoftware.com/wp-content/uploads/2021/03/変数内容の確認-1024x360.png)
- コンテキストツリーを右クリックし「継続」をクリックして、デバッグを再開します。
![コンテキストツリーを右クリックし「継続」](https://www.magicsoftware.com/wp-content/uploads/2021/03/コンテキストツリーを右クリックし「継続」.png)
【Magic モニタの確認】
![Magic モニタの確認](https://www.magicsoftware.com/wp-content/uploads/2021/03/Magic-モニタの確認.png)
【データの確認】
- DBテーブルにレコードが追加されたことを確認します。
![データの確認](https://www.magicsoftware.com/wp-content/uploads/2021/03/データの確認-1-1024x518.png)
【ファイルの確認】
- ファイルが作成されたことを確認します。
- メニュー > デバッグxpi > デバッグ停止でデバッグを停止します。
![ファイルの確認](https://www.magicsoftware.com/wp-content/uploads/2021/03/ファイルの確認-1024x414.png)