Translate

2020/07/14

Eclipse MDT/UML2モデルのPapyrusでの読み込み確認

このブログでも前から書いている内容ではありますが、Papyrus は Eclipse の EMF (Eclipse Modeling Framework)ベースの UML2 モジュールに基づいて構成されています。

この UML2 モジュールは Eclipse のプロジェクトカテゴリとしては「MDT」(Model Development Tools) に属しており、そのプロジェクトのURLは以下になっています:
MDT/UML2
https://wiki.eclipse.org/MDT/UML2
なおこのサイトに「List of UML2-compatible UML Tools」という情報が掲載されています。UMLツールとして良く聞く「Enterprise Architect」や「IBM RSM/RSA」、「MagicDraw」などの間でUML2モデルとしてのコンパチビリティがリスト化されています。
MDT-UML2-Tool-Compatibility
https://wiki.eclipse.org/MDT-UML2-Tool-Compatibility

さて、前々から
「Eclipse の UML2 モジュールで作成されたモデルは、どの程度、問題なく Papyrus に取り込み出来て、どの程度、問題なく図として再現できるのか」
が気になっており、今回、少し試してみました。

サンプルとしては、Papyrus の新規ファイル作成で「Examples」から生成可能な
「UML2 Example Projects」
→「Getting Started with UML2」
プロジェクト中にある「ExtendedPO2.uml」を用いました。

同プロジェクトは File→New→Other から以下で生成できます。


生成されたプロジェクトの名前は
org.eclipse.uml2.examples.gettingstarted
となっています。

同プロジェクトは、MDT/UML2のJavaクラスライブラリを用いてJavaコードから「UMLモデル」(XMI)を生成するためのサンプルコードプロジェクトで、そのコードを実行して出来たファイルが
ExtendedPO2.uml
となります。

またプロジェクトフォルダ内に同モデルのpngファイルが置かれています。どのツールにより図を生成したのかは分かりませんが、以下の図となっています。


この「ExtendedPO2.uml」を Papyrus のプロジェクトに Import し、Papyrus のクラス図で表示してみました。

その結果図が以下です。

Papyrusでモデルインポートする際にエラーも出ませんでしたし、図としても十分再現されています。

簡単な例ではありますが、MDT/UML2のモデルは Papyrus 上で問題なく扱えそうです。
ある部分、当たり前かもしれませんが、確認できました。

これにより、MDT/UML2のExampleプロジェクトのサンプルコードから見て取れる
JavaプログラムからUML2のPapyrusモデルの生成
までが繋げられそうです。

PapyrusやMDT/UML2の関連ツールで出来ることも多いですが、モデル生成の意味では、この MDT/UML2 モデルの直接生成も使えそうな手段に思えます。

2020/07/10

モデルの画像によるデコレーション

Tipsです。

Papyrus/UMLで特定ドメインのモデル化を行っている際に、そのモデル化対象を端的に示す「シンボルマーク」をUMLのモデル要素にデコレーションして、ダイアログ上で表示したい場合があります。

通常のPapyrus(実際にはEclipseのEMF/UML2だと思いますが)の「モデルアイコン」は表示/非表示の指定は可能ですが、そのような一般的なアイコンではなく、ユーザ独自のマークです。

例えば、このような表示です(クラス図上でのクラス表記)。

 

Papyrusでは、そのデコレーション手段がサポートされています。

まず最初に PapyrusInternal というプロファイルをモデルに適用します。通常のプロファイル適用操作(Apply registered profile)により表示されるダイアログ上で「Papyrus Internal」と表示されているプロファイルとなります。


このプロファイルですね。

説明にも
Profile that provides annotations for the tool itself (Decorations, etc.)
と記載されています。

このプロファイルを適用すると、例えばクラス図上で作成したクラスに対して、以下の様な
「TypeSymbolDefinition」
というステレオタイプが適用可能となります。


このステレオタイプを適用した直後は以下のような表示となります。


基本的には、この「symbolPath」にシンボルマークの画像ファイルを指定することで、デコレーション表示が可能となります。

どのようにファイルを指定するか、またどのようなパス名で指定するかですが、一番楽なのが、一旦同ダイアログを非表示として、再度表示すれば、プロパティの所に
Symbol
という選択肢が現れますので、そこから指定するのが楽です。
以下がダイアグラムの再表示を行った後のプロパティのメニューですが、左側の「Comments」と「Profile」の間に「Symbol」が現れてるのが分かります。


この「Symbol」を選択すると、
[Browse] または [Browse workspace]
としてファイルが選択可能であることが分かります。


前者がファイルシステムから、後者が Papyrus (Eclipse) で開いているワークスペースから、となります。

とりあえず同じプロジェクト下のフォルダに画像ファイルが置いてあるとして、それを指定してみます。



[Browse workspace] からワークスペース内のファイルを指定すると
platform:/resource/...
というファイル指定方法となります。

で、はい、これだけでは何も表示は変わりません笑。

その後、表示の細かな指定を行います。

「Properties」の「Appearance」を開き、「Shape Decoration」と書かれた所までスクロールします。


ここ(Shape Decoration)の

  • Visible を true に
  • Position で表示位置を選択

すると、モデル上の指定位置にアイコン表示がなされます。


このような感じになります。

 ≪TypeSymbolDefinition≫ というステレオタイプ名表示が重なって見づらい場合には、同じくAppearance の少し下にある「Stereotype display」の「 Visible 」のチェックをはずします。


これで見やすくなりました。

これが一つの例ですが、このような奥ゆかしい表示ではなく、例えばコンテキスト図を作成し、そこに大きくシンボルマークとして表示したいケースもあるかと思います。

その場合は「Appearance」ではなく、対象のモデルをマウスで選択しマウス右クリックで表示される
「Filters」メニュー
から操作する表示方法があります(以下の説明では一旦「Shape Decoration」の「Visible」を「false」に戻しています)。


「Show/Hide Compartments」で「Symbol」を選択します。


すると、以下の表示に変わります。


うまく使い分けると各ダイアグラムでより分かりやすいモデル図が作成できると思います。

なお画像のファイル形式として svg と png は表示できることを確認しています。他はまだ試していません。