2015年8月8日土曜日

Eclipse SirusのValidation & QuickFixについて

Eclipse SiriusのValidation & QuickFixの設定方法について

基本的に以下の2点をViewSpecificaionに設定するだけでよい。

  • ViewSpecification のDiagram にValidationを追加
  • Validation のSemanticsを設定

とりあえず、今回は以下のようなものを設定します。


  • ManクラスにParentのreferenceがない場合、エラー
  • QuickFixとして、Womanクラスを紐づける。

すごい適当な設定ですが、サンプルということで。

ViewSpecification のDiagram にValidationを追加            

Diagram を選択 > New Validation
Validation を選択 > Semantic Validation Rule 

Semantic Validation を選択して、以下を設定
設定項目設定内容説明
LevelERRORValidationでNGの時の警告レベル
TargetClassbasicfamily.ManValidationを実施する対象クラス

message
Parent is not setValidation NGのメッセージ



Validation のSemanticsを設定                     

Semantic Rule を選択  > Audit

Auditを選択して、以下を設定
設定項目設定内容説明
Audit[self.parents->size() > 0 /]Parentが1つ以上の条件




Semantic Rule を選択 > Fix
Fix を選択 > Begin > New Operaion > Set

Seを選択して、以下を設定
設定項目設定内容説明
FeaturemotherQuickFixで設定するFeature
Value Expression[self.eContainer().eAllContents()->filter(Woman)->first()/]featureに設定する内容
Womanクラスの最初のクラス




Diagramを開いて
  • Manノードを作成
  • DiagramのContext Menu > Validation Diagram 


 Problem Viewにエラー内容が表示される。



エラー内容を選択し、右クリックでQuickFixを選択


Quick Fix画面が出て、Quick Fixを選択して、Finishを押下














上記Value Expressionで指定した値が設定される。


■参考
http://melb.enix.org/sirius/validation/

2015年7月26日日曜日

Eclipse Siriusの簡単な使い(3)


セクションを追加                     

  • Defaultを選択 > New Tool > Section を選択
ダイアグラムにパレットが表示される。



ノードを追加                     

パレットからノード追加が行えるようにする。

  • Section選択 > New Element Creation > Node Creation
以下を設定する。
設定項目設定内容説明
IdcreateManID
LabeManパレットに表示するラベル
Node MappingManNode対応するノード


  • Begin 選択 > New Operation > Change Context を選択
以下を設定する
設定項目設定内容
Browse Expressionvar:container


  • Change Context 選択 > New Operation > Create Instance を選択
以下を設定する。
設定項目設定内容説明
ReferenceTypemembers設定するfeatureを指定する
Type Namebasicfamiy.Man対象のクラス
Variable Nameinstance変数名


  • Create Instance選択 > New Operation > Set を選択
以下を設定する

設定項目設定内容説明
Feature Namename設定するfeature
Value Expression['man'+container.eContents()->filter(Man)->size()/]設定する値


設定結果は以下キャプチャのようになる。


Womanノードを作成する場合も上記同様の設定を行う。



関連線を追加                    

パレットから関連が設定できるようにする。
まずは、fatherの関連を引く設定をパレットに表示する。
※ModelでいうとPersonクラスのFatherの属性を設定

  • Sectionを選択 > New Element > Edge Creation
設定項目設定内容説明
idnewEdgeID
LabelfatherEdgeパレットの表示名
EdgeMappingsfatherEdgeマッピングするRelation Base Edge



  • Beginを選択 > Change Context 
  • Change Context を選択 > New Operation > Set  を選択

設定項目設定内容説明
FeatureNamefatherFeature名
Value Expression[target/]fatherに設定する値を指定
今回だと、targetがFatherクラスになるので[target/]

設定結果は以下キャプチャのようになる。





ダイアグラムを表示すると、パレットに関連線を引くアイコンが表示されている。
fatherEdgetを選択して、WomanNodeまたはManNodeからManNodeに関連線を引くことができるようになる。






motherの関連を引く設定をパレットに表示の仕方は上記と同様のため、省略






ここまでが、4MinTutorial をの内容になります。



2015年6月25日木曜日

Eclipse Siriusの簡単な使い(2)

前回の引き続き 以下について説明。
  • ノードに画像の表示
  • WomanNodeの表示
  • 関連の線表示
  • ノード追加方法

ノードに画像を表示                         
  • my.project.designフォルダにiconsフォルダを作成
  • 下記画像をiconsフォルダに保存
    • https://wiki.eclipse.org/images/1/12/Man32.png
    • https://wiki.eclipse.org/images/b/bc/Woman32.png
  • ManNodeを選択
  • New Style > Workspace Image
    • ノードを画像で表示するように設定
タブ設定項目設定内容説明
GeneralWorkspacepath/my.project.design/icons/Man32.png表示するアイコンのパス
LabeShow Iconチェック解除ノードを表示する時に、アイコンを表示有無
Label Expressionfeature:nameラベル表示内容
Label Positionborderラベルの表示場所を境界にする


