CData Arc で、B カートの受注情報をmcframe へ自動連携する

色川穂高 | 2022年12月05日

 
こんにちは。CData Software Japan の色川です。
 
さまざまな業務領域でSaaS の利活用が進んでいますが、業務の根幹を支える基幹システムについてはオンプレミスないしIaaS 環境で自社運用されているケースが多いかと思います。
各種ERP パッケージをはじめ、複数の業務機能を包含する基幹系システムでは、業務機能間での整合性を確保してデータを登録するためのインタフェースやツールがあらかじめ用意されていることが多いですよね。CSV など指定フォーマットのファイルをコマンドラインでインポート、などはとても良くあるケースではないでしょうか。
 
CData Arc ではこうしたあらかじめ用意されているコマンドラインツールを介した連携の自動化もサポートしています。
 
この記事では、ArcScript の「sysExecute」オペレーションを利用して、製造業向けのSCM/ERP ソフトウェアとして人気の高いmcframe のバッチ取込用コマンドラインツールを利用して受注データの連携を自動化する方法をご紹介します。
 

mcframe

 
mcframe は、ビジネスエンジニアリング株式会社(B-EN-G)が開発した製造業向けグローバルパッケージです。「ものづくり」に係るあらゆる業務/情報を管理する製造業のためのデジタルプラットフォームとして広く活用されています。
mcframe では、生産/原価/在庫/販売領域の業務管理のみならず、設計と製造のシームレスなプロセス連携、現場のOT情報と管理のIT情報の融合、国内、海外すべての自社拠点統合管理など、「ものづくり」のコアプロセスにフォーカスした製品をラインナップしています。発売開始から20年を超える歴史を持ち、豊富な導入実績と業務ノウハウ、そしてエンジニアリング企業としての確かな技術力をベースに提供されているパッケージです。
 
 
mcframe は、あらかじめ汎用的な業務機能を備えていますが、その「フレームワーク構造」により個別ニーズに対しても柔軟なカスタマイズが可能なことも大きな特長です。
 
 

CData Arc

 
CData Arc は、CData 製品の中で「自動化/Automate」を担うデータ連携ツールです。「B2B 連携をもっとシンプルに」をコンセプトに、ファイル連携 & DB 連携 & API 連携といったB2B 連携に必要なすべてをノーコード・ローコードでつなぐことができるプラットフォームです。
 
 
 

この記事のシナリオ

 
B2B 連携と言うと、EDI が思い浮かぶ方も多いと思いますが、B2B での取引においてもEC の活用が増えてきていますよね。EDI では基本的に決まった取引先とのやり取りになりますが、EC であれば世界中が取引先です。これからは多くの製造業でもB2B EC の活用が拡がっていくのではないでしょうか。
 
そこで、この記事では、mcframe へ取込む受注情報のデータソースとして、B2B EC として運営実績No.1 のB カートの受注データを繋げるシナリオを試してみました。
具体的には、B カートの受注データをAPI から取得して、mcframe の取込み用ファイルフォーマットに変換し、提供されているコマンドラインツールを実行することで、B カートからmcframe への受注データ連携を自動化してみます。
 
 
この記事では、B カートからの連携シナリオをご紹介しますが、CData Arc ではB カートを含め、250 を超えるSaaS やアプリケーション、グローバル標準のEDI プロトコルや電子メールを利用したEDI、Box などのクラウドストレージを利用したファイル共有など、API、DB、MFT、EDI の様々なインタフェースでのデータ連携をサポートします。EC 以外にも、EDI やクラウドストレージを介した企業間データ交換からの取込シナリオにも幅広く活用頂くことが可能です。
 
 

事前準備

 
事前準備として、必要な製品のインストールや、連携元・連携先の構成を確認していきましょう。
 

CData 製品のダウンロードとインストール

 
この記事のシナリオでは、こちらの製品を利用します。30 日間のトライアルライセンスが提供されていますので、ぜひお手元で試してみてください。
 
CData Arc
 
CData Arc のインストールはこちらを参考にしてください。
 
B カートとの接続には、CData API Driver とBCart 用のAPI Profile を利用します。
 
 
ダウンロードしたAPI Profile(*.apip ファイル)を以下のフォルダに配置します。
 
C:\APIProfiles\bcart.apip
 

CData Arc スタートアップガイドとナレッジベース

 
CData Arc を使いはじめるときは、こちらも参考にしてください。
 
CData Arc に関するナレッジは、こちらにまとめています。あわせて参考にしてください。
 

B カート

 
この記事でデータソースとなるB カートにはこのような受注データを用意しました。
 
 
B カートAPI への接続には、アクセストークンが必要です。こちらの記事で取得方法をご紹介していますので、あらかじめ取得してください。
 

