Project и Entity¶
Эти два объекта отвечают на вопрос «что мы принимаем и для кого?».
Project¶
Project — контейнер под один кейс приёма данных. Он объединяет всё нужное для приёма и обработки класса поставок:
- Entity, задающие целевую форму (назначаются по роли),
- DataContract, против которых поставщики присылают данные,
- Transformer, мапящие контракты на entity,
- проектные бизнес-правила и каталоги,
- формат экспорта,
- Data Providers с доступом.
Project также несёт операционные настройки — режим одобрения (auto, одинарное или двойное одобрение) и как могут создаваться сессии (вашей организацией, поставщиками или и так и так).
Entity¶
Entity — целевая схема, таблица, в которую попадают нормализованные данные. Она объявляет колонки и их типы и держит правила валидации построчного уровня.
Entity двухуровневые:
- Org-level entity (
project_id= null) переиспользуются между проектами. - Project-scoped entity живут в одном проекте. Project-scoped entity переопределяет привязанную org-level entity того же имени.
Внутри проекта entity привязываются через join-таблицу, которая назначает каждой роль (уникальную в проекте), чтобы трансформер и формат экспорта знали, какая entity есть какая.
Почему они разделены¶
Project — организующая единица; Entity — контракт данных вашего выхода. Разделение позволяет одной entity обслуживать много проектов, а проекту — составлять несколько entity (для многофайловых поставок, которые должны сходиться друг с другом).
Связанное¶
- DataContract и Revisions — соглашение со стороны поставщика
- Transformer — мост между ними
- Бизнес-правила
- Quickstart Владельца проекта