4.2. Spoonを使ってデータ変換ファイル作成
これからkikan.productmasterのデータをadempiere.lja_productmasterに取り込むステップを記載します。
差分抽出するため、おおまかな流れとしては以下のようになります。
- adempiere.lja_productmasterの主キーのMAXナンバー取得
- 1で取得したデータを元に前回との差分をkikan.productmasterから取得
- 定数の設定
- 取得したデータをadempiere.lja_productmasterに挿入
1. adempiere.lja_productmasterの主キーのMAXナンバー取得
- 面左上の[デザイン]をクリックし[入力]-[table input]を右側にドラック&ドロップします。
-
画面右側の[table input]をダブルクリックして開き、以下のように設定します。
- データソース名: adempeire
- SQL: SELECT max(lja_productmaster_id) FROM lja_productmaster
2. 1で取得したデータを元に前回との差分をkikan.productmasterから取得
- [入力]-[table input]を右側にドラック&ドロップします。
-
[table input2]というステップが作成されますのでShiftキーを押しながら[table input]をクリックしたまま、[table input2]に矢印をつなげ、クリックをリリースします。すると以下のような線が引かれます。
-
画面右側の[table input2]をダブルクリックして開き、以下のように設定します。
- データソース名: kikan
- SQL: SELECT SELECT * FROM productmaster where productmaster.key > ?
- 先行のステップから値を引き継ぐ: チェック
- ステップ名: Table input
※?部分には[table input]で取得したmax(lja_productmaster_id)が入ります。
3. 定数の設定
これで基幹システムから前回からの追加分のデータが取得されるので、そのデータをinsertしてやりますが、その前にadempiere.lja_productmasterにはad_client_id, ad_org_id, createdby, updatedbyといったカラムがあるので、その値を設定してやる必要があります。
- [変換]-[Calculator]を右側にドラック&ドロップします。
- [Calculator]ステップと[table input2]をつなげます
- [Calculator]ステップを開き、以下のように設定します。
4. 取得したデータをadempiere.lja_productmasterに挿入
- [出力]-[Table output]を右側にドラック&ドロップします。
- [Table output]ステップと[Calculator]ステップをつなげます。
-
[Table output]ステップを開き、以下のように設定します。
- データソース名: adempiere
- テーブル名: lja_productmaster
- 列名を指定する: チェック
- [列名]タブを選択し[フィールドマッピング]ボタンをクリックし以下のように設定しOKボタンをクリックします。
これで完成です。メニューより[action]-[実行]を実行するとlja_productmasterにデータが挿入されます。なお出来あがったktrファイルをタスクスケジューラーから定期的にpanから実行してやることで基幹システムデータを定期的に取得できるようになります(詳しくは筆者サイトのエントリーを参照ください)。
実際の場合、基幹システム側のデータの更新、削除を考慮しなければならないため差分抽出はより複雑になります。
なおADempiereの商品マスタウィンドウは下記のように表示されます。
まとめ
この連載は今回で最後となります。今までADempiereのフレームワークに特化した内容を紹介してきましたが、ADempiereはOSSのERPですので、販売管理、生産管理、ワークフローなどの機能をデフォルトで持っており、それはそれで魅力的です。しかもADempiereは、このような柔軟性に富んだフレームワークも持ち合わせており、筆者は非常にポテンシャルが高いソフトウェアだと思っております。
ERP導入は中小企業において、その導入の難しさ、導入費用の高さから高嶺の花です。しかしADempiereはOSSであるが故に導入費用も低く抑えられ、また拡張性の高さから、最初は小さく入れて徐々に使用機能を増やしていく、といった手段をとることで導入リスクを減らすことも可能です。
2012/2現在、下記にてADempiereの勉強会を開催しておりますので本連載を通じて興味を持たれた方はお気軽にご参加ください。