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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

分类: .NET

本文转自孤独侠客博客园博客,原文链接:http://www.cnblogs.com/lonely7345/archive/2010/02/23/1671829.html,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
350 0
|
IDE 开发工具 C++
Visual Studio下程序开发: error LNK2019: 无法解析的外部符号
Visual Studio下程序开发: error LNK2019: 无法解析的外部符号
1016 0
Visual Studio下程序开发: error LNK2019: 无法解析的外部符号
|
IDE 程序员 开发工具
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略(二)
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略(二)
|
移动开发 IDE Java
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略(一)
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略(一)
|
JavaScript Java API
Visual Studio 2015 和 Apache Cordova 跨平台开发入门
原文:Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一) 基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android、iOS 和 Windows的...
1852 0
|
开发工具 uml C++