承接上章完成狀態機領域模型定義,本章將詳細示範如何在 DSL 設計器中為域類 State 與域關係 Transition 建立視覺化圖形符號:隔間形狀展示進入/退出動作、裝飾器控制名稱與狀態類型圖示 (初始/結束)、連接器標籤顯示,並配置工具箱圖示,打造完整可視化的狀態機設計介面。
DslDefinition.dsl,刪除預設 ExampleShape。StateShape。State 指向 StateShape。DSL Details 視窗顯示映射細節(父元素路徑等)。
StateShape → Add Compartment,新增兩個隔間:State 沿 StateHasEntryActions 關係選取 EntryAction,顯示屬性設為 Label。StateHasExitActions → ExitAction,顯示 Label。
StateShape → Add Expand Collapse Decorator,Position = InnerTopRight。NameDecorator,Position = InnerTopCenter。於 DSL Details 映射至域類 State 的 Name 屬性。
Start.emf、Stop.emf 放入專案 Resources 資料夾 (來源:VS SDK 安裝路徑 VisualStudioIntegration\Tools\DSLTools\SolutionTemplates\TaskFlow\Dsl\Resources\)。StartIconDecorator (Default Icon = Start.emf)、StopIconDecorator (Default Icon = Stop.emf),Position 預設 InnerTopLeft。StartIconDecorator:Visibility Filter 勾選,Kind 屬性值 = Initial。StopIconDecorator:Visibility Filter 勾選,Kind 屬性值 = Final。
ExampleConnector 為 TransitionConnector,建立映射至域關係 Transition。LabelTextDecorator,Position = TargetTop (標籤顯示於連接線目標端頂部)。LabelTextDecorator 至域類 Transition 的 Label 屬性。
Tasktool.bmp (State)、FlowTool.bmp (Transition) 至專案 Resources。Editor / Toolbox Tabs / LanguageSm / Tools,重命名 ExampleElement → State、ExampleRelationship → Transition,分別指定對應 Toolbox Icon。
出處:https://lonely7345.cnblogs.com/
本文配套原始碼下載