某プロジェクトのアーキテクチャ
いったん区切りがついたので、某プロジェクトのアーキテクチャを整理しておきたいと思います。対象ドメインは公表すると問題かもしれないので、ここでは伏せておきます。
まず、本プロジェクトの特徴として、多くの部分が 4GL で書かれた既存のアプリケーションの焼き直しである点、またそのアプリケーション自体、サブシステム分割、レイヤ分割等がある程度適切に行われていたので、多少気に入らない点はあるものの踏襲しています。
プレゼンテーション
- Struts、S2Struts をベースに機能追加。
- Action、ActionForm は Struts の基底クラスを継承して作成。
- 原則1画面、1 Action、1 ActionForm (入出力共通)。
- 無設定 Struts は未使用。
- バリデーションは S2Struts のアノテーションで記述。
- ActionForm は Excel の画面仕様書から自動生成。
- ツールは POI と Velocity を使って作成。
オンライン処理
データ永続化
- 既存からの移植分は、コネクション管理だけ Seasar2 を利用。
- 新規作成分は S2Dao を利用。
- 属性の型が java.util.Date の場合、Timestamp でオブジェクトに格納されるが、java.util.Date に変換した方が良さそう。(修正予定)
- 新規作成分の Entity、DAO は Excel のテーブル定義書から自動生成。
- ツールはやはり POI と Velocity を使って作成。
テスト支援
- S2TestCase をベースに機能を追加。
- クラス名_SETUP.xls あるいは クラス名_メソッド名_SETUP.xls があればデータを自動ロード。
- Excel のセルがスペースの場合、null が insert されてしまう問題の対処。
- データベースのスキーマ、マスタデータの同期をとる仕組みがほしいなぁ...
その他
- 設定ファイル読み込み。
- キャッシュ。
- メッセージ通知。
- ログ出力 - Log4J を利用。
運用アプリケーション
- 目下作成中。