打开dsl文件后,关注泳道的右侧,首先我们来完成域类的形状表示:
1.一个状态State有进入操作和退出操作,所以我们为状态表示为隔间形状,可以在图上显示出来它的这两种操作(就象一个类包含方法和属性一样),先删除之前生成的ExampleShape.然后从工具箱中选择隔间形状(Compartment Shape)到Diagram Elements区域,命名为StateShape.
2.修改StateShape的一些属性,只是为了它显示起来更美观,修改Geometry属性为RoundedRectangle(圆角矩形),修改FillColor为LightBlue.
3.将StateShape与State域类映射起来,从工具箱中选择Diagram Element Map,点击域类State指向StateShape即可,点击映射查看Dsl details,可以看到和我们第七节介绍的映射信息:
4.为StateShape添加隔间EntryActions(在StateShpae上直接右键添加Compartment), Title为”进入操作”,TitelFillColor为LightBlue.同样也添加隔间ExitActions,Title为”退出操作”.
5.在Dsl details中映射两个隔间,设置EntryActions隔间的显示元素集合,开窗从State的StateHasEntryActions关系下选中EntryAction,设置显示属性为Label.即此隔间显示它所具有的EntryAction集合的每个Label属性值.同样操作设置隔间 ExitActions.
我们为StateShape添加一些装饰器,来控制State展现时的一些效果.
6.右键StateShape添加Expand Collapse Decorator,主要用来装饰展开收缩,设置Position属性值为InnerTopRight,这样展开收缩图标就会显示在右上角.
7.添加Text Desorator,命名为NameDecorator,设置Position属性值为InnerTopCenter.(下面我们会将此装饰器映射到属性 Name,也就设置属性Name显示在图形的InnerTopCenter位置).
8.在dsl details中映射NameDecorator到属性Name:
下面我们来完成在上一节我们提到的一个功能,就是设置我们状态State的Kind属性值,图形能够根据这个属性值的不同发生不同的变化,比如如果是初始状态,我们就在图形上显示一个开始的图标,如果是结束状态就在图形上显示一个结束的图标.