Eclipse Sirius で遊ぶ #3

このシリーズの最終回です。Activity 図が書けるか試してみました。State machine の時と同様に OMG の仕様を調べたところ、Activity 周りは次のような定義になっていました(もちろん、今回も少し単純化しています)。

ActivityModel

実はこの構造は昔から DSL でネットワーク図を描く例題として馴染みのものです。そういうこともあり、かなり簡単にできてしまいました。

Activity Diagram

Buyer-Seller-Shipper の業務フローです。実線はコントロールフロー、点線はオブジェクトフローのつもりです。一箇所 UML 仕様に違反している部分もありますが(分かるでしょうか?)このような感じのダイアグラムエディタが簡単に作れるというデモンストレーションということで目をつむっていただければと思います。

クラス図、状態遷移図、アクティビティ図という三種類について、単純化したものであれば Sirius を活用して短時間でグラフィカルエディタが作れるということを示してみました。実際に現場で使う場合、モデルエディタだけでなくコード生成もセットで必要になりますが、Sirius ベースであれば親和性が良い Acceleo を使うのが良いと思います(どちらもフランスの Obeo 社が提供しているオープンソースです)。

 

広告
Eclipse Sirius で遊ぶ #3

Eclipse Sirius で遊ぶ #2

今回は簡単な StateMachine を作成してみました。まず ecore モデルですが、UML 2.5 (OMG formal/2015-03-01) の仕様の StateMachine 定義を単純化してみました(これでも本物より簡単にしてあります)。

SimplifiedStateMachine.png

前回同様の手順を使うことでサンプルモデルから次のような StateMachine 図を作り出すことができました(今回のトライアルでグラフィカル要素の定義は下の図に含まれている要素に対してしか行っていません)。パレット部分を追加すれば簡単なエディタになります。

StateMachine Diagram

State は Container にしたので、作り込むと状態のネスト構造も記述できるのですが、お試しということでご勘弁ください。最後に Activity 図を試して、今回のシリーズを終了します。

Eclipse Sirius で遊ぶ #2

Eclipse Sirius で遊ぶ

昨年末ですがモデルベースソフトウェア開発コミュニティで Eclipse Sirius の勉強会を実施しました。チュートリアルに従い手を動かしてみるというもので、なんとか前半を終えました。近々後半をやることになっています。

海外では Sirius を使って色々なモデリング環境が作成されており、ギャラリーというページに多く例が掲載されています。勉強会で使ったチュートリアルの例は少し実用的ではないので、もう少し多くの方になじみのあるものを遊び気分で作ってみました。

まずベースとなる ecore モデルですが、単純化したクラス図を目標に次のようなモデルを使うことにしました(どこかで見たことのあるものです)。

domainmodel

これを使い model code, edit project, editor project を生成し準備を終え、ついでに dynamic instance の仕組みを使いサンプルモデルを作成し、Eclipse の別インスタンスを立ち上げてグラフィカルエディタを作成します。途中は飛ばしますが、次のようになりました。

sirius_diagram.png

左上の区画が肝となる odesign ファイルで、Entity (UML Class 相当) を Container とし、Attribute をリスト形式で埋め込んでいます。関連は EntityReference をベースに作成しています。昔の EMF + GEF や GMF 時代をご存知の方には隔世の感があるかもしれません。

時間があれば振る舞い系のものも作ってみる予定です。出来ればまた掲載します。

Eclipse Sirius で遊ぶ