0
我正在设计一个系统。 ,它有一个非常灵活的结构来代表组织,这是非常重要的。设计系统组织结构表示
基本的要求很简单:
- 有集装箱的层次结构(组织单位)
- 容器将包含其它实体(包括其它容器),实体,如:
- 组可以包含用户
- 日历
- 等...
- 还有一个要求,以便根据结构的许可和注册过程。
- Users \ Groups可以向其他容器注册不同的角色和权限,并且将授予他们对所有其他实体具有相同角色的权限,还可以定义组和日历的管理员。
初始想法:
- 使用 “复合” 设计模式来表示的实体:
- [[接口]] IEntity - > INT ID,字符串名称...
- 每个实体将实现相同的接口
- 容器实体将持有将引用这些实体的子项列表。
- 每个实体都将持有一个“权限树”,用于在叶子上保存用户列表,该树将表示用户向实体注册为管理者的角色和方式。即,如果用户是注册为通过一组一个所有者的树将显示:拥有者 - >组别1 - >用户1.
沉思:
- 如果每个实体具有一个删除\自己添加方法?在接口级定义,或者应该有一个不同的类某种“EntitiesManager”来处理添加编辑和删除实体的所有任务。
- 我应该如何建模我的数据库来保存许可树信息?
我很乐意听到关于该主题的任何想法,更正,经验教训或建议。
在此先感谢...
谢谢..只是为了看看我的理解......你建议使用特定的实体类使用CRUD操作。所以如果我想添加另一个容器,它会看起来像这样:MyContainer.Add(),并将他添加到数据库。我以为使用某种FACADE的域管理器类可以帮助我创建实体,例如DomainManager.AddEntity(theEntity,ParentEntity)。 – Mortalus 2012-08-14 19:37:52
是的。如果CRUD逻辑对于所有实体都是非常简单的,那么这种方法是最好的。但让我们考虑一下当你有50个具有非常特定的CRUD逻辑的不同实体时。我不是说可以在数据库级别上执行级联删除。我的意思是像'请为这个新用户创建默认权限集'。你的DomainManager类将被炸毁。另一方面,在实体的典型操作中,您将始终可以轻松访问CRUD逻辑,而无需获取DomainManager实例。 – 2012-08-15 05:12:04