Поток процесса Создание новой записи заказа Путь DDD - PullRequest
1 голос
/ 13 января 2011

Я впервые изучаю Domain Driven Design и задаю несколько вопросов, которые хотел бы обсудить. Одним из них является ...

Я разрабатываю веб-приложение для обслуживания заказов. Когда пользователь создает новый Заказ, система открывает экран ввода нового заказа. Он сгенерирует номер приложения и некоторую предварительно сконфигурированную информацию, относящуюся к ограничениям заказа (из базы данных), которую пользователь должен выбрать для конкретного создаваемого заказа.

Теперь вопрос, который я имею в виду ....

1. Как создать этот НОВЫЙ экран ввода заказа с созданным номером приложения и информацией, полученной из базы данных с точки зрения DDD?

2. Нужно ли мне использовать OrderFactory для создания НОВОГО ордера (с заполненным приложением # и ограничениями), а затем перевести его в DTO и отправить на уровень презентации?

3. После заполнения необходимых данных, когда пользователь отправляет Заказ, каким должен быть процесс, чтобы сохранить его? скажем, уровень представления отправляет OrderDTO на уровень обслуживания, а затем уровень обслуживания должен делать что?

Ответы [ 2 ]

1 голос
/ 23 октября 2011

Ниже приведен очень маленький пример, который может дать вам небольшое представление о жизненном цикле.

Обратите внимание, что это своего рода традиционный стиль DDD, вы можете отделить модель чтения от модели записи (CQRS) и создать задачу пользовательского интерфейса.

В коде презентации (контроллер)

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
}
0 голосов
/ 21 октября 2011

DDD это все о захвате намерений пользователя. Так что задайте больше вопросов, таких как

1) Почему пользователь захотел создать заказ - Команда

2) что должно произойти после того, каксоздал заказ.что это значит для модели домена - События, выходящие из домена

, пожалуйста, посмотрите шаблон CQRS для получения дополнительной информации

...