1. はじめに
第1回目の本稿では、OSSのERP「ADempiere」の概要説明と、ADempeireフレームワークを使ってノンプログラミングでCRUD画面を作成する手順を紹介します。
2. 対象読者
- OSSのERPに興味がある方。またそのカスタマイズに興味がある方。
- CRUD画面をノンプログラミングで作成できるフレームワークを探している方。
- 基幹システムのフレームワークを探している方。
※本稿はSQLの知識を必要とします。
3. ADempiereとは
ADempiereとは、Compiere(コンピエール)よりForkしたOSSのERPパッケージです。
もともとOSS-ERPとしてCompiereコミュニティ版が公開されていましたが、そのコミュニティが閉鎖傾向にあったため、2006年9月にRed1さんが発起人となりCompiereから分離する形でADempiereというプロジェクトが立ち上がりました(「Debate - Has Compiere Become Closed? Do We Fork? How?」はADempiere誕生のきっかけとなったスレッドです)。
バザール方式による開発、情報提供が進められており、現在ではCompiereコミュニティ版(販売管理機能、在庫管理機能、購買管理機能、財務・会計機能が付与)にない独自の機能(生産管理、固定資産管理など)が付与され、現在も開発が進められています。
なお詳しい導入実績については分かりませんが、各国のADempiere関係者3名に伺ったところ、筆者のブログエントリーに記載した回答を得ました。このように世界レベルで導入実績のあるERPです。
3.1. ADempiereのアーキテクチャー
ADempiereはJava(1.6系)で作られており、DBはOracleXE, PostgreSQL, MySQLで稼働します。ユーザーインターフェースは次の2種類が用意されています。
- Swing(二層クライアントサーバ方式)
- ZK(三層クライアントサーバ方式)
フレームワーク構造はADempiere独自のものとなっており、MVC構造に当てはめて考えた場合、以下のような実装になります。
- View――Application Dictionary(ADempiere内の画面表示設定パラメータ群。後述で記載)で設定。
- Control――CRUDについてはコーディングする必要なし。その他(callout, process, hook)はJavaで開発する必要あり。簡単なものであればScript(beanshell, Groovy, jython)でも開発可能。
- Model――CRUDレベルであればコーディングする必要なし。Controlを実装する場合は作成する必要あり(ADempiereにはModel作成ツール「GenerateModel」が用意されています)。
3.2. 各種Controlの概要
本趣旨から少し離れますが、calloutプログラム, processプログラム, hookプログラムの概要について簡単に記載します。
calloutプログラム
フィールドへの入力が終わると、それにともない他のフィールドに値が入力されるプログラムです。例えば受注画面でとある顧客を選択した場合、それに応じてその顧客の住所が自動的に入力される、といった内容です。
実装方法に興味のある方は、ここを参照してください。
processプログラム
主にボタンをクリックすると呼び出されます。ADempiere上に既存にあるprocessプログラムの例として、受注伝票から出荷伝票を作成(クラス名:org.compiere.process.OrderPOCreate)、といったものがあります。
実装方法に興味がある方は、ここを参照してください。
hookプログラム
トリガーといった方が分かりやすいかもしれません。データの削除や更新などの変更が行われる前後で実行されるプログラムです。下記の2種類の実装方法があります。
なおADempeireの開発はEclipseで行います。ソースコードの取得方法および開発環境作成方法に興味のある方は、筆者のブログエントリーを参照してください。
3.3 Application Dictionaryとは
ADempiereの表示画面を定義するパラメータ群です。このパラメータ群を設定することでノンプログラミングでCRUD画面を作成することができます。
下記画面の「アプリケーション設定」というところがApplication Dictionaryに相当します。主に「テーブルとカラム」や「ウィンドウ、タブ&フィールド」といったところを設定することで容易にCRUD画面が構築できます。
以上がADempiereについての紹介です。
なおERPとしての使い方が知りたい方は、日本語のwikiページに販売管理、購買管理機能だけですが簡単に記載しておりますのでご参考ください。
また生産管理機能に興味のある方はこちらを参照してください。