В моем проекте у меня есть рабочий процесс, который работает с несколькими объектами для выполнения бизнес-транзакции. Какое лучшее место для представления логики рабочего процесса? в настоящее время я просто создаю «XXXManager», который отвечает за сотрудничество с объектами сущностей для заключения бизнес-транзакции. Есть ли другие варианты?Управление доменом: где лежит логика рабочего процесса?
ответ
DDD может быть не совсем такой, поэтому я хотел бы взглянуть на архитектурный шаблон Service Layer. Книга Мартина Фаулера «Модели архитектуры предприятия» - хорошая книга, которая объяснит это. Вы можете найти описание шаблона на веб-сайте Фаулера.
Создание систем документооборота может быть сложной перспективой. Считаете ли вы использование Workflow engines?
Если вы правильно поняли, вам нужно будет создать менеджера, который отслеживает различные транзакции в рабочем потоке, связанные с пользователем. Возможно, есть другие способы сделать это, но я всегда использовал двигатели.
Обычно существует объект домена, который должен фактически обрабатывать элемент управления, который ошибочно принимается за «сущность».
Есть ли экземпляр объекта, созданного в результате этого рабочего процесса? Если это так, логика рабочего процесса, вероятно, принадлежит там. Рассмотрим «Порядок» в приведенной ниже модели.
alt text http://img685.imageshack.us/img685/4383/order.png
Одер как существительное и глагол. «Заказ» - это объект, созданный в результате «Заказ». Как и любой хороший класс, он имеет как данные, так и поведение (и я не имею в виду геттеры и сеттеры). Поведение - это динамический процесс, который идет с данными, т. Е. Процесс упорядочения заказов. «Заказ» - контроллер.
Именно поэтому OO была изобретена.
Я бы сказал, что вы поступаете правильно, имея что-то, сотрудничающее с несколькими объектами, чтобы что-то сделать. Важно то, что каждый объект (и каждый сервис) должен иметь single responsibility.
Общесистемный рабочий процесс, о котором вы говорите, является тем, что вы можете рассматривать как часть вашего уровня приложения.
According to Paul Gielens (перефразируемый). Ответ на прикладной уровень заключается в том, чтобы переварить запрошенные в масштабе запросы (сообщения/команды) для достижения определенной общей цели. Он делает это, отправив сообщение в доменные службы для выполнения. Затем он также (необязательно) решает отправить уведомления в службу инфраструктуры.
Но тогда что такое «Сервис» ?! Это перегруженная термин, но один, который хорошо описан (опять же, by Paul Gielens)
Вы также можете прочитать о Onion Architecture для новых идей ...
txn для ссылки на Луну, интересная статья! –
Для больших ответов, я хотел бы добавить "domain events" (ссылка это всего лишь одна возможная реализация), что и сам Эванс стал уделять больше внимания ("increased emphasis on events").
- 1. Управление для представления рабочего процесса
- 2. Управление версиями и утверждение рабочего процесса
- 3. Где находится логика внешнего устройства в проекте, управляемом доменом?
- 4. Функциональное программирование + управление доменом
- 5. Управление доменом (несколько серверов)
- 6. Выполнение рабочего процесса из другого рабочего процесса
- 7. Параметры рабочего процесса пользовательского рабочего процесса Workflow
- 8. Ошибка рабочего процесса «Ошибка проверки рабочего процесса».
- 9. Управление доменом: менеджер и служба
- 10. Соответствие требованиям рабочего процесса
- 11. Управление зависимостью от микросервисов - управление или управление доменом?
- 12. Какова логика этого процесса
- 13. Логика множественного процесса InitScript
- 14. Логика процесса компиляции ocaml
- 15. Управление доменом. Тип типа сущности
- 16. Управление доменом с использованием .htaccess
- 17. Управление доменом - использование CQRS + ES
- 18. Настройка рабочего процесса Sharepoint
- 19. SP2013 Подвеска рабочего процесса
- 20. Управление жизненным циклом рабочего процесса без «службы сохранения»
- 21. Управление версиями рабочего процесса WF4 с использованием WorkflowServiceHost
- 22. Управление загруженными файлами в виде рабочего процесса ситуации
- 23. Изменение владельца рабочего процесса
- 24. Git рабочего процесса для CMS
- 25. Magento: Где хранится логика процесса индексации URL-адреса Url?
- 26. Как написать настраиваемое действие рабочего процесса рабочего процесса TFS?
- 27. Использование рабочего процесса Jenkins 'Mailer' внутри рабочего процесса
- 28. Поиск экземпляра рабочего процесса с этапа рабочего процесса
- 29. Запуск последовательного рабочего процесса из рабочего процесса состояния
- 30. Предоставление расширений рабочего процесса службе рабочего процесса - WF 4.0
Можно сказать, что OO-доменное моделирование - это обнуление глаголов. –