mcframe

 
この記事では、mcframe7 のデモパックを利用しました。mcframe はサーバー・クライアント、CData Arc ともに同一環境に構成しています。受注データの取り込み結果は受注受信IF確認機能で確認することができます。
 
 
 

連携フローの作成

 
このシナリオで作成する連携フローは以下のような流れになっています。
 
B カートから受注データを取得し、取り込みフォーマットに必要な項目にマッピングした後、取り込みファイル形式であるCSV ファイルへ変換し、文字コードを変換して、取り込み用ディレクトリに出力しています。出力した後、最後に取り込み用のコマンドラインツールを、ArcScript に用意されている外部プログラム実行用オペレーション「sysExecute」を利用してコールすることで、一連の流れを自動化することができます。
 
    コネクタ    内容
1 CData         BCart API Profile を利用して、B カートの受注データを取得
2 XMLMap        1 のデータを取り込みフォーマットに必要な項目にマッピング
3 CSV           2 のXML ファイルをCSV ファイルに変換
4 Script        3 のCSV ファイルの文字コードを変換(Shift-JIS に)
5 File          4 のファイルをmcframe のバッチ取込用ディレクトリに出力した後、取り込み用コマンドを実行
 
 

1. CData コネクタ

 
最初に「B カートの受注データを取得」するCData コネクタを設定します。コアカテゴリから「CData コネクタ」を選択し、フローキャンバスへ配置します。
 
 
データソースに「CData API」を選択します。
 
 
高度な設定 - APIProfile でB カートのAPI Profile 用のファイルパスを指定し、Profile Settings でAPIKey を設定します。
 
 
接続テストでB カートへの接続ができることを確認します。
 
 
この記事では、受注データとしてOrders とOrderProducts の情報をSelect します。
 
 
アウトプットタブ - 受信を実行して、期待したデータが取得できることを確認します。
 
 

2. XMLMap コネクタ

 
次に「B カートから取得した受注データをmcframe の取り込みフォーマットに必要な項目にマッピング」するためにXMLMap コネクタを設定します。コアカテゴリから「XMLMap コネクタ」を選択し、フローキャンバスへ配置します。
 
 
CData コネクタからXMLMap コネクタにフローをつなぎます。これにより、XMLMap コネクタでソースファイルのスキーマを認識することができます。
 
 
mcframe の取り込みフォーマットに必要な項目をXML 形式に記述し、デスティネーションファイルのスキーマとしてアップロードします。
 
 
この記事では以下の様なフォーマットをデスティネーションファイルとして設定しました。
 
<?xml version="1.0" encoding="UTF-8"?>
<Items>
    <MST_SLO_RECV_IF>
        <data_lno />
        <data_no />
        <data_make_dt />
        <data_crud_typ />
        <po_no />
        <po_rev />
        <po_d_no />
        ... snip ...
        <ver_no />
        <lot_no />
        <sublot_no />
    </MST_SLO_RECV_IF>
</Items>
 
必要な項目をマッピングします。この記事では、B カートの受注番号をmcframe 受注の得意先注文NO へ。受注日時を送信元レコード作成日時として。その他適宜、連携させたい項目をマッピングしています。
 
 

3. CSV コネクタ

 
この記事のシナリオでは、mcframe への取り込み用ファイルフォーマットはShift-JIS で構成されたCSV ファイルを想定しています。次に「XML ファイルをCSV ファイルに変換」するためにCSV コネクタを設定します。コアカテゴリから「CSV コネクタ」を選択し、フローキャンバスへ配置します。マッピングを伴わないCSV/XML 間でのシンプルなフォーマット変換のときはCSV コネクタが便利です。マッピングを伴う場合はCSVMap コネクタが便利です。
 
 
列ヘッダを含んだCSV に変換したいので「カラムヘッダーが存在します」を有効にします。あとはデフォルトの設定で保存します。
 
 
XMLMap コネクタからフローをつなげておきます。
 
 

4. Script コネクタ

 
この記事のシナリオでは、mcframe への取り込み用ファイルフォーマットはShift-JIS で構成されたCSV ファイルを想定しています。CData Arc ではフローを流れるメッセージ(ヘッダとデータ)のエンコードにUTF8 を利用していますので、ファイル出力する前にShift-JIS に変換します。コアカテゴリから「Script コネクタ」を選択し、フローキャンバスへ配置します。
 
 
下記のArcScript でUTF8 でエンコードされているメッセージデータをShift-JIS として出力します。
 
 
<arc:set attr="file.file" value="[FilePath]" />
<arc:set attr="file.encoding" value="UTF-8" />
<arc:call op="fileRead" in="file" out="out">
  <arc:set attr="fileOut.data" value="[out.file:data]" />
