每乙個dsl的核心都是乙個域模型,它定義了這一語言所代表的各種概念,以及這些概念的屬性和它們之間的關係,在建立dsl每乙個元素時都是使用域模型來描述。域模型還為語言的其他方面的建立提供了基礎:圖形符號、工具箱、資源管理器、屬性視窗、驗證、序列化和部署、**生成等的定義。在metamodelengine:元模型引擎開發思路
goprr為元元模型層、領域概念為元模型層、產品規格為模型層、例項為系統應用層。對於域模型定義,我們主要關注goprr這一層。
元模型物件分為屬性和非屬性物件,非屬性物件都可以定義多個屬性物件。graph、object、port、role和relationship都是非屬性物件。它們的屬性定義如下:
物件屬性
附加資訊
說明property
name
名稱ancestor
父屬性project
域模型基於儲存庫管理,這裡指定所屬專案
datatype
string
字串text
文字備註
number
數字 boolean
布林 createion timestamp
生成日期
collection:item type
集合型別,指定集合項型別,可以為string、graph...、object...、port...、role...、relationship…
graph…
彈出選擇【圖形】物件對話方塊,選擇專案中的乙個圖形物件
object…
port…
role…
relationship…
widget
input field
輸入框editable list:values
列表編輯
fixed list:values
列舉值default value
預設值
value regex
正則檢查串
description
描述 object
relation
role
port
graph
的基本資訊
name
名稱 ancestor
父物件
project
所屬專案
properties
local name
屬性作為公共物件儲存,在物件本身中引用後可以設定屬性在本物件中顯示的名稱
unique?
是否唯一
description
描述 在metaedit+中式通過如下視窗進行定義的:
它們之間是通過乙個叫做繫結bindings的虛擬物件關聯起來的。在繫結中可以包含多個關係,每個關係可以包含兩個或更多的角色,每個角色可以包含多個物件,關係如下圖所示:
注:圖中還可以定於約束,這個在現階段不考慮。
圖形物件由relationship、roles、objects三種物件組成,關係鏈結多個物件,關係與關係之間不進行連線:
在圖中繫結設定中定義關係時,每個關係都是有先後順序的,定義是第乙個role為關係的源,也就是我們畫關係時連線的第乙個物件代表的role,其他順序依次類推。
對於關係繫結中對於roles,我們可以指定重數(1,0..1,0..n,1..n),如下圖所示:
MetaModelEngine 介面表示
在讀書筆記 visual studio dsl工具特定領域開發指南中介紹過圖形dsl有幾個重要內容必須要定義 域模型 域類和關係 約束 符號 生成 序列化和工具整合。在metamodelengine 域模型定義metamodelengine支援幾何形狀 隔間形狀和泳道三種形狀,具體樣式各自圖形所示 ...
MetaModelEngine 元模型引擎開發思路
本文已挪至 在dsm 使用metaedit 編寫family tree modeling language 中介紹了metaedit 的乙個家族樹模型語言 的元模型引擎metamodelengine的應用思路。我在軟體產品線工程方法 四個主要方法原則 提到產品線帶來的幾個好處 減少成本,快速上市,減...
MetaModelEngine 域模型定義
每乙個dsl的核心都是乙個域模型,它定義了這一語言所代表的各種概念,以及這些概念的屬性和它們之間的關係,在建立dsl每乙個元素時都是使用域模型來描述。域模型還為語言的其他方面的建立提供了基礎 圖形符號 工具箱 資源管理器 屬性視窗 驗證 序列化和部署 生成等的定義。在metamodelengine ...