В этом примере приложения демонстрируется простая система выполнения заказов, разбитая на несколько независимых компонентов (например, микросервисов ).
Репозиторий содержит код для нескольких вариантов реализации, что позволяет широкой аудитории понять код и сравнить альтернативы. В таблице ниже перечислены эти альтернативы.
В примере учитываются знания, полученные в результате проектирования на основе доменов (DDD) , архитектуры, управляемой событиями (EDA) и микросервисов (µS), и он предназначен для того, чтобы предоставить вам практический доступ к этим темам.
Примечание. Код был написан для объяснения. Следовательно, я предпочитал упрощенный код или копирование и вставку вместо готового к использованию кода с универсальными решениями. Не принимайте во внимание лучшие практики стиля кодирования! Он специально написан так, чтобы его было легко объяснить .
Дополнительную информацию об этих концепциях можно найти в книге «Практическая автоматизация процессов», написанной О'Рейли.
Поточная розничная торговля моделирует очень простую систему выполнения заказов:
Самым фундаментальным выбором является выбор механизма связи :
После механизма связи следующим выбором является механизм рабочего процесса :
и язык программирования :
Плавная розничная торговля имитирует очень простую систему выполнения заказов. Бизнес-логика разделена на сервисы, показанные выше (показаны в виде контекстной карты).
Некоторые услуги носят долгосрочный характер — например: платежный сервис просит клиентов обновить кредитные карты с истекшим сроком действия. Механизм рабочего процесса используется для сохранения и контроля этих длительных взаимодействий.
Обратите внимание, что конечный автомат ( или в данном случае механизм рабочего процесса ) — это библиотека, используемая в одном сервисе. Если разным службам нужен механизм рабочего процесса, они могут использовать любой механизм, который захотят. Таким образом, это самостоятельное решение команды, хотят ли они использовать фреймворк и какой: