精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解Visual Studio DSL創建狀態機元數據模型

開發 后端
本文將為大家講解Visual Studio DSL,也就是Visual Studio特定領域開發中的創建狀態機元數據模型。

在本文之前,51CTO曾為大家介紹過《Visual Studio特定領域開發中生成域類和域關系》與《淺析Visual Studio中的特定領域開發》。這里講講到的是Visual Studio 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為屬性名為Successors,域角色名為Predecessor.

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

修改Sources的屬性名

同樣,如果不是基于修改,而是重新添加域類也是完全可以的.

我們接下來給域類添加一些屬性:

8.給域關系Transition右鍵添加域屬性(DomainProperty)Event,Condition,Action,Label.類型都為string.

現在來看一下我們的DSL,狀態機StateMachine,狀態State.State之間的有引用關系Transition,也就是我們需求中描述的轉移,它的屬性也就是狀態機元數數據---事件Event,警戒條件Condition,操作Action.

接下來,我們還需要給狀態添加一個屬性,來表示狀態機中的狀態分類,是起始狀態,結束狀態,還是普通狀態.那么這個屬性就需要是枚舉類型,下面我們需要添加一個自定義的枚舉類型:

9.打開DSL Explorer,在根結點LanguageSm(這個代表我們的DSL)上右鍵,選擇添加Domain Enumeration.

打開DSL Explorer

選中剛添加的域枚舉類型,右鍵選擇屬性,修改Name為StateKind,這樣在DSL瀏覽器的Domain Types下面除了通用的類型外,就多了我們的StateKind枚舉類型,同樣,我們可用同樣的方式添加其它外部類型(External Type),供我們的元數據所用。

我們為這個枚舉類型添加枚舉值,右鍵添加Enumeration Literal,添加三個枚舉值Normal,Initial,Final,值分別對應0,1,2.為我們的域類State添加一個屬性Kind,數據類型Type選擇我們剛剛添加的StateKind.

接下來,我們添加一個新的域類(從工具條中選擇Domain Class拖到左側域類區),更名為Action,這就是我們的元數據“操作”,為這個域類添加兩個string類型的屬性Label,Code.

現在我們需要考慮一下元數據中提到的進入操作和退出操作,在進入一個狀態前,對于這個狀態可以有進入操作,在退出一個狀態時,可以有退出操作,很明顯,在狀態和操作之間,應該是嵌入關系而非引用關系,也就是我們的狀態可以包含零或多個進入操作,零或多個退出操作,那我們這個進入操作和退出操作怎么來用DSL的域類表示呢?如果我們也象描述狀態State那樣,由一個屬性來區分是進入操作還是退出操作是否可行呢?如果是這樣的話,對操作Action的添加等就需要特殊處理。另外一點,如果我們針對狀態State與操作Action建立多個零至多的嵌入關系會導致DSL編譯時就會發生錯誤,這是Visual Studio DSL所不允許的,這會造成歧義.[包含域類方面和圖形映射方面都會有問題].

在這里我們打算用DSL的另外一個特性來實現,也就是域類的繼承,我們建立兩個新的域類來表示進入操作和退出操作,他們都繼承操作Action:

10.添加兩個新域類EntryActionExitAction,并不需要給他們添加任何屬性.

11.建立它們與Action的繼承關系,選中工具箱中的Inheritance,先選中EntryAction,再指向選中Action.

Action的繼承關系

上圖就是完成后Action,我們可以通過Bring Tree Here更簡化域類顯示(上右圖).

12.建立EntryAction和ExitAction和State的嵌入關系,注意選中工具箱中的embedding relationship后,要從State指向EntryAction.注意左邊的重數是0…*,右邊的重數是1..1.也就是說一個狀態可以沒有進入操作或退出操作,也可以有多個。而且對于每個進入操作和退出操作,它們只能從屬于一個狀態State.

我們現在來看一下我們完成的整個DSL元數據:

整個DSL元數據

保存整個DSL文件后,我們點擊轉換所有模板(Transform All Templates),Visual Studio DSL根據我們的DSL文件中的元數據,用T4模板文件生成對應的C#代碼,注意我們在以后每當修改完DSL文件中的元數據后,都要記得轉換模板,才會使更改起作用.當然,你也可以選中某一個tt文件,右鍵運行自定義工具(Run Custom Tool),針對這個文件單獨生成,尤其當你的DSL文件相當龐大時,這樣能夠提高生成速度。

轉換完成后,可以重新編譯整個解決方案,查看是否有錯誤發生。我們象第五節那樣,查看一下DomainClasses.cs文件類圖:

DomainClasses.cs文件類圖

可以看到,元數據中的域類,域關系都體現在生成的代碼中了.

