楽々ERDレッスン (CodeZine BOOKS)
モデリングツールにJUDEを利用している。

このツールを選んだポイントの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ファイル前提です。日本語環境以外で作成されたものがどうなるかは不明です。