Перейти к содержанию

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 (для многофайловых поставок, которые должны сходиться друг с другом).

Связанное