精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美喷潮久久久xxxxx| 国产视频一区在线观看| 久久人人爽国产| 色综合久久五月| 国产一区二区主播在线| 亚洲欧美怡红院| 国产精品白丝jk白祙| 国产亚洲欧美在线精品| 88国产精品视频一区二区三区| 日韩免费在线观看| 人妻内射一区二区在线视频| 米奇精品一区二区三区| caoporn国产精品| 国产一区二区丝袜| av中文在线播放| 久久久久久久久丰满| 日韩精品在线观看一区二区| 国产欧美精品一二三| 九色porny丨入口在线| 国产精品久久久久久福利一牛影视 | 黄色精品免费看| 久久看人人爽人人| 国产高清精品一区二区三区| 中文字幕人妻精品一区| 日韩午夜在线电影| 美日韩精品视频免费看| 免费看裸体网站| 91嫩草精品| 91精品免费在线观看| 手机在线看福利| 日韩一级片免费视频| 神马午夜一区二区| 国产一区视频导航| 国产久一一精品| 国产一级免费视频| 一道本一区二区| 欧美激情欧美激情| 最新一区二区三区| 欧美成人直播| 中文字幕日韩精品有码视频| 中文字幕一区二区久久人妻网站 | 精产国品自在线www| 久久一留热品黄| 国产麻豆乱码精品一区二区三区 | 成人精品在线看| 国产一区日韩一区| 亚洲影视在线播放| 最近更新的2019中文字幕| 午夜视频在线观看国产| 第四色中文综合网| 日韩免费性生活视频播放| 五月花丁香婷婷| 色8久久久久| 欧美日本一区二区三区四区| 天天操,天天操| 成人国产网站| 欧美挠脚心视频网站| 91亚洲精品久久久蜜桃借种| 视频精品导航| 欧美日韩精品电影| 日本不卡一区二区在线观看| 国产精品无码久久久久| 欧美日韩一级二级三级| 久久黄色片网站| 四虎精品一区二区免费| 在线不卡a资源高清| 免费成人黄色大片| 麻豆精品一区| 亚洲国产精品va在线| 影音先锋黄色资源| 中文字幕精品影院| 在线国产精品播放| 日韩a级在线观看| 青青草免费观看视频| 一本久道久久综合婷婷鲸鱼| 91成人性视频| 超碰在线97观看| 激情久久五月天| 超碰97人人人人人蜜桃| 日韩有码电影| 国产精品二区一区二区aⅴ污介绍| 在线成人性视频| 国产精品偷拍| 色综合激情久久| 999这里有精品| av动漫精品一区二区| 日韩电影免费观看中文字幕| 摸摸摸bbb毛毛毛片| 亚洲精品国产成人影院| 国外成人免费在线播放| 91青青草视频| 国产一二三精品| 九九99久久| 日本www在线观看| 亚洲福利视频三区| av网站在线不卡| 成人av地址| 最新69国产成人精品视频免费| 欧美成人免费观看视频| 久久久人人人| 超碰97国产在线| 日本亚洲精品| 欧美性xxxx极品hd欧美风情| 亚洲成人手机在线观看| 综合伊思人在钱三区| 久久国产精品电影| 区一区二在线观看| 国产91精品一区二区| 香蕉久久夜色| 亚洲午夜天堂| 欧美成人a视频| 萌白酱视频在线| 噜噜噜91成人网| 国产美女精品在线观看| 黄色网页在线免费观看| 日本高清成人免费播放| 日韩精品视频一区二区| 亚洲色图网站| 国产噜噜噜噜久久久久久久久| 色婷婷中文字幕| 亚洲激情五月婷婷| 最新av免费在线观看| 午夜伦理福利在线| 日韩免费电影网站| 韩国一级黄色录像| 天堂在线一区二区| 精品一区二区久久久久久久网站| av在线三区| 色香蕉成人二区免费| 91人人澡人人爽| 亚洲欧美偷拍自拍| 成人免费淫片视频软件| 18免费在线视频| 色狠狠色噜噜噜综合网| 日本一区二区三区网站| 亚洲高清毛片| 国产精品一区二区三区在线| 午夜激情在线| 欧美一区二区免费视频| 99自拍视频在线| 精品一区二区在线视频| 中文字幕在线亚洲三区| 日本在线一区二区| 上原亚衣av一区二区三区| 免费黄色小视频在线观看| 久久久美女艺术照精彩视频福利播放| 97在线国产视频| 巨人精品**| 欧美一级大片视频| 日韩porn| 91成人免费网站| 欧美人妻一区二区三区| 秋霞成人午夜伦在线观看| 亚洲精品久久区二区三区蜜桃臀| 国产精品亚洲一区二区三区在线观看 | 久久久综合免费视频| 东京干手机福利视频| 亚洲国产一区视频| 黑丝av在线播放| 西西裸体人体做爰大胆久久久| 国产日本一区二区三区| 免费看男女www网站入口在线| 亚洲国产精品女人久久久| 色播视频在线播放| 久久久久久久精| 亚洲精品自拍网| 欧美一区影院| 国产在线一区二区三区欧美| 麻豆视频在线看| 在线观看成人黄色| h狠狠躁死你h高h| 精品国产福利在线| 日本一卡二卡在线播放| 精品一区在线看| 久久理论片午夜琪琪电影网| 亚洲男人在线天堂| 性欧美长视频| 亚洲欧美成人一区| av不卡一区二区| 国产精品福利在线观看网址| 黄色一级片在线观看| 亚洲国产精品久久久久秋霞蜜臀 | 国产视频不卡在线| 国产精品91xxx| 日韩欧美亚洲天堂| 日韩精品首页| 国产视频一区二区不卡| 亚洲四虎影院| 欧美极品第一页| 高清美女视频一区| 精品国产污污免费网站入口| 天天操夜夜操视频| 亚洲精品日韩一| 亚洲日本精品视频| 成人自拍视频在线| 亚洲天堂网一区| 在线亚洲自拍| 水蜜桃在线免费观看| 伊人春色精品| 99久久精品无码一区二区毛片 | 免费欧美日韩| 中文字幕在线乱| 国产探花一区| 国产激情美女久久久久久吹潮| 亚洲精品555| 高清欧美一区二区三区| 大乳在线免费观看| 亚洲国产精品国自产拍av秋霞| 中文字幕人成人乱码亚洲电影| 午夜伦欧美伦电影理论片| 亚洲熟女毛茸茸| 国产调教视频一区| 天天躁日日躁狠狠躁av麻豆男男| 久久成人免费网| 中文字幕无码不卡免费视频| 欧美/亚洲一区| 亚洲欧洲中文| 国产精品一线天粉嫩av| 精品午夜一区二区| 一区二区三区视频免费视频观看网站| 国产精品高清在线| 成人私拍视频| 97超级碰碰人国产在线观看| 性直播体位视频在线观看| 色先锋资源久久综合5566| 男女污视频在线观看| 亚洲电影在线观看| 亚洲欧美黄色片| 欧美一区二区三区人| 中文字幕制服诱惑| 欧美熟乱第一页| 国产在线一级片| 在线一区二区三区四区五区 | 高清电影在线免费观看| 欧美精品一区二区三区国产精品 | 亚洲黄色在线视频| 夫妻性生活毛片| 中文字幕欧美日韩一区| 国产精品天天干| 久久精品亚洲乱码伦伦中文 | 色婷婷av一区二区三区之e本道| 欧美一区二区三区小说| 亚洲一区在线观| 欧美日韩的一区二区| 中文字幕人妻一区二区三区视频 | 999免费视频| 51久久夜色精品国产麻豆| 91tv国产成人福利| 67194成人在线观看| 97超碰人人草| 欧美一二三四区在线| 精品人妻久久久久一区二区三区| 欧美一级精品大片| 性一交一乱一乱一视频| 精品久久久久久久人人人人传媒| 亚洲国产精品二区| 亚洲精品国产电影| 欧美日韩免费做爰大片| 亚洲午夜未删减在线观看| 成人在线免费视频| 久久精品国产综合| 欧美aaaaaaa| 欧美中文字幕视频| 国产精品久久久久久吹潮| 成人免费网站在线| 韩国女主播一区二区三区| 蜜桃999成人看片在线观看| 国产精品探花在线观看| 手机看片日韩国产| 1024日韩| 中文字幕第21页| 国产一区二区三区久久久| 国产大尺度视频| 久久品道一品道久久精品| xxxxx99| 樱桃视频在线观看一区| 国产女同在线观看| 欧美日韩精品欧美日韩精品一综合| 国产伦精品一区二区三区四区| 日韩精品一区二区三区视频播放 | 日韩在线一区二区三区免费视频| 大片免费在线看视频| 午夜精品久久久久久99热| 欧美xnxx| 高清视频在线观看一区| 国产成人3p视频免费观看| 日本免费在线视频观看| 日韩一级在线| 五月天婷婷在线观看视频| 不卡av电影在线播放| 香蕉久久久久久久| 福利视频一区二区| 国产999久久久| 夜夜嗨av色综合久久久综合网 | 999国产精品999久久久久久| 男女激情免费视频| 蜜臀久久久99精品久久久久久| 97免费公开视频| 国产精品天天看| 国产精品久久久久久99| 欧美一卡二卡在线| 成人激情电影在线看| 国内精久久久久久久久久人| 欧美xxxx网站| 欧洲精品久久| 国产欧美日韩一级| 国产又黄又嫩又滑又白| 久久久久久97三级| 在线免费观看毛片| 91精品在线免费观看| 国产二区在线播放| 欧美亚洲国产精品| 成人h动漫免费观看网站| 在线视频欧美一区| 日韩国产欧美在线视频| 日b视频在线观看| 一区二区三区成人| 国产精品一区二区av白丝下载| 亚洲欧美中文日韩在线| 黑人玩欧美人三根一起进| 成人免费大片黄在线播放| 国产中文精品久高清在线不| 日日摸日日碰夜夜爽无码| 国产成人精品亚洲777人妖| 精品国产国产综合精品| 欧美色区777第一页| 狠狠色伊人亚洲综合网站l| 91精品国产自产91精品| 国产精品chinese在线观看| 欧美 国产 精品| 激情av综合网| 久久爱一区二区| 欧美日韩国产另类不卡| h视频在线观看免费| 国产精品电影观看| 精品视频免费| 美女一区二区三区视频| 国产欧美日韩精品在线| 潘金莲一级淫片aaaaaa播放| 亚洲精品少妇网址| 在线成人av观看| 欧美在线3区| 日本中文字幕不卡| 国产农村妇女精品一区| 欧美日韩一区在线| 麻豆传媒在线免费| 91av免费看| 亚洲一本视频| 欧美大片免费播放器| 欧美性黄网官网| 国产日本在线| 国产欧美日韩高清| 亚洲最新av| 丰满熟女人妻一区二区三区| 亚洲一区二区精品3399| 性一交一乱一色一视频麻豆| 久久久久久久久久国产精品| 哺乳一区二区三区中文视频| 亚洲精品蜜桃久久久久久| 风流少妇一区二区| 国产老头老太做爰视频| 欧美久久一二三四区| 黄在线免费观看| 欧美精品一区在线播放| gogo人体一区| 国产成人亚洲综合无码| 成人免费视频一区| 中日韩黄色大片| 一色桃子一区二区| 玖玖精品一区| 日韩在线视频在线观看| 国产欧美一区二区三区沐欲| 国产精品一区二区人人爽| 欧美激情va永久在线播放| 夜夜春成人影院| 91丨九色丨蝌蚪| 亚洲成人自拍一区| 国产九色在线| 91精品国产综合久久久久久丝袜 | 亚洲理论在线观看| 色婷婷视频在线| 国产一区深夜福利| 日韩午夜一区| 内射一区二区三区| 日韩激情视频在线播放| 亚洲精品国产嫩草在线观看| 欧美一级爱爱视频| 久久精品视频一区| www.亚洲欧美| 国产精品96久久久久久| 国内精品福利| 鲁丝一区二区三区| 亚洲精品在线电影| 本网站久久精品| 精品少妇人妻av免费久久洗澡| 国产精品素人视频| 四虎精品在线| 亚洲综合中文字幕68页| 欧美aⅴ一区二区三区视频| 国产精品第一页在线观看|