上一節我們已經建立狀態機器的中繼資料模型,在這一節,我們來完成我們狀態機器的圖形符號,建立起狀態機器的測試回合環境.
開啟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,可以看到和我們第七節介紹的映射資訊:
4.為StateShape添加隔間EntryActions(在StateShpae上直接右鍵添加Compartment), Title為”進入操作”,TitelFillColor為LightBlue.同樣也添加隔間ExitActions,Title為”退出操作”.
5.在Dsl details中映射兩個隔間,設定EntryActions隔間的顯示元素集合,開窗從State的StateHasEntryActions關係下選中EntryAction,設定顯示內容為Label.即此隔間顯示它所具有的EntryAction集合的每個Label屬性值.同樣操作設定隔間ExitActions.
我們為StateShape添加一些裝飾器,來控制State展現時的一些效果.
6.右鍵StateShape添加Expand Collapse Decorator,主要用來裝飾展開收縮,設定Position屬性值為InnerTopRight,這樣展開收縮表徵圖就會顯示在右上方.
7.添加Text Desorator,命名為NameDecorator,設定Position屬性值為InnerTopCenter.(下面我們會將此裝飾器映射到屬性Name,也就設定屬性Name顯示在圖形的InnerTopCenter位置).
8.在dsl details中映射NameDecorator到屬性Name:
下面我們來完成在上一節我們提到的一個功能,就是設定我們狀態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.
接下來我們來完成域關係轉移Transition的圖形顯示:
12.修改ExampleConnector為TransitionConnector.將TransitionConnector與Transition建立映射關係.
13.為TransitionConnector添加文本裝飾器LabelTextDecorator,Position屬性值為TargetTop,也就是屬性Label將會顯示在關係線Target端的頂部
14.在dsl details中映射LabelTextDecorator到域類Transition的屬性Label:
我們已經完成了域類State和域關係Transition的圖形符號,下面我們為它們添加工具箱的表徵圖(當然如果不添加的話,會直接採用預設的表徵圖):
15.為dsl項目添加兩個表徵圖Tasktool.bmp,FlowTool.bmp(路徑同上,下同),開啟dsl explorer,找到結點Editor/Toolbox Tabs/LanguageSm/Tools,可以看到已經有了ExampleElement,ExampleRelationship.右鍵屬性分別把它們更名為State,Transition,Toolbox Icon分別對應選中上面兩個表徵圖.
已經完成了,我們來運行一下這個狀態機器設計器:
16.注意在運行前一定儲存完dsl檔案後轉換所有的模板,然後點擊調試運行整個項目.具體這個狀態機器的使用先不詳細介紹了.
代碼下載
參考資源
1. Visual Stuido DSL 工具特定領域開發指南
2. DSL Tools Lab http://code.msdn.microsoft.com/DSLToolsLab 系列教程 [本系列的入門案例的主要參考]
作者:孤獨俠客(似水流年)
出處:http://lonely7345.cnblogs.com/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。