關于Visual Studio DSL改善狀態機實例說明(1)

發表于:2010-03-29來源:作者:點擊數: 標簽:狀態DSLStudioVisualvisual
關于Visual Studio DSL改善狀態機實例說明(1) 軟件測試 文章將主要介紹Visual Studio DSL的一些基本的知識,包括域類,域關系,圖形符號,圖形映射等,雖然這些東西看起來有些抽象,但是其是 開發 我們自己的Visual Studio DSL之前必須要掌握的。 Vistual St

  關于Visual Studio DSL改善狀態機實例說明(1)  軟件測試

  文章將主要介紹Visual Studio DSL的一些基本的知識,包括域類,域關系,圖形符號,圖形映射等,雖然這些東西看起來有些抽象,但是其是開發我們自己的Visual Studio DSL之前必須要掌握的。

  Vistual Studio DSL是微軟針對特定領域開發而專門設計的,其主要作用是允許開發人員自行設計專屬的圖形化工具,DSL是微軟為特定領域開發的方面會用到的工具。

  在前幾節中,我們以創建的默認項目介紹了Visual Studio DSL的一些基本的知識,包括域類,域關系,圖形符號,圖形映射等,這些東西看起來可能會有些抽象,和我們第二節介紹的需求還沒有直接關系,不過這些概念確實我們開發我們自己的Visual Studio DSL之前必須要掌握的。

  如果你對我們將要做的這個實際的案例的需求并不是很了解,請仔細需求一下我們這個狀態機的需求.如果你第一次看這一系列,或者是對這些基礎概念還不是很熟悉,建議你看一下前面的幾節基礎知識。首先,按照第三節創建一個Minimal Lanauge模板項目,打開DSLDefinition.DSL文件:

  1. 把根域類ExampleModel的名稱修改StateMachine.同時簽入關系ExampleModelHasElements也會自動重命名為StateMachineHasElements.

  2. 修改域關系StateMachineHasElements左側的域角色Elements的屬性名(Property Name 注意不是修改Name--域角色名)改成States.同時簽入關系StateMachineHasElements自動更新為StateMachineHasStates. [你也可以直接在域角色上點擊修改,因為圖的域角色上顯示的是屬性名而非角色名).

  3. 修改域關系StateMachineHasStates的右側已經更名的域角色StateMachine,修改屬性Name為State.[注意,這里修改的是Name,而不是Property Name].

  4. 修改域類ExampleElement的Name為State。

修改域類ExampleElement

  注意這里是基于模板項目進行更改,當然,你也可以刪除這些自動生成的域類而是全新重新添加.另外或許你對這里的屬性名(property name)和域角色名(name)有些迷惑,請看前面的詳細區分。其實到這一步我們已經完成了狀態機與狀態之間元數據的DSL描述,接下來我們來完成狀態之間的關系。

  5.我們可以看到,圖中的State與State之間已經是引用關系,這正是我們想要的,我們修改關系StateReferencesTargets為Transition。

  6.修改Targets為屬性名為Suclearcase/" target="_blank" >ccessors,域角色名為Predecessor。

  7.修改Sources的屬性名為Predecessors,域角色名為Successor。

修改Sources的屬性名

  同樣,如果不是基于修改,而是重新添加域類也是完全可以的,我們接下來給域類添加一些屬性:

  8.給域關系Transition右鍵添加域屬性(DomainProperty)Event,Condition,Action,Label.類型都為string?,F在來看一下我們的DSL,狀態機StateMachine,狀態State.State之間的有引用關系Transition,也就是我們需求中描述的轉移,它的屬性也就是狀態機元數數據---事件Event,警戒條件Condition,操作Action。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97