• JUDE APIを jrubyから使う その1

    楽々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ファイル前提です。日本語環境以外で作成されたものがどうなるかは不明です。



  • Jude 5.2でCRUDにクラス図を指定できるらしい

    まだベータだけど。いつリリースかなー。

    CRUDの改善
      • モデル軸にクラス図を選択可能にしました。
    https://jude.change-vision.com/jude-web/notes/ReleaseNote-JUDE-Professional-flame.html から

    自作の見積もりツールで、ユースケースとクラス図中のentityの利用関係を取得したくて、手作業でUMLモデル→ERモデル変換するという使用方法だったのだけど、これで素直にUMLモデルが使える。

    JudeのERモデルにはちょっと後付け感を感じる。構造ツリー上も「別居」しているから、ユースケースとの結びつきをイメージしにくくてヤだなあと思っていたのだ。