このツールを選んだポイントの1つはjavaを使ったAPIがあること。
5.3になって、モデル編集のAPIも追加された。
で、テーブル設計。
過去に「楽々ERDレッスン (CodeZine BOOKS) 」を読み、「Identifier」の有用さに心打たれて以来、いつもID列を設けるようにしている。
要求・要望・要件の断片からざっとエンティティを見出し、ID属性を付与、リレーションを付けて多重度を設定して・・・という手順でやっているのだけど、エンティティの数が多いと、ID属性を追加するのも結構手間。。。。
ということで、モデル編集APIを扱うプラクティスも兼ねて、JUDEプロジェクト内のERエンティティにID属性を追加するスクリプトを書いてみた。
judeユーティリティ
ちょこちょことスクリプトを書くときは、screen+viな環境でやると調子がいい(僕は)。なので、linux上でしか確認してない。
■実行環境
OS: CentOS 5.2 i386
JRE: Sun Java 1.6.0_05
jruby: 1.1.3
JUDE-Pro: 5.3.0
■実行例
アーカイブを展開し、jude-pro.jarを展開先ディレクトリに置いてある前提。
○ERエンティティ、「ID」という論理名でSMALLINT型の属性を追加する
% env CLASSPATH=./jude-pro.jar jruby add_identifier.rb --attr-name=ID --datatype=SMALLINT judeファイルのパス
○ERエンティティに、「ID」という名前・INT型のERドメインで、「ID」という論理名の属性を追加する
% env CLASSPATH=./jude-pro.jar jruby add_identifier.rb --attr-name=ID --domain=ID judeファイルのパス
○ERエンティティに、「ID」という名前・SMALLINT型のERドメインで、「エンティティ論理名_ID」という論理名の属性を追加する
% env CLASSPATH=./jude-pro.jar jruby add_identifier.rb --attr-name=%e_ID --domain=ID --domain-datatype=SMALLINT judeファイルのパス指定したデータ型、ドメインが存在しない場合は作成します。
作成された属性にはPK指定が付きます
■注意
- READMEにも書いてありますが無保証です
- judeファイルを書き換えますので、バックアップ必須です。ファイルが壊れても責任持てません。
- (JUDEの機能による)ロックがかかりますので、更新対象JUDEファイルをGUIで編集していない状態で実行します
- 既に主キーがついているエンティティには属性追加しません。
- 唯一の主キーが作成しようとしてる属性論理名が同じ場合はデータ型/ドメインを更新します
- 既にERモデルが作成されているJUDEファイル前提です。日本語環境以外で作成されたものがどうなるかは不明です。
>> Home