WomanNodeを表示                         
ManNodeと設定方法は同じ。そのため、画像は省略
  • DefaultLayer を選択
  • New Diagram Element > Node 
  • id: WomanNode
  • Domain Class: basicfamily.Woman
  • Semantics Candidate Expression: feature:members
  • Woman Node を選択
  • New Style > Workspace Image
  • Workspacepath : /my.project.design/icons/Woman32.png
  • Label  Show iconsチェックボックス解除
最終的に表示されるのは以下のようになる。


関連線の表示                         

  • 参照関係の線を定義するのも、ノードと同じような仕組みで定義が可能
  • Default Layerを選択
  • New Diagram Element > Relation Based Edge
  • id: fatherEdge
  • Source Mapping: ManNode ,WomanNode
    • 関連線のソースとなるノードを指定
  • Target Mapping ManNode
    • 関連線のターゲット(矢印の先)となるノードを指定
  • Target Finder Expression: feature:father
    • 関連線のターゲットとなるノードを見つける表現

ダイアグラムを表示すると、関連の線が表示される。

  • motherの関連線も上記同様に設定する。
  • Default Layerを選択
  • New Diagram Element > Relation Based Edge
  • id: motherEdge
  • Source Mapping: ManNode ,WomanNode
    • 関連線のソースとなるノードを指定
  • Target Mapping WomanNode
    • 関連線のターゲット(矢印の先)となるノードを指定
  • Target Finder Expression: feature:mother
    • 関連線のターゲットとなるノードを見つける表現

  • 線の色等を変更したい場合
    • Edge Style solidを選択して、Color > Stroke Colorで変更可能

ノード追加                               


ダイアグラムからノードを追加する方法
  • Default Layerを選択
  • New Tool >  Section

  • New Element Creation > Node Creation


  • id: createMan
  • Label:Man
  • Node Mapping: ManNode


  • Beginを選択
  • New Operation > Change Context


  • Browser Expression: var container
  • Change Contextを選択
  • New Operation > Create Instance
  • Reference Name : members
  • Type Name : basicfamily.Man
  • variable Name : instance

  • Create Instance を選択
  • New Operation > Set


  • Feature Name : name
  • Value Expression : ['man'+container.members->filter(Man).size()/]
  • ダイアグラムにセクションが表示される。
  • Manを選択して、ダイアグラムにD&Dするとインスタンスが作成される。



WomanNodeを追加する方法はManNodeの追加方法と全く同じ。
基本的に上記のManをWomanに変更するのみ。

次回:
 ダイアグラムで関連付けする方法。

2015年6月14日日曜日

Eclipse Siriusの簡単な使い方

数回に分けて、4MinTutorial を簡単にまとめてみます。
そこから、徐々に4MinTutorialに記述されていない機能を追加していく予定です。
Sirisuのハンズオンをやるときの参考資料になればよいかなと。

まずは、Siriusを扱うときの基本的な流れ

  1. Domain Modelの作成
    • 作成するDomainModelを定義
  2. Viewpoint Specificationの作成
    • DomainModelをどのようにDiagramで操作(表示)させるかを定義
  3. モデル作成
    • 扱うモデルを作成
  4. Viewpointsとモデルの紐付け
    • モデルにViewpointsを紐付け
  5. Diagramの作成
    • 実際にモデルを表示するダイアグラムを作成
今回はダイアグラムに限定するが、Tree,Table,Sequenceなども作成可能。

1.Domain Modelの作成                             

今回作成するDomain Modelは4MinTutorial のbasicfamily




  • 新しいruntimeを起動
    • DomainModelのプラグインが入ったruntimeが起動された。





2.ViewSpecificationの作成                          

  • SiriusのPerspectiveを指定する。
  • Viewpoint Specification Projectを作成する。

  • project Name : my.project.design で作成する。

  • プロジェクト作成完了後、Sirius Specification Editorが開かれる。
  • projectを選択して、viewpointを作成する





  • id: persons を設定
  • Model file Extension: basicfamily を設定
    • 連携するモデルの拡張子
  • New Presentation > Diagram Description を選択





  • id : Persons Diagram
    • diagramのIDを設定
  • Domain model: basicfamily.Family
    • DiagramのDomainModelを指定


  • New Diagram Element > Default Layer を指定する。










  • New Diagram Element > Node を指定する。
  • 以下を設定する

  • 設定項目設定内容説明
    IdManNode識別子
    Domain Classbasicfamily.Manノード表示する対象のクラス
    Semantic Candidate Expressionfeature:membersノード表示するときの候補









    • ノードのスタイルを指定する。
    • New Style > Squre



    •  Color light_blue




    • 3.Modelの作成                             

      • Modeling Projectでプロジェクトを作成
      • Project Name : basicfamily.sample
      • New >Others > Example EMF Model Creation Wizards > Basicfamily Modelを選択
      • 以下で作成
        • File name: デフォルト
        • Model Object: Family 

      • 適当にモデルを作成する。


      4.Viewpointsとモデルの紐付け                         

      • Modeling Projectにviewpointsを紐づける
      • personsにチェックを入れてOKにする。


      • Create Presentation を選択する。
      • Person Diagramを選択する。
      • Diagramを作成するDomain Modelを選択する。
      • Diagramの名前を指定する。





      • ManNodeが表示されているダイアグラムが表示される。


      長くなったので、ここまで。
      次回は画像の表示、WomanNodeの表示、関連線、ノード作成の方法を解説