</arc:call>

<arc:check attr="fileOut.data">   <arc:set attr="fileOut.filename" value="[FileName]" />   <arc:set attr="fileOut.encoding" value="Shift-JIS" />   <arc:push item="fileOut" />   <arc:else>     <arc:throw code="NoData" desc="No File Data."/>   </arc:else> </arc:check>
 
CSV コネクタからフローをつなげておきます。
 
 

5. File コネクタ

 
ここまでの流れで取得・変換したmcframe へバッチ取込するためのCSV ファイルを、mcframe のバッチ取込用ディレクトリに出力します。ファイルシステムとの入出力にはFile コネクタが便利です。コアカテゴリから「File コネクタ」を選択し、フローキャンバスへ配置します。
 
 
パスに、mcframe のバッチ取込用ディレクトリを指定します。
 
 
Script コネクタからフローをつなげておきます。ここまでの流れで、B カートの受注データをmcframe の取り込み用ディレクトリに指定フォーマットで出力するまでが作成できました。
 
 
ここまでの流れが期待通りに動作するか確認してみます。起点となるCData コネクタのアウトプットタブで受信を実行します。
 
 
File コネクタのインプットタブで正常に出力されている(ファイルシステムへインプットされている)ことが確認出来ます。
 
 
取り込み用ディレクトリにも期待通りに出力されています。
 
 

5.1. File コネクタ(送信後イベントでのコマンド実行)

 
最後にmcframe で用意されているバッチ取り込み用のコマンドラインツールを、ArcScript に用意されている外部プログラム実行用オペレーション「sysExecute」を利用してコールする設定をします。これにより一連の流れを自動化することができます。
 
File コネクタのイベントタブから「送信後イベント」を選択します。
 
 
外部プログラムの呼び出しは、ArcScript のビルトインオペレーションである「sysExecute」を利用することで実現することができます。sysExecute オペレーションでは、コマンドラインパラメータやワーキングディレクトリはもちろん、タイムアウトの設定や標準出力・標準エラー出力のハンドリングなどきめ細かくコントロールすることが可能です。
 
 
  
File コネクタの送信後イベントに以下のArcScript を設定します。
 
 
<arc:set attr="Name"       value="{mcframe のバッチ取込コマンドラインツールへのパス}" />
<arc:set attr="Arguments"  value='"{実行に必要なパラメータ}"' />
<arc:call op="sysExecute" />
 
これで「B カートの受注データをAPI から取得して、mcframe の取込み用ファイルフォーマットに変換し、提供されているコマンドラインツールを実行することで、B カートからmcframe への受注データ連携を自動化する」フローが出来上がりました。
 
 

連携フローの実行

 
作成したフローを実行して確認してみましょう。
 
起点となるCData コネクタからフローを実行してみます。アウトプットタブから「受信」を実行します。
 
 
mcframe の受注受信IF確認で、取り込みが処理されていることが確認できました。
 
 

連携フローの自動実行

 
CData Arc ではフローを定期実行するスケジューラ機能を持っています。今回のシナリオであれば、フローの起点となるCData コネクタの「オートメーション」タブで設定することができます。例えば、毎日12:00に定期実行する場合は、このように設定します。
 
 

おわりに

 
この記事では、B2B EC サービスのB カートからmcframe へ受注情報を取込むシナリオを試してみました。CData Arc ではB カートを含め、250 を超えるSaaS やアプリケーション、グローバル標準のEDI プロトコルや電子メールを利用したEDI、Box などのクラウドストレージを利用したファイル共有など、API、DB、MFT、EDI の様々なインタフェースでのデータ連携をサポートします。EC 以外にも、EDI やクラウドストレージを介した企業間データ交換からの基幹系連携に幅広く活用頂くことが可能です。
 
データ連携のインタフェースとして、インポート用ファイルやインポートツールが提供されているサービスやアプリケーションはとても多いと思います。また既存のソフトウェア資産と連携したい(既存のソフトウェアを実行したり結果を得たりしたい)ケースも多いのではないでしょうか。そう言ったシナリオでは、ぜひ今回の記事でご紹介したsysExecute オペレーションを活用して自動化フローに組み込んでみてください。
 
CData Arc はシンプルで拡張性の高いコアフレームワークに、豊富なMFT・EDI・エンタープライズコネクタを備えたパワフルな製品です。CData Drivers との組み合わせで250を超えるアプリケーションへの連携を実現できます。必要な連携を低価格からはじめられる事も大きな特長です。
 
皆さんのつなぎたいシナリオでぜひ CData Arc を試してみてください。

製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
 

この記事では CData Arc™ 2022 - 22.0.8336.0 を利用しています。