zoukankan      html  css  js  c++  java
  • 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


    代码下载

    参考资源
          1. Visual Stuido DSL 工具特定领域开发指南
          2. DSL Tools Lab     http://code.msdn.microsoft.com/DSLToolsLab  系列教程  [本系列的入门案例的主要参考]

    作者:孤独侠客似水流年
    出处:http://lonely7345.cnblogs.com/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    JavaScript(一)
    数据库(二)
    分布式系统框架Spring+Redis+SSO视频课程
    3、尚硅谷_SSM高级整合_使用ajax操作实现删除的功能
    3、尚硅谷_SSM高级整合_使用ajax操作实现修改员工的功能
    3、尚硅谷_SSM高级整合_使用ajax操作实现增加员工的功能
    2、尚硅谷_SSM高级整合_使用ajax操作实现页面的查询功能
    2、尚硅谷_SSM高级整合_创建Maven项目.avi
    尚硅谷maven视频教程笔记
    mybatis视频教程2-动态参数
  • 原文地址:https://www.cnblogs.com/lonely7345/p/1671829.html
Copyright © 2011-2022 走看看