原文標題:Visual Studio DSL 入門 8---創建狀態機元數據模型

鏈接:http://www.cnblogs.com/lonely7345/archive/2010/02/22/1670805.html

【編輯推薦】

  1. 淺析Visual Studio中的特定領域開發
  2. Visual Studio特定領域開發中生成域類和域關系
  3. Visual Studio 2010中UML瀏覽器詳解
  4. Visual Studio 2010開發絢麗Win 7應用程序
  5. 如何在Visual Studio中進行XML編程
責任編輯:彭凡 來源: 博客園
相關推薦

2010-02-24 09:32:38

Visual Stud

2010-01-27 10:32:40

Visual Stud

2020-03-27 10:50:29

DSL 狀態機工具

2010-05-26 14:37:56

Cassandra數據

2023-03-06 07:35:30

狀態機工具訂單狀態

2020-10-15 10:38:35

C語言狀態模型

2010-06-18 12:38:38

UML狀態機視圖

2021-07-08 09:15:20

單片機編程狀態機編程語言

2010-06-18 13:25:44

UML狀態機視圖

2013-09-03 09:57:43

JavaScript有限狀態機

2009-11-13 10:12:37

Visual Stud

2024-10-10 17:46:06

2010-07-08 13:03:31

UML狀態機圖

2011-06-24 16:09:24

Qt 動畫 狀態機

2022-11-15 08:21:49

物聯網數據模型Apache

2021-02-28 22:20:25

2009-08-05 16:02:48

Visual Stud

2009-12-16 15:44:20

Visual Stud

2011-03-28 09:23:31

Visual Stud

2010-07-12 15:00:56

UML狀態機視圖
點贊
收藏

51CTO技術棧公眾號

