Visual Studio DSL 入門 9—建立狀態機器的圖形符號

來源:互聯網
上載者:User

    上一節我們已經建立狀態機器的中繼資料模型,在這一節,我們來完成我們狀態機器的圖形符號,建立起狀態機器的測試回合環境.
    開啟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/
本文著作權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.