MetaModelEngine 域模型定義

2021-09-22 03:34:50 字數 2222 閱讀 6135

每乙個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 ...