Magic xpiトレーニングテキスト
7. 基本的なアダプタの使い方その1

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.2 Emailコンポーネント

  • Emailコンポーネントを使用するとメールの送信・受信ができます。
  • トリガーエリアに配置すると、メール受信をトリガーとしてフローを起動できます。
  • フローエリアに配置すると、メールを送信することができます。

Emailコンポーネント

7.3 ファイル管理コンポーネント

  • ファイル管理コンポーネントを使用すると、ファイルやディレクトリの操作ができます。
    また、DOSコマンドやbatファイル、exeファイルなどを実行することもできます。
メソッド 説明
Append BLOB To File Blob変数の内容をファイルに格納します。
Command Line OSで実行できるコマンド(.bat, .exe含)を実行します。
Copy File ファイルをコピーします。
Copy Folder フォルダをコピーします。
Create File 新しいファイルを作成しながらデータを書き込みます。
Create Folder 新しいフォルダを作成します。
Delete File 指定したファイルを削除します。
Delete Folder 指定したフォルダとその中身を削除します。
Log File ログファイルを生成し、データを書き込みます。
Read File 選択されたファイルを変数に読み込みます。
Read Folder フォルダ内のファイル名をリストにして変数に読み込みます。
Rename File 指定したファイル名を変更します。
Rename Folder 指定したフォルダをリネームします。
Write File 指定したファイルにBLOB変数の内容を書き込みます。

7.4 フロー呼出コンポーネント

  • フロー呼出コンポーネントを使用すると、他のフローを呼び出すことができます。
  • 呼び出し元フローと呼び出し先フローは同一コンテキストなので、双方のフローにおいてコンテキスト変数の値の参照・更新が可能です。

フロー呼出コンポーネント

7.5 ディレクトリスキャナ

  • ディレクトリスキャナを使用すると、ディレクトリを監視・スキャンすることができます。
  • トリガーエリアに配置すると、ファイル出力をトリガーとしてフローを起動できます。
  • フローエリアに配置すると、ファイルの移動、削除、名前変更ができます。

ディレクトリスキャナ

7.6 CSVをDBに取り込む

【仕様】

  • データマッパーを使用して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書込」に名前変更します。

Magic xpi スタジオの起動

 

【MSSQLデータベースリソースの登録】

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

MSSQLデータベースリソースの登録

 

  • リソースタイプ「Database」を選択します。
  • リソース名「MSSQL」と入力し、「OK」ボタンを押します。

※禁則文字(@、&、% 等)は使用できません。

リソースタイプ「Database」

 

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

CSVをDBに取り込む

 

DBMS Microsoft SQL Serverを選択します
データベース名 iBOLTTest
サーバ .\SQLEXPRESS
ユーザ sa
パスワード mgtr

※ご利用の環境にあわせて設定します。

 

  • データベースへ接続できた場合は、設定を保存します。
  • データベースへ接続できなかった場合は、設定を修正してください。

CSVをDBに取り込む3

 

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

「データマッパー」をフローエリアにDrag&Drop

 

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

CSVをDBに取り込む

 

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

CSVをDBに取り込む

 

送り元タイプ 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し、プロパティペインで以下のように設定します。

CSVをDBに取り込む

 

【データベースウィザード】

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

データベースウィザード

 

【テーブルの選択】

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

テーブルの選択

 

【列の選択】

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

列の選択

 

【SQL文の自動生成】

  • 「終了」ボタンを押し、送り先の設定を完了します。

SQL文の自動生成

 

【マッピング】

  • マッパ画面で下図のようにマッピングを行います。

マッピング

 

【接続の仕方】

  • 送り元の項目をドラッグし、送り先の項目にドロップ

接続の仕方

 

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

接続の仕方2

 

【接続の削除の仕方】

  • 送り元の項目を右クリックし「接続を削除」をクリック

接続の削除の仕方

 

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

接続の削除の仕方

 

【ノード検索方法】

  • 送り元や送り先のノードを、下記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に取り込む

 

 

Date():システム日付取得

DStr(日付, 書式):日付型→文字型変換

Time():システム時刻取得

TStr(時刻, 書式):時刻型→文字型変換

 

 

 

 

送り先(MSSQLの商品マスタ) 「計算値」に設定する式
MSSQL商品マスター.更新日 Date()
MSSQL商品マスター.更新時刻 TStr(Time(), ‘HHMMSS’)

 

【条件の指定】

  • CSVの1行目が項目名の場合、そのレコードを読み飛ばす必要があります。
  • このような場合は、レコードレベルのマッピングに条件を設定します。

条件の指定

 

 

【式アシスターのソースノードボタン】

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

式アシスターのソースノードボタン

 

  • これで完成です。

完成

 

【データベースのデータ確認】

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

データベースのデータ確認

 

【フローのデバッグ】

  • デバッグには2つの方法があります。
デバッグの方法 実施手順 備考
プロジェクトデバッグ メニュー > デバッグxpi > デバッグ開始 トリガが設定されている場合や

