Visual Studio DSL 入门 9---创建状态机的图形符号

上一节我们已经创建状态机的元数据模型,在这一节,我们来完成我们状态机的图形符号,建立起状态机的测试运行环境.
    打开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,可以看到和我们第七节介绍的映射信息:
         2010-2-23 10-57-58  
      4.为StateShape添加隔间EntryActions(在StateShpae上直接右键添加Compartment), Title为”进入操作”,TitelFillColor为LightBlue.同样也添加隔间ExitActions,Title为”退出操作”.
      5.在Dsl details中映射两个隔间,设置EntryActions隔间的显示元素集合,开窗从State的StateHasEntryActions关系下选中EntryAction,设置显示属性为Label.即此隔间显示它所具有的EntryAction集合的每个Label属性值.同样操作设置隔间ExitActions.
        2010-2-23 11-04-29
     我们为StateShape添加一些装饰器,来控制State展现时的一些效果.
      6.右键StateShape添加Expand Collapse Decorator,主要用来装饰展开收缩,设置Position属性值为InnerTopRight,这样展开收缩图标就会显示在右上角.
      7.添加Text Desorator,命名为NameDecorator,设置Position属性值为InnerTopCenter.(下面我们会将此装饰器映射到属性Name,也就设置属性Name显示在图形的InnerTopCenter位置).
      8.在dsl details中映射NameDecorator到属性Name:
        2010-2-23 11-10-29 
      
        下面我们来完成在上一节我们提到的一个功能,就是设置我们状态State的Kind属性值,图形能够根据这个属性值的不同发生不同的变化,比如如果是初始状态,我们就在图形上显示一个开始的图标,如果是结束状态就在图形上显示一个结束的图标.
       9.我们先为dsl项目添加这样两个图标,为Resources文件夹添加两个图标文件Start.emf和Stop.emf. 路径在Visual Studio 2008 SDK安装路径/VisualStudioIntegration/Tools/DSLTools/SolutionTemplates/TaskFlow/Dsl/Resources/.
     10.为StateShape添加两个图标装饰器来表示这两个图标,StartIconDecorator,StopIconDecorator.设置装饰器的Default Icon分别为以上两个图标.Position默认为InnertTopLeft.
     11.在dsl details中映射这两个图标装饰器,对于StartIconDecorator设置Visibility Filter选中,Kind属性值为Initial.同样处理StopIconDecorator,Kind属性值为Final.
         2010-2-23 11-26-48

       接下来我们来完成域关系转移Transition的图形显示:
      12.修改ExampleConnector为TransitionConnector.将TransitionConnector与Transition建立映射关系.
      13.为TransitionConnector添加文本装饰器LabelTextDecorator,Position属性值为TargetTop,也就是属性Label将会显示在关系线Target端的顶部
      14.在dsl details中映射LabelTextDecorator到域类Transition的属性Label:
         2010-2-23 11-37-39

       我们已经完成了域类State和域关系Transition的图形符号,下面我们为它们添加工具箱的图标(当然如果不添加的话,会直接采用默认的图标):
       15.为dsl项目添加两个图标Tasktool.bmp,FlowTool.bmp(路径同上,下同),打开dsl explorer,找到结点Editor/Toolbox Tabs/LanguageSm/Tools,可以看到已经有了ExampleElement,ExampleRelationship.右键属性分别把它们更名为State,Transition,Toolbox Icon分别对应选中上面两个图标.
       
       已经完成了,我们来运行一下这个状态机设计器:
      16.注意在运行前一定保存完dsl文件后转换所有的模板,然后点击调试运行整个项目.具体这个状态机的使用先不详细介绍了.
          2010-2-23 11-55-09

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值