Python EDA & DDD utilites
Project description
Domain-driven Design Misc
Пакет предоставляет базовые классы и утилиты для реализации проекта с событийно-ориентированной архитектурой с использованием набора принципов DDD.
Классы
Классы объектов
BaseAggregate
- базовый класс для создания агрегата доменаDDDEvent
- базовый класс для реализации событий доменаDDDCommand
- базовый класс для реализации команд доменаDDDStructure
- базовый класс для создания структур данных при описании команд и событий
Атрибуты классов DDDEvent
, DDDCommand
и DDDSturcture
задаются с использованием Field
-классов из пакета dddmisc.fields
get_message_class
- метод получения класса события или команды по его идентификатору из общего регистраget_error_class
- метод получения класса исключения домена из общего регистра
Класс репозиторий
Репозиторий уровень абстракции отвечающий за сохранение и воссоздание состояния агрегата.
В пакете репозиторий представлен 2-мя абстрактными классами для синхронной и асинхронной реализации:
AbstractSyncRepository
- абстрактный класс для реализации синхронного репозиторияAbstractAsyncRepository
- абстрактный класс для реализации асинхронного репозитория
а также в пакете реализованы 2 декоратора dddmisc.decorators.getter
и dddmisc.decorators.agetter
для
декорирования методов репозитория для получения агрегата из базы данных.
UnitOfWork
Unit of work уровень абстракции отвечающий за обеспечения консистентности при сохранении состояния агрегата. Unit of work является надстройкой над репозиторием.
В пакете UnitOfWork представлен 2-мя абстрактными классами для синхронной и асинхронной реализации:
AbstractSyncUnitOfWork
- абстрактный класс для реализации синхронного UnitOfWorkAbstractAsyncUnitOfWork
- абстрактный класс для реализации асинхронного UnitOfWork
MessageBus
В целях абстрагирования и унификации процесса доставки событий и команд до их обработчиков используется внутрення шина сообщений. Дополнительно внутренняя шина сообщений обеспечивает итеративный процесс доставки событий, порожденных агрегатом в процессе исполнения обработчиков на предыдущей итерации.
В пакете внутрення шина сообщений представлена классами:
AsyncMessageBus
- реализации шины сообщений для использования в асинхронном кодеSyncMessageBus
- реализации шины сообщений для использования в синхронном коде
Changelog
0.6.1
future:
- add
filter
method forgetter
andagetter
decorators
0.6.0
future:
- Remove external messagebus from package.
- Remove DDDResponse from package. Now messagebus handle method return object returned from handler.
- Refactoring messagebus for set specified uow, repository and engine for handler.
- Add decorators for get methods of repository. Removed abstract method
_get_from_storage
from repository.
0.5.4
future:
- Execute events from commit aggregate changes when handler failed after commit
- Parallel exec handlers subscribed to once event in sync messagebus
0.5.3
bugfix:
- Make parallel execute event handlers in messagebus
- Change messagebus log format
0.5.2
bugfix:
- Fix error with nullable and default field attributes
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.