2015-02-24 21 views
1

我正在使用Enterprise Architect創建一個類模型,顯示一個對象A,該對象具有與三個對象B的單個實例的可選關聯,即D→A→B (0..1),A -----> C(0 ... 1),A -----> D(0..1)。UML符號 - 一個或多個可選

問題是,我想能夠說,總的來說A必須至少有一個B或C或D的實例。爲了使事情變得棘手,我不能在B,C,D之上創建一個泛化我們稱它爲X),並將A與1 ... *進行泛化,因爲我在Enterprise Architect中從模型生成XSD。然後XSD表示任何XML weith A作爲一個元素都必須包含X作爲子元素(而不是說B AND/OR C AND/OR D)。

我認爲有一些聰明的方法來加入三個關聯從A到B,C和D toghether說至少有一個這些關聯必須存在,而不必在B之上創建泛化X,C & D

回答

6

在UML中,關係主要在兩個元素之間,所以很難實現你所追求的。你描述的泛化構造是這個的正常解決方案。

您還可以添加約束並將其鏈接到連接器。這將通知讀者,但EA不會在意。我很確定,即使您在OCL(正式約束語言)中編寫約束,EA也不會在生成過程中對其進行評估。

enter image description here

+0

感謝您的回答 - 這很有道理。那麼我能想到的唯一可能的途徑就是嘗試將xpath添加到XSD中以強制實施約束,或者在XSD驗證之後創建一個單獨的xpath作業來執行更復雜的關係規則。 – 2015-02-24 15:55:11

+0

恐怕是這樣。如果您正在爲其中一種語言的源代碼生成EA支持,則可以修改生成模板,但XSD生成是一個單獨的函數,其中沒有用戶可服務的部分。 – Uffe 2015-02-26 10:08:48

相關問題