成人免费淫片aa视频免费| 亚洲精品少妇网址| youjizz.com在线观看| 亚洲av无码国产精品久久不卡| 国产精品av久久久久久麻豆网| 亚洲成人av中文字幕| 黑人糟蹋人妻hd中文字幕| 中文字幕日本在线| 成人一级片在线观看| 欧美自拍视频在线| 久久国产高清视频| 女一区二区三区| 欧美日韩成人综合在线一区二区| 亚洲图片都市激情| 国产刺激高潮av| 日韩成人免费在线| 欧美高清在线视频观看不卡| 性の欲びの女javhd| 亚洲国产一区二区三区网站| 欧美视频精品一区| 亚洲高清123| 四虎永久在线观看| 日韩av一区二区三区四区| 欧美风情在线观看| 国产成人在线网址| 亚洲精品动态| 精品国产一二三| 岛国av在线免费| 麻豆免费在线| 一区二区三区四区不卡视频| 日韩理论片在线观看| 丰满肉嫩西川结衣av| 精品一区二区三区视频 | 69视频在线观看| 国产不卡视频一区二区三区| 国产精品亚洲美女av网站| 国产特黄大片aaaa毛片| 欧美在线资源| 色七七影院综合| 欧美性猛交xxxx乱| 牲欧美videos精品| 精品少妇一区二区三区免费观看| 高潮一区二区三区| 在线成人视屏| 日韩欧美aⅴ综合网站发布| 无码人妻精品一区二区蜜桃百度| 永久免费在线观看视频| 久久精品亚洲一区二区三区浴池 | 蜜桃视频欧美| 亚洲国产小视频| 最新日本中文字幕| 136国产福利精品导航网址应用| 欧美日高清视频| 亚洲天堂2018av| 999国产精品亚洲77777| 在线亚洲高清视频| 蜜臀av午夜一区二区三区| 乱人伦视频在线| 精品国产91久久久久久老师| 91黄色在线看| av资源网在线播放| 亚洲成av人片在www色猫咪| 波多野结衣av一区二区全免费观看| 黄色网页在线免费观看| 亚洲欧美日韩久久| 小泽玛利亚av在线| 大黄网站在线观看| 欧美日韩一区二区三区| 麻豆av免费在线| 懂色aⅴ精品一区二区三区| 欧美日韩一级片在线观看| 欧美成人黄色网址| 91成人精品观看| 日韩三级视频在线看| 日本少妇一级片| 高潮按摩久久久久久av免费| 日韩av在线资源| 免费在线观看污| 日韩精品影视| 欧美高清视频在线| 天堂网免费视频| 蜜桃av一区二区三区电影| 91久久精品美女高潮| av中文字幕免费| 不卡一区二区中文字幕| 欧美日韩一区二区视频在线| yw视频在线观看| 综合久久久久久| 波多野结衣av一区二区全免费观看 | 秋霞影院一区| 精品国产欧美一区二区| 国产色视频一区二区三区qq号| 国内精品久久久久久99蜜桃| 日韩在线www| 久久午夜鲁丝片午夜精品| 国产色综合网| 成人精品视频久久久久 | 亚洲欧洲在线免费| 成人免费精品动漫网站| 亚洲青色在线| 国产一区香蕉久久| 色呦呦中文字幕| 国产精品天干天干在观线| 国产精品视频二| 色老太综合网| 精品国产亚洲在线| 一级免费黄色录像| 香蕉久久国产| 91在线观看网站| av在线免费观看网| 天天亚洲美女在线视频| 天天爽夜夜爽一区二区三区| av一级亚洲| 色偷偷av亚洲男人的天堂| 在线观看精品国产| 国产精品一区二区你懂的| 日韩电影在线播放| 国产精品论坛| 日韩欧美不卡一区| 亚洲不卡的av| 性色一区二区三区| 国产精品一区二区三区在线 | av网站免费大全| 亚洲国产电影在线观看| 欧美精品一区二区三区三州| 国产日本亚洲| 日韩在线资源网| 国产污视频网站| www.亚洲在线| 天堂8在线天堂资源bt| 韩国三级成人在线| 日韩中文字幕在线播放| 国产午夜麻豆影院在线观看| 成人动漫av在线| 国产一区二区三区播放| 只有精品亚洲| 色综久久综合桃花网| 国产精品久久久久久久久夜色| 99re视频精品| 亚洲人成无码网站久久99热国产 | 桃色av一区二区| 欧美tickling网站挠脚心| 成人免费毛片xxx| 久久精品国产亚洲aⅴ| 神马影院我不卡午夜| 老司机成人影院| 精品亚洲夜色av98在线观看| 好吊操这里只有精品| 成人动漫中文字幕| 国产精品专区在线| 欧美变态挠脚心| 97婷婷涩涩精品一区| 三级视频在线看| 亚洲成人中文在线| 中文字幕影片免费在线观看| 一道本一区二区| 久久久久久久久久码影片| 无码小电影在线观看网站免费 | av在线电影播放| 欧美日韩综合在线| 可以免费看av的网址| 精品一区二区在线视频| 可以免费看的黄色网址| 久久精品九色| 久久久久久久久久国产精品| 人妻一区二区三区| 精品国产鲁一鲁一区二区张丽| 中文字幕在线免费看线人| 午夜亚洲性色视频| 日韩三级在线播放| 亚洲国产伊人| 久久久久久久久久久人体| 无码国产伦一区二区三区视频| 色悠悠亚洲一区二区| 亚洲精品国产精品国自| 国产在线国偷精品免费看| 精品人妻人人做人人爽| 国产色噜噜噜91在线精品 | 日韩中文字幕亚洲| 性少妇videosexfreexxx片| 亚洲成av人片www| 亚洲精品成人无码| 国内精品久久久久影院色| 日韩一二区视频| 日韩大片在线免费观看| 国产精品男人的天堂| 高清全集视频免费在线| 亚洲国产精品久久久久久| 无码人妻精品一区二区三区不卡 | 日韩精品极品在线观看| 中文字幕乱伦视频| 亚洲一区免费在线观看| 强伦人妻一区二区三区| 国产自产v一区二区三区c| 成人免费视频91| 99久久久国产精品美女| 国内精品久久久久久久果冻传媒| 成人国产在线| 午夜精品久久久久久久99热| 午夜激情在线观看| 亚洲国产三级网| 国产精品自偷自拍| 色综合久久久久综合体桃花网| 午夜爱爱毛片xxxx视频免费看| 91一区二区在线| 先锋资源在线视频| 日韩电影在线一区二区三区| 日本五级黄色片| 久久精品国产亚洲夜色av网站| 国产九色91| 亚洲精品tv| 国产成人精品日本亚洲| 蜜臀av在线| 日韩中文字幕在线精品| 免费一级在线观看播放网址| 精品国产三级a在线观看| 亚洲天堂网视频| 欧美午夜视频在线观看| 免费一级片视频| 国产精品超碰97尤物18| 一区二区三区四区免费| 不卡的av中国片| 肉色超薄丝袜脚交| 美国一区二区三区在线播放| 免费无码av片在线观看| 在线欧美亚洲| 天堂а√在线中文在线| 99精品美女| 色综合久久av| 欧洲杯什么时候开赛| 欧美激情一区二区三区在线视频 | 少妇免费毛片久久久久久久久| 精品中国亚洲| 豆国产97在线| 日韩精品一级| 91色精品视频在线| 伊人久久大香| 91视频免费在线| av一级久久| 成人午夜在线观看| 99er精品视频| 91系列在线播放| 91麻豆精品一二三区在线| 国产精品中文在线| 精品国产黄a∨片高清在线| 国产精品美女视频网站| 免费污视频在线一区| 国产成人精品久久| 成人午夜亚洲| 国产欧美精品日韩| 免费视频观看成人| 91午夜理伦私人影院| 精品中文字幕一区二区三区四区| 91在线无精精品一区二区| 高清精品久久| av资源一区二区| 96sao在线精品免费视频| 国产精品欧美久久| 天堂日韩电影| 日本在线一区| 97人人精品| 韩国无码av片在线观看网站| 很黄很黄激情成人| 国产午夜福利100集发布| 国产精品最新自拍| 爱情岛论坛成人| 久久精品久久99精品久久| 日韩一区二区三区久久| 国精产品一区一区三区mba桃花 | 国产成人精品亚洲精品色欲| 欧美一区二区三区电影| 国精品人妻无码一区二区三区喝尿 | 久久久久久亚洲精品中文字幕| 91九色在线播放| 国产精品黄视频| 成人综合日日夜夜| 国产精品9999久久久久仙踪林| 欧美美女啪啪| 亚洲一区不卡在线| 欧美久色视频| 国产主播在线看| 久久99最新地址| 一级黄色片毛片| 国产精品免费丝袜| 久久午夜无码鲁丝片| 色婷婷av一区二区三区大白胸 | 国内成人自拍视频| xxxxxx黄色| 国产精品福利电影一区二区三区四区 | 亚洲第一成肉网| 91在线观看污| 亚洲天堂一级片| 狠狠色狠狠色综合日日五| 一区二区日韩视频| 日韩经典中文字幕在线观看| 在线激情小视频| 97av在线影院| 亚洲日日夜夜| 欧美xxxx黑人又粗又长密月| 五月精品视频| 老司机午夜av| 懂色av一区二区三区免费观看| 99久久人妻无码精品系列| 一区二区三区自拍| 最新中文字幕免费| 日韩高清a**址| 羞羞的视频在线看| 国产精品久久一| 色老板在线视频一区二区| 亚洲免费视频播放| 免费看黄色91| 成年人网站免费看| 亚洲一区二区四区蜜桃| 一本色道久久综合亚洲| 亚洲免费视频一区二区| 神马午夜伦理不卡| 成人精品一区二区三区电影免费| 天海翼精品一区二区三区| 青青在线视频免费观看| 久久97超碰色| 中文字幕第24页| 欧美性xxxxxx| 污污视频在线观看网站| 久久男人资源视频| 欧美不卡在线观看| 吴梦梦av在线| 蜜桃视频一区二区三区| 四虎永久免费在线观看| 精品久久久国产| 成人午夜福利视频| 欧美激情欧美激情| 日韩高清一区| 黑人巨茎大战欧美白妇 | 伊人网综合视频| 亚洲午夜私人影院| 成人激情四射网| 欧美日韩国产va另类| 日本综合精品一区| www.亚洲一区二区| 激情丁香综合五月| 久久av红桃一区二区禁漫| 欧美日韩不卡在线| 美女免费久久| 亚洲专区中文字幕| 一区二区三区午夜探花| av在线网站免费观看| 亚洲日本护士毛茸茸| av中文字幕第一页| 欧美激情综合亚洲一二区| 成人看片黄a免费看视频| 六月婷婷激情网| 国产成人99久久亚洲综合精品| 激情综合网五月天| 亚洲福利小视频| 中文字幕在线视频久| 日韩激情视频| 精品一区二区综合| 久久久国产精华液| 亚洲白拍色综合图区| 黄在线观看免费网站ktv| 欧美精品二区三区四区免费看视频 | 国内成人精品视频| 欧美色图五月天| 日韩精品一区二区三区色欲av| 国产日韩亚洲欧美综合| 在线播放国产一区| 久久国产加勒比精品无码| 无码国模国产在线观看| 国产原创popny丨九色| 久久免费视频一区| 夜夜嗨av禁果av粉嫩avhd| 欧美成人久久久| 日韩视频在线免费播放| 久久国产影院| 欧美一级小视频| 亚洲一区二区三区四区的| 日本成人一区| 国产日韩欧美在线播放| 伊人久久亚洲影院| 无码人妻aⅴ一区二区三区69岛| 欧美日韩成人一区二区| 91豆花视频在线播放| 欧美尤物一区| 国产一区二区三区四区五区入口| 国产性xxxx高清| 色偷偷91综合久久噜噜| 久久成人福利| 国产一二三四在线视频| 一区二区成人在线视频| 国产视频精品久久| 99超碰麻豆| 日韩av在线发布| 久久伊人成人网| 国产一区二区精品丝袜| 亚洲精品一区二区三区在线| 好男人www社区| 午夜一区二区三区视频| 2019中文字幕在线视频| 精品国产一区二区三区四区vr| 久久国产三级精品|