Magic xpiはIBMiのような企業内の基幹システムや各種アプリケーション、クラウドサービスをノーコーディングで連携・統合を可能とするシステム連携プラットフォームです。
今回Magic xpi設定例としてメールに添付したcsvファイルを自動的に取得し、IBMiデータベースへ直接書き込む手順をご紹介いたします。
動画で解説
音声付き、約13分のビデオです
動作概要
①注文主であるユーザーuser03は決められた項目の並びの注文ファイルをメール添付し件名を「注文します」としてuser01へ送信します。今回はこの件名「注文します」が一致したメールを②Magic xpiが監視し、③該当する場合添付ファイを取得し、④IBMiデータベースへSQLで書き込みます。

今回テスト用の添付ファイルは下図のような商品コード、商品名、数量、備考・・といったcsvファイルです。本来はヘッダーや注文主情報など必要ですが動作確認用に特化したため簡略化しました。

実際の設定では下図のように、①メール監視であるメールトリガーを配置し、②該当メールの場合データマッパーを用い添付ファールデータを内部変数に格納します。③内部変数に格納したデータをファイルとして保存後、④IBMiデータベースへ書き込むフローを呼び出しています。

メール監視設定
user01のメールBOXを監視するためuser01メール受信設定をMagic xpiに行います。

この上図の接続設定を用い、下図のように5秒間隔でuser01のメールBOXを読みに行く設定をしています。

メールBOXを読む条件は下図のようにFrom、To、CC、BCC、件名、本文、等でフィルタ指定が可能です。ですので今回のように件名「注文します」だけで該当メールなのか否か判断する以外に、Fromを使って特定の送信者のみに絞る・・などの設定も可能です。注目して頂きたいのは「引数XMLの場所」に変数「C.UserXML」を指定している事です。これはFrom、To、CC、BCC、件名、本文、添付ファイル・・・など電子メールに関わる項目をXMLファイルのタグとしてデータマッパーを用い取得可能としています。

添付ファールデータを内部変数に格納
電子メールに関わる項目を変数「C.UserXML」に取得していますので、下図のようにデータマッパーを用いて「添付ファイル」の部分だけを取得するため「データマッパー」を設定します。

データマッパーの送り元には「C.UserXML」を指定したいので、下図のようにXMLを用います。

XMLツリーの方にある「AttachmentFile」が添付ファイル本体です。この「AttachmentFile」をよく見るとアイコンが01101010・・のようにバイナリーです。

ですので「AttachmentFile」の送り先に、下図のようにValiable(変数)を指定しバイナリーオブジェクトが格納可能な変数「C.UserBlob」に保存し、次のステップでこの変数「C.UserBlob」をファイル化します。

内部変数に格納したデータをファイルとして保存
バイナリーデータである変数「C.UserBlob」をファイルに保管したいため「ファイル管理」を用います。

下図のようにファイル管理設定では「C.UserBlob」を「注文.csv」と言う名前で書き込む設定をしています。

IBMiへ書き込み
下図のように事前にIBMiのIPアドレス、ユーザー、パスワード、ライブラリなど、IBMiとの接続情報と、使用するテーブルの設定が必要です。

IBMiへの書き込みはデータマッパーを用い、前記で「C.UserBlob」をファイルとして保存した「注文.csv」を送り元として指定したいのでFlatFileを用い、項目名、データタイプ、フォーマットを指定しています。

送り先はIBMiになるのでDataBaseを用いSQL文を指定します。

SQL文はウイザードで下図のように①Delete、Insert、Updateなどの操作の選択、②テーブル選択、③列選択をGUI操作で設定が可能ですので、SQL文を直接書かなくとも④SQL文の生成が可能です。

IBMiへの書き込みにはジャーナルが必要
最後にIBMi側で書き込み先IBMiテーブルにジャーナル設定を行います。例えばYASLIBの物理ファイルTEST01にジャーナルを以下のように仕掛けました。
CRTJRNRCV JRNRCV(YASLIB/TESTJRCV01) AUT(*ALL)
CRTJRN JRN(YASLIB/TESTJRN) JRNRCV(YASLIB/TESTJRCV01)
STRJRNPF FILE(YASLIB/TEST01) JRN(YASLIB/TESTJRN) IMAGES(*BOTH)
関連リンク
お問合せ
https://alpcom.co.jp/contact/
アルファー・コミュニケーションズ公式YouTube
https://www.youtube.com/channel/UCTqwZsRRpAs9NPTUz2yH3ow/videos
データ活用支援サービス
https://alpcom.co.jp/products/data_utilization/