ガジェット(ダッシュボード)の開発

 ここでは、オープンソースのERP iDempiere(アイデンピエレ)で、オリジナルのガジェット(ダッシュボード)を作成する方法を調査及び研究し、その成果をまとめています。

ガジェットの開発概要

 オリジナルガジェットの開発の方法自体は、非常に簡単です。あとはスキルとアイディア次第です。ここでは、iDempiere内にサンプルとして存在している"Google Calenderを表示するガジェット"を例にして説明したいと思います。

Step1:zulファイルの作成

 iDempiereのWeb-UIの開発フレームワークである、ZKの画面を作成する(Viewを担当する)マークアップ言語、zulを使用して、画面を作成します。zulで画面をデザインせずに直接Javaで描く事もできます。例えば、”Google Calenderを表示するガジェット”では、zulファイルを次のように記述しています。

googleCalender.zulの記述

<?xml version="1.0" encoding="UTF-8"?>

<window use="org.adempiere.webui.dashboard.DPGoogleCalendar"/>

 これだけで、googleCalender.zulファイルが読み込まれた時に、DPGoogleCalendarクラスが呼び出されます。

Step2:Javaクラスの作成

 zulファイルでJavaのクラスを呼び出す記述をしたら、次のそのJavaクラスを作成します。作成するJavaクラスはDashboardPanelクラスを継承して作成します。

 例えば、"Google Calenderを表示するガジェット”のDPGoogleCalendarクラスでは次のように記述されています。

DPGoogleCalendar.javaの記述

public class DPGoogleCalendar extends DashboardPanel {

 

    private static final long serialVersionUID = -6420016898259232438L;

 

    public DPGoogleCalendar()

    {

        super();

 

        Iframe iframe = new Iframe("http://www.google.com/calendar/embed?...省略...);

        iframe.setWidth("300px");

        iframe.setHeight("310px");

        this.appendChild(iframe);

    }

}

 処理自体はIframeを使用して、Google Calendarを表示しているだけという、これ以上ないくらいシンプルなものですが、最後にthis.appendChild(Component )する事で、ガジェットのコンテンツとして表示できるようになっているという事が理解できれば、開発の概要としては充分ではないかと思います。

 あとは、本当にスキルとアイディア次第です。

【技術情報】ログインしているユーザーに合わせてガジェットの表示内容を制御する

 Google Calenderを表示するのであれば、ログインしているユーザー個人のカレンダーを表示してたいと思うかもしれません。そのようなユーザーに応じてガジェットの表示内容を制御するような事も、もちろん可能です。

 ログインユーザーの情報は、次のようにJavaクラスの中でコーディングすれば取得する事ができます。

 

MUser user = MUser.get(Env.getCtx());

 

 あとは、ユーザー(MUserクラスのインスタンス)が保持する情報をもとに処理を切り分ければ、ユーザーに応じてガジェットの表示内容を制御する事ができます。

Step3:ダッシュボードコンテンツの設定

 zulとJavaクラスを作成したら、iDempiereから呼び出すために、ダッシュボードコンテンツの設定を行います。設定はzulファイルのパス(Path)を設定するのが主です。

ダッシュボードコンテンツ設定ウィンドウ
ダッシュボードコンテンツ設定ウィンドウ

Step4:ダッシュボード環境設定

 最後に、作成したガジェットが誰が使えるのか権限設定を行ったら終了です。

ダッシュボード環境設定ウィンドウ
ダッシュボード環境設定ウィンドウ

Step5:確認

 一度ログアウトして、再度ログインすると作成したガジェットを確認する事ができます。

Google Calenderのガジェット表示例
Google Calenderのガジェット表示例

参考サイト

iDempiereフォーラム(Google Group)

関連するコンテンツ