サブフローがある場合はこの方法でデバッグ

フローデバッグ ソリューションエクスプローラで

フローを右クリックし「デバッグ」

特定のフローのみをデバッグ

トリガがなくても自動起動でデバッグできる

※いずれのデバッグ方法でも、停止手順(メニュー > デバッグxpi > デバッグ停止)は共通です。

 

  • フローデバッグをしてみましょう。
  • 「CSV→DB書込」フローを右クリックし、「デバッグ」をクリックします。

フローデバッグ

 

  • デバッグの実行中は下記のような画面になります。

デバッグの実行中

 

【Magic モニタの起動】

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

Magic モニタの起動

ユーザ admin
パスワード changeit

 

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

アクティビティログ

 

【データの確認】

  • DBテーブルにレコードが追加されたことを確認します。

データの確認

 

【デバッグの停止】

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

デバッグの停止

7.7 メールを監視する

【仕様】

  • メールボックスを監視します。
  • メールを受信します。
  • メールに添付されたCSVファイルを取り出します。
  • CSVファイルの内容をデータベースに格納します。

 

【フロー完成イメージ】

フロー完成イメージ

 

【受信用メールサーバリソースの登録】

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

受信用メールサーバリソースの登録

 

  • リソースタイプ「Email」を選択します。
  • リソース名「MailReceive」と入力し、「OK」ボタンを押します。

※禁則文字(@、&、% 等)は使用できません。

リソースタイプ「Email」を選択

 

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

右ペインに受信用メールサーバの詳細情報

※ご利用の環境にあわせて設定します。

備考
サーバタイプ 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」を選択

 

  • 右ペインにサービスの詳細情報を入力します。

右ペインにサービスの詳細情報を入力

Email(リソース) MailReceive
ポーリング間隔 5(秒)

 

【フローの作成】

  • ソリューションエクスプローラのビジネスプロセス「CSV→DB」を右クリックし、フローを追加します。
  • 追加したフローの名前を「メール監視」に変更します。

フローの作成

 

【メールトリガーの設定】

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

メールトリガーの設定

 

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

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 モニタの確認】

  • Magic モニタで実行状況を確認します。

Magic モニタの確認

 

【データの確認】

  • DBテーブルにレコードが追加されたことを確認します。

データの確認

 

【ファイルの確認】

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

ファイルの確認

7.8 ファイルを監視する

【仕様】

  • フォルダにファイルが出力されるのを監視します。
  • ファイルが出力されたら、ファイルのデータを読み取ります。
  • ファイルは他のフォルダに移動します。
  • 読み取ったCSVファイルのデータをデータベースに格納します。

 

【フロー完成イメージ】

フロー完成イメージ

 

【フローの作成】

  • ビジネスプロセス「CSV→DB」を右クリックしフローを追加します。
  • 追加したフローの名称を「ファイル監視」に変更します。

フローの作成

 

【ディレクトリスキャナの設定】

  • 「ファイル監視」フローをダブルクリックし、フローエディタを開きます。
  • ツールボックスから「DirectoryScanner」をトリガーエリアにDrag&Dropします。

ディレクトリスキャナの設定

 

  • 「DirectoryScanner」をダブルクリックして設定画面を開き、下記のように設定します。

DirectoryScanner

送り元 LAN
ディレクトリ EnvVal(‘currentprojectdir’) & ‘FileIn’
フィルタ *.*
アクション Move
送り先ディレクトリ EnvVal(‘currentprojectdir’) & ‘FileIn\done’
ポーリング間隔(ミリ秒) 3000

 

 

  • 「ログと戻値詳細」ボタンをクリックして、ログと戻値詳細画面を表示します。
  • 取得ファイル内容保存先に、変数「C.UserBlob」を設定します。

ログと戻値詳細

 

取得ファイル内容保存先 ファイルの内容が格納される変数名
送り先ファイル名保存先 監視したファイルが移動した後のフルパスが設定される変数名
送り元ファイル名保存先 監視したファイルが移動する前のフルパスが設定される変数名
引数XMLの場所を選択 上記要素を含む全パラメータがXMLとして保存される変数名

 

【サブフローの呼び出し】

  • ツールボックスから「フロー呼出」コンポーネントをフローエリアにDrag&Dropします。

サブフローの呼び出し

 

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

「フロー呼出」コンポーネントをダブルクリック

 

  • 以上でフローの作成は終了です。

フローの作成は終了

 

【データ削除】

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

データ削除

 

【プロジェクトデバッグ】

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

プロジェクトデバッグ

 

【ファイルの配置】

  • CSVファイルを監視フォルダにコピーします。

ファイルの配置

 

【ファイルの確認】

  • ファイルが移動されたことを確認します。

ファイルの確認

 

【Magic モニタの確認】

  • Magic モニタで実行状況を確認します。

Magic モニタの確認

 

【データの確認】

  • DBテーブルにレコードが追加されたことを確認します。
  • メニュー > デバッグxpi > デバッグ停止でデバッグを停止します。

データの確認