2009年7月27日月曜日

Reflective Ecore Model Diagram Editor 0.2.1をリリースしました

Reflective Ecore Model Diagram Editor0.2.1を今日リリースしました。

リリース0.2.1のダウンロード

このリリースでは大きく以下の2点の機能追加・バグフィックスが含まれています。
  1. 「Initialize xmi_diagram diagram file」アクションの実装(修正)
  2. メタモデルにクラス継承が含まれている場合に発生するバグの修正
1. 「Initialize xmi_diagram diagram file」アクションの実装(修正)
GMFで自動生成されるダイアグラムエディタには、「Initialize xxx_diagram diagram file」アクションが実装されています。このアクションは、EMFがデフォルトで生成するツリーエディタで編集可能なインスタンスモデル.xxxファイルからダイアグラムファイル.xxx_diagramを生成する機能です。
Reflective Ecore Model Diagram Editorではリリース0.2.0まで、.xmiまたは.xmlファイルから.xmi_diagramまたは.xml_diagramファイルを生成する上記アクションを実装できていませんでした。今回のリリース0.2.1では以下のように実装できています。
  • .xmiファイルを右クリックし、「Initialize xmi_diagram diagram file」メニューを選択することで、選択された.xmiファイルから.xmi_diagramファイルを生成
  • .xmlファイルを右クリックし、「Initialize xml_diagram diagram file」メニューを選択することで、選択された.xmlファイルから.xml_diagramファイルを生成
なお、上記.xmiまたは.xmlファイルにおいて、schemaLocation属性にメタモデルファイル.ecoreまたは.xsdファイルのロケーションが指定されていない場合、対応するダイアグラムファイルは生成できません。エラーが表示されます。ただし、.xmlファイルについては、エラーダイアグラムは表示されず、空のダイアグラムファイルが生成されてしまいます。そのダイアグラムファイルを開こうとするとエディタ領域にエラーが表示されます。

2. メタモデルにクラス継承が含まれている場合に発生するバグの修正
情けないことに、以下に示すバグがリリース0.2.0まで含まれていました。今回のリリース0.2.1で修正されています。

例として以下のようなメタモデルを考えます。Diagramクラスは複数のFigureクラスのインスタンスをコンポジションとして保持します。Figureクラスは抽象クラスなので、実際にはRectangleクラスおよびTriangleクラスのインスタンスをDiagramクラスは保持できます。
ところが、リリース0.2.0までは、上記Diagramクラスのインスタンスに対し、RectangleクラスおよびTriangleクラスのインスタンスをコンポジションとして接続することができませんでした。なぜなら、コンポジション参照であるfiguresのタイプがFigureなので、接続されようとしているインスタンスのタイプがFigureかどうかチェックして、そうでなければ接続を許さない実装になってしまっていたからです。
リリース0.2.1では、上記実装を修正し、接続されようとしているインスタンスのタイプがFigureかその子孫であるかどうかチェックして、そうでなければ接続を許さない実装に修正しました。これにより、RectangleクラスおよびTriangleクラスのインスタンスをコンポジションとしてDiagramクラスのインスタンスに接続できます。

上記のように、クラス継承に関して上記の他にいくつかのバグがあったので、全て修正しました。さまざまなインスタンスモデルの編集時において、クラス継承を正しく認識してポップアップの表示をはじめ適切な編集を提供します。

0 件のコメント: