Wagbyのアーキテクチャとカスタマイズ方針を説明します。

WagbyはSpring,Hibernateといったオープンソース系ミドルウェアをベースに構築されています。(*1)

ベースとなるJavaは7以上を推奨します。(*2)

図1 R7アーキテクチャ構成図
(*1) 商用ミドルウェアは含まれていません。
(*2) Java 6でも動作するように設計されています。

Wagby はサーバサイド(Java)およびクライアント(HTML,JavaScript)いずれのコードも生成します。ここではサーバサイドの代表的なクラスを紹介します。

クラス 説明
Model データを格納するクラス。業務ロジックは含まない。永続化・画面表示・一覧表示・検索条件格納といった目的に応じたModelクラスが用意される。
Controller UIと業務ロジックを媒介するクラス。Spring MVC ベース。Wagbyが定義する画面機能に応じた基本的なControllerが用意されている。
Service 業務処理クラス。主にControllerから呼び出される。トランザクション境界となり、必要に応じて複数のDaoを呼び出す。トランザクション制御はSpring3の@Transactionalアノテーションを使う。
Dao データアクセスクラス。一つのモデルに関するCRUD処理を一つのDaoが受け持つ。検索処理はSQLを書くのではなく、(Hibernate 4が提供する)CriteriaクエリAPIを用いる。
Helper 適切な初期化を伴うモデルクラスのインスタンス生成や計算、モデルの相互変換を行う。設計情報に記述されたさまざまなプロパティがコード化されたクラスになる。
Meta モデルに関するメタ情報(項目名と型をはじめ、主キーはどの項目かといった情報)を管理する。

Controller,Service,Dao,Helperの関係を図2に示します。

図2 処理の流れ

Wagbyが自動生成したJavaソースコードをカスタマイズできます。推奨するカスタマイズ方法は Generation Gap パターンと呼ばれるものです。自動生成されたクラスを継承するカスタマイズクラスをご用意いただき、必要なメソッドをオーバーライドします。

図3 Generation Gap パターン

図3の例では、自動生成されるCustomerHelperを継承したMyCustomerHelperを用意しています。このクラスをcustomizeフォルダに保存してビルドすると自動的に認識されます。アプリケーション内では、CustomerHelperではなくMyCustomerHelperのインスタンスが使われるようになります。

このアプローチによるカスタマイズの柔軟性は高く、ほとんどの処理をオーバーライドできます。

次のテーマは Wagby のライセンス認証に関わるため、カスタマイズできません。

  • ログオン認証部の変更
  • 権限の扱い

シングルサインオンの対応を含む、認証・認可系のカスタマイズはジャスミンソフトによる個別対応を行います。詳細はお問い合わせください。