Specification
JUDEファイルの配置
- JUDEファイルはRAILS_ROOT/app/models配下に配置する。
- 正確に言うと、Dependencies.load_paths(Railsの設定パラメータconfig.load_pathsで修正可能)のパス群のどこかにJUDEファイルを配置すれば動作するが、RAILS_ROOT/app/models配下に配置することを強く推奨する。

- JUDEファイルのファイル名は自由に決めて構わない。
- 1つのRailsプロジェクトに対して1つのJUDEファイルのみ利用可能。複数ファイルを配置したときの動作は保証しない。
Railsモデルの動的生成
- 現状はクラス図に記述したクラスがRailsモデルの対象になる。
- 近い将来ER図も対応予定
- クラス図内のクラスの中で、以下の条件を満たすものがRailsモデルとなる。
- JUDEファイル作成時にすでに存在するjava.lang,java.util配下のクラス以外
- テーブルの列の型になるクラス以外
- 関連クラスはRailsモデルにはならない。(将来は対応予定)
- 上記に示したRailsモデルの条件はConfiguration でカスタマイズ可能
- モジュールで階層化されたモデルは現在未対応。
リレーション
- クラス図に記述したリレーションもRailsに反映する。
- リレーションに対してプラグイン側で以下のルールに従い方向性が決定される。この方向性によりクラスの親子関係が決定づけられる。
- 集約、コンポジションを指定した場合、集約側が親となる。
- 上記以外の場合、リレーションをドローイングしたときに先に指定したクラス(起点側)が親となる。
- 本プラグインでは多重度は『1』,『多』のどれかに分類される。多重度の決定ルールは以下。
- 多重度を指定しない場合は『1』
- 多重度が1以下の場合は『1』
- 多重度が2以上、または*の場合は『多』
- 上記で示したリレーションの方向性と多重度で、クラス間の関係が決定される。クラス間の関係には『1対1』、『1対多』、『多対多』がある。
- 『多対1』はクラス間に関係はないと判断されるので注意。
- 関連端名を指定するとRailsに反映する。反映される内容は以下。
- 内部で生成されるクラスのhas_one,has_many,belongs_to,has_and_belongs_to_many等の値
- テーブルの外部キー名
継承
- クラス間の継承関係もRailsに反映する。
- 継承関係のテーブルへのマッピング方式は単一テーブル継承[STI:Single-Table Inheritance]。
- 多重継承は未サポート。定義した場合の動作は保証しない。
- 抽象クラスは未サポート。抽象クラスを定義しても本プラグインでは無視される。
テーブル
- テーブルの作成方法としてRake Task を提供している。
- JUDEで定義したクラスの属性は、作成されるテーブルの列に反映される。
- 列名はJUDEで定義した属性名をString#underscore化した値となる。
- 以下のマッピング表に従いテーブルの列の型が決定される。
- JUDEクラス属性のクラス名は大文字が含まれていてもよい。また、JUDEクラスはパッケージに含まれていても構わない。例えばjava.lang.Stringはstringにマッピングされる。
- マッピング表にあてはまらない場合自動的にstringとなる。
| Railsが定義している型 | JUDEクラス属性のクラス名 |
| binary | ‘binary’,’blob’,’image’ |
| boolean | ‘boolean’ |
| datetime | ‘datetime’, ‘date’ |
| decimal | ‘decimal’ |
| float | ‘float’ |
| integer | ‘integer’, ‘int’, ‘number’ |
| string | ‘string’,’varchar’,’varchar2’,’char’ |
| text | ‘text’,’clob’ |
| time | ‘time’ |
| timestamp | ‘timestamp’ |
- 上記マッピング表はConfiguration でカスタマイズ可能
- JUDEのクラス属性に初期値を付与すると、列のdefault値に反映される。

- JUDEのクラス属性の制約に『not_null』を定義すると、その列にはnot null制約が付与される。

- JUDEのクラス属性のタグ付き値に『limit』を指定すると、テーブル作成時のlimit値に反映される。

- decimal型の場合、JUDEのクラス属性のタグ付き値に『precision』、『scale』を指定すると、テーブル作成時にこれらの値が反映される。

- 作成されるテーブルにはクラス間のリレーションを成立させるための列が付与される。