Visual Studio DSL入门 2 --- 需求

相信如果看过一上篇你已经对vs.net dsl有了一定的了解,接下来我们就来开始我们的这个系列的入门,Vs.net Dsl在国内可能使用的人少之又少,不过希望这个系列能够使看到的人能够对dsl有一定的了解,使之能够成为产品方案选型时的一个参考,能够对阅读的人有所帮助.

准备环境

由于vs.net 2010并未正式发布,所以这一系列基于vs 2008 sp1进行开发,Dsl tools是包含在VSX当中的,所以需要下载 Vistual Stutio.Net SDK 1.1安装,下载地址为:http://msdn.microsoft.com/zh-cn/vsx/default(en-us).aspx

另外代码生成采用的是T4,为了方便T4的编写,需要下载T4编辑器http://www.t4editor.net/,遗憾的是Vs.net至今还没有内置T4编辑器,在vs 2010中也不会提供。

需求说明

我们完成的这个简单的Demo类似于UML中的状态图(Statechart Diagram),  这个状态机由状态(states)组成,各状态由转移(transitions)链接在一起。状态是对象执行某项活动或等待某个事件时的条件。转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或评估并导致特定的结束状态。

状态(State)的要素:

名称:将一个状态与其他状态区分开来的文本字符串;状态也可能是匿名的,这表示它没有名称。

分类:状态分为初始状态(initial state)和结束状态(end state).

进入/退出操作:在进入和退出状态时所执行的操作。

内部转移:在不使状态发生变更的情况下进行的转移。

子状态:状态的嵌套结构,包括不相连的(依次处于活动状态的)或并行的(同时处于活动状态的)子状态。

延迟的事件:未在该状态中处理但被延迟处理(即列队等待由另一个状态中的对象来处理)的一系列事件。

转移(Transitions )的要素:

源状态:转移所影响的状态;如果对象处于源状态,当对象收到转移的触发事件并且满足警戒条件(如果有)时,就可能会触发输出转移。

事件触发器:使转移满足触发条件的事件。当处于源状态的对象收到该事件时(假设已满足其警戒条件),就可能会触发转移。 事件一般都有一个名称,但是有些转移没有事件名称,称为自动或隐式转移.

警戒条件:一种布尔表达式。在接收到事件触发器而触发转移时,将对该表达式求值;如果该表达式求值结果为 True,则说明转移符合触发条件;如果该表达式求值结果为False,则不触发转移。如果没有其他转移可以由同一事件来触发,该事件就将被丢弃。

操作:可执行的、不可分割的计算过程,该计算可能直接作用于拥有状态机的对象,也可能间接作用于该对象可见的其他对象。

目标状态(可选):在完成转移后被激活的状态。

参数:转移可能有参数,这个参数为事件触发器的事件方法的参数

事先弄清楚这段说明是很重要的,因为我们的模型,我们的元数据都来源于需求问题的描述.

时间: 2025-01-21 04:13:34

Visual Studio DSL入门 2 --- 需求的相关文章

Visual Studio DSL入门系列

