我需要问一个复杂的场景,所以我将尝试举例说明。
考虑以下模型:
public enum States { Created, Approved, Started, Completed }
public class Request {
States State {get; set;}
IEnumerable<RequestLine> Lines {get; set;}
}
public class RequestLine {
States State {get; set;}
Request Request {get; set;}
IEnumerable<WorkOrder> WorkOrders {get; set;}
}
public class WorkOrder {
States State {get; set;}
RequestLine RequestLine {get; set;}
IEnumerable<WorkOrderAction> Actions {get; set;}
}
public class WorkOrderAction {
States State {get; set;}
WorkOrder WorkOrder {get; set;}
}
所以每条记录都有一个状态,它们都是相互关联的。创建 WorkOrderAction 时,我必须更新 WorkOrder 状态,然后是 RequesTLine 状态,然后是 Request 状态。对于每个 WorkOrderAction 记录,我应该检查其他子记录状态并更新父记录。
我可以使用我不喜欢的数据库触发器来做到这一点。我在应用程序级别使用 Devexpress XAF,因此我也可以在那里编写一些逻辑。但我仍然无法决定哪种方法更好。
链接状态机有一个共同的概念吗?