Process 流程流以DDD方式创建新订单条目

Process 流程流以DDD方式创建新订单条目,process,domain-driven-design,creation,Process,Domain Driven Design,Creation,我第一次探索领域驱动的设计,并在脑海中留下了一些我想讨论的问题。其中之一是 我正在设计一个用于订单维护的web应用程序。当用户创建新订单时,系统将打开新订单输入屏幕。它将生成一个应用程序编号和一些与订单限制相关的预配置信息(来自数据库),用户必须针对正在创建的订单选择这些信息 现在我想问的问题是。。。。 一,。如何使用生成的应用程序编号和从DDD stand point数据库中提取的一些信息来生成这个新订单输入屏幕? 二,。我是否必须使用OrderFactory来创建新订单(填充了应用程序和限制

我第一次探索领域驱动的设计,并在脑海中留下了一些我想讨论的问题。其中之一是

我正在设计一个用于订单维护的web应用程序。当用户创建新订单时,系统将打开新订单输入屏幕。它将生成一个应用程序编号和一些与订单限制相关的预配置信息(来自数据库),用户必须针对正在创建的订单选择这些信息

现在我想问的问题是。。。。 一,。如何使用生成的应用程序编号和从DDD stand point数据库中提取的一些信息来生成这个新订单输入屏幕? 二,。我是否必须使用OrderFactory来创建新订单(填充了应用程序和限制),然后将其转换为DTO并发送到表示层?
三,。在填写必要的详细信息后,当用户提交订单时,应该遵循什么流程来保持订单?假设表示层按顺序向服务层发送数据,然后服务层应该做什么?

DDD是关于捕获用户意图的

1) 用户为什么要创建order--Command

2) 用户创建订单后应该发生什么。这对域模型意味着什么——来自域的事件


请查看CQRS模式以了解更多信息,DDD是关于捕获用户意图的

1) 用户为什么要创建order--Command

2) 用户创建订单后应该发生什么。这对域模型意味着什么——来自域的事件


请查看CQRS模式以了解更多信息

以下是一个非常小的示例,它可以让您对生命周期有一点了解

请注意,这是一种传统的DDD样式,您可能希望将读模型与写模型(CQR)分离,并使UI基于任务

在表示代码中(控制器)

在服务层(应用层)

public OrderDTO NewOrder()
{
var newOrder=OrderFactory.CreateNew();//创建一个生成id的新订单
返回_mapper.Convert(newOrder);//为新订单构造OrderDTO
}
公共作废提交人(OrderDTO OrderDTO)
{
var order=_mapper.Convert(orderDTO);//从DTO构造订单实体
order.Activate()//调用域中的某些业务逻辑
_orderRepository.Save(order);//在存储库中保存订单
}

以下是一个非常小的示例,可以让您对生命周期有一点了解

请注意,这是一种传统的DDD样式,您可能希望将读模型与写模型(CQR)分离,并使UI基于任务

在表示代码中(控制器)

在服务层(应用层)

public OrderDTO NewOrder()
{
var newOrder=OrderFactory.CreateNew();//创建一个生成id的新订单
返回_mapper.Convert(newOrder);//为新订单构造OrderDTO
}
公共作废提交人(OrderDTO OrderDTO)
{
var order=_mapper.Convert(orderDTO);//从DTO构造订单实体
order.Activate()//调用域中的某些业务逻辑
_orderRepository.Save(order);//在存储库中保存订单
}

有人能指出我可以在哪里找到关于如何操作的信息吗?有人能指出我可以在哪里找到关于如何操作的信息吗?
var newOrder = _orderService.NewOrder(); // return a new DTO containing the generated id.
// Fill the updated info.
_orderService.SubmitOrder(updatedOrder);
public OrderDTO NewOrder()
{
  var newOrder = OrderFactory.CreateNew();     // Create a new order which generate an id
  return _mapper.Convert<OrderDTO>(newOrder);  // Construct OrderDTO for the new order
}

public void SubmitOrder(OrderDTO orderDTO)
{
  var order = _mapper.Convert<Order>(orderDTO); // Construct order entity from DTO
  order.Activate() // Call some business logic in the domain 
  _orderRepository.Save(order); // Save order in repository
}