Visual Studio DSL 入门 11---为状态机设计器添加规则 Visual Studio DSL 入门14---用Wix制作安装程序 Visual Studio DSL 入门 13---结合T4生成代码 Visual Studio DSL 入门 12---状态机设计器的规则(Rule)和验证(V Visual Studio DSL入门 10---完善状态机案例 Visual Studio DSL入门 9---创建状态机的图形符号 Visual Studio DSL入门 8---创建

Visual Studio DSL 入门 2

相信如果看过一上篇你已经对vs.net dsl有了一定的了解,接下来我们就来开始我们的这个系列的入门,Vs.net Dsl在国内可能使用的人少之又少,不过希望这个系列能够使看到的人能够对dsl有一定的了解,使之能够成为产品方案选型时的一个参考,能够对阅读的人有所帮助. 准备环境     由于vs.net 2010并未正式发布,所以这一系列基于vs 2008 sp1进行开发,Dsl tools是包含在VSX当中的,所以需要下载 Vistual Stutio.Net SDK 1.1安装,下载地址为:

艾伟_转载:Visual Studio DSL 入门 2

     相信如果看过一上篇你已经对vs.net dsl有了一定的了解,接下来我们就来开始我们的这个系列的入门,Vs.net Dsl在国内可能使用的人少之又少,不过希望这个系列能够使看到的人能够对dsl有一定的了解,使之能够成为产品方案选型时的一个参考,能够对阅读的人有所帮助. 准备环境     由于vs.net 2010并未正式发布,所以这一系列基于vs 2008 sp1进行开发,Dsl tools是包含在VSX当中的,所以需要下载 Vistual Stutio.Net SDK 1.1安装,下

一起谈.NET技术,Visual Studio DSL 入门 1

什么是特定领域开发和DSL      特定领域开发是用来解决重复发生的问题的方法,针对每次发生的问题,通过进行总结和分析,他们之间相同的方面可以一次性的解决.而经常变化的方面,可以采用一种特殊的语言表达.针对这个特殊语言,我们可以建立模型或者表达式,然后插入到固定部分.       对于我们软件行业的解决方案来说,固定部分一般采用传统的设计和实现方式,可以为框架,平台,解释器或者编程接口.提供可扩展性,具有高度的抽象性和可复用性.而特定领域语言专门用来创建变化的部分,从而使整个解决方案可具有可应

Visual Studio DSL 入门14---用Wix制作安装程序

我们到现在为止已经对Vs.net dsl的基础知识进行了介绍,并且一步一步的完成了我们的状态机设计器的设计,在上一节结合T4模板生成了代码.但是我们一直还是在调试的项目中来做的, 怎么能够让我们做的这个状态机设计器能够提供给其它人使用呢,在这一节,我们就来做一个安装程序,这样在只安装了VS.NET的机器上,不用安装SDK就可以使用我们的设计器了. VS.NET DSL专门提供了针对DSL的安装项目,我们直接基于这个项目来制作我们的安装程序: 1.首先,向我们的解决方案中添加一个Dsl 安装项目,

一起谈.NET技术,Visual Studio DSL 入门 3---创建一个简单的DSL模型

     从这节开始我们就开始我们的DSL之旅, 首先确保你已经安装了Visual Studio Sdk,并且使用的是Visual Studio 2008.我们先大概创建一个简单的DSL项目,通过这个项目来了解dsl的开发环境和流程. 1. 打开VS.NET ,新建--项目, 点击其它项目类型--扩展性(Extensibility). 这里列出来了vs.net扩展类型的项目,包括Addin,VSPackage,Dsl等项目类型,选择"Domain Specific Lan  guage Desi

Visual Studio DSL 入门 3---创建一个简单的DSL模型

从这节开始我们就开始我们的DSL之旅, 首先确保你已经安装了Visual Studio Sdk,并且使用的是Visual Studio 2008.我们先大概创建一个简单的DSL项目,通过这个项目来了解dsl的开发环境和流程. 1. 打开VS.NET ,新建--项目, 点击其它项目类型--扩展性(Extensibility). 这里列出来了vs.net扩展类型的项目,包括Addin,VSPackage,Dsl等项目类型,选择"Domain Specific Lan  guage Designer&

Visual Studio DSL 入门 11---为状态机设计器添加规则

上一节我们在设计器的显示方面进行了完善,在这一节,我们将深入状态机设计器的一些逻辑细节,给我 们的设计器添加逻辑规则.为生成代码做好准备. 在开始之前,我们先看一下Transition的几个属性之间的关系: 1.编辑Event,Condition,Action属性时,Label属性能够自动计算显示,计算逻辑为Event [Condition] / Action 2.当修改属性Label时,Event,Condition,Action的值也能够对应自动更新. 我们使用Vs.net Dsl的规则来实

Visual Studio DSL 入门 12---状态机设计器的规则(Rule)和验证(Validation)

上一节我们为状态机设计器添加了一个Rule,主要用来处理当Transition的属性 Label,Condition,Action,Event之间的任何一个值发生变化时,其余的属性值也要按照我们 的规则来更新(我们的Label属性就是一个辅助的属性,用来更好的显示和编辑另外三个属性). 我们可以看到vs.net dsl提供的Rule机制的强大,它主要提供了以下几个Rule: AddRule:当ModelElement或者ElementLink添加时触发 ChangeRule:当一个元素或者关系的