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)」を選択します。
【(参考)フロー変数の受け渡し】
- 呼び出し元フローと呼び出し先フローで、フロー変数の値を受け渡すことができます。
「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 > デバッグ停止でデバッグを停止します。