什么是在这种情况下

什么是在这种情况下

问题描述:

我有这些实体什么是在这种情况下

  • 用户
  • 工作总结根 - 每一个任务必须有一个用户分配
  • 项目 - 任务可以被分配到一个项目,但它不是必要时,用户必须被指定为项目创建者
  • TaskStatus - 每一个任务必须有一个状态分配

,我设计了总RO OTS如下

总根

  • 用户与实体:任务,任务状态
  • 项目

我在正确的方向前进?

是啊,听起来很正确。这是我在C#中的即兴创作:

//aggregate root 
public class User{/*first name, last name, contacts, etc.*/} 

//aggregate root 
public class Project{ 
    public IList Tasks{get; private set;} 
    public User CreatedBy{get; private set;} 
    public Project(User createdBy){ 
    CreatedBy=createdBy; 
    } 
    public RegisterTask(string taskDescription, User assignedTo){ 
    Tasks.Add(new Task(taskDescription, assignedTo)); 
    } 
    public StartWorkOn(Task task){ 
    if(!Tasks.Contains(task)) 
     throw new Exception("Task is not registered"); 
    task.StartWork(); 
    } 
} 

//entity 
public class Task{ 
    public User AssignedTo{get;private set;} 
    public string Description{get; private set;} 
    public TaskStatus Status{get; private set;} 
    internal Task(string description, User assignedTo){ 
    AssignedTo=assignedTo; 
    Description=description; 
    Status=TaskStatus.Pending; 
    } 
    internal void StartWork(){ 
    if(Status!=TaskStatus.Pending) 
     throw new Exception("Can't start what's ongoing"); 
    Status=TaskStatus.InProgress; 
    } 
    internal void Finish(){ 
    if(Status!=TaskStatus.InProgress) 
     throw new Exception("Can't finish what has not started"); 
    Status=TaskStatus.Finished; 
    }  
} 

//value object 
public enum TaskStatus{ Pending, InProgress, Finished } 

var me=new User(); 
_users.Save(me); 

var you=new User(); 
_users.Save(you); 

var project=new Project(me); 
project.RegisterTask("Have a nice day!", you); 
project.StartWorkOn(project.Tasks.First()); 
_projects.Save(project); 

请记住 - 这只是一个草图。不要太认真。

+0

任务并不需要被分配到一个项目,但必须由用户创建。因此,我选择User作为任务实体的AR,因为任务不能在没有用户的情况下存在,但它可以在没有项目的情况下存在。我在这里吗? – user137348 2011-01-23 21:09:01