我們試圖使用DDD原則對基於RBAC的用戶維護系統建模。我們已經確定了以下實體:有界上下文和聚合根文件
Authorization is an Aggregate Root with the following:
User (an entity object)
List<Authority> (list of value objects)
Authority contains the following value objects:
AuthorityType (base class of classes Role and Permission)
effectiveDate
Role contains a List<Permission>
Permission has code and description attributes
在一般情況下,授權肯定是聚合根,因爲一切都在用戶維修圍繞那(例如我可以向用戶授予一個或多個機構,非法入境者既不是一個角色或權限)
我的問題是:角色和權限呢?他們是否也在各自獨立的背景下聚合根? (即我有三個上下文,授權,角色,許可)。雖然可以將所有內容合併到一個上下文中,但角色不會太重,因爲它將作爲授權「對象圖」的一部分進行加載?
再次感謝大衛。你的陳述「有界的上下文有助於爲無處不在的語言中定義的實體在特定環境下的不同目的」向我明確表達。我想,一開始就讓我感到困惑的是,必須通過AR來訪問其中的一個EO/VO。這是令人困惑的,因爲,正如你所提到的,角色也是授權AR中引用的AR。我們正在參加RBAC練習,以便了解使用DDD的情況。我們正在研究的其他背景是我認爲適用於DDD。 – jett
沒問題。我給出的另一條建議是:**讓聚合通過引用其ID來引用其他聚合,而不是聚合本身**。如果你閱讀我建議的文章解釋了原因。 –
我喜歡這個例子,讓我清楚地理解上下文 –