.. _Records_API: Records API ============== **Records API** — интерфейс на уровне системы для доступа и манипуляции данными. Данными являются записи. **Запись (Record)** — сущность с набором атрибутов и идентификатором записи (:ref:`RecordRef `). Данные можно получить: - используя браузер — см. :ref:`использование Records API в браузере ` и :ref:`CRUD операции `; - бэкенд — см. :ref:`взаимодействие на сервере ` и `исходный код kotlin/java движка Records API `_. Общее описание -------------- API, разработанное для организации простого и легко масштабируемого общения между потребителем информации и источником. Источниками данных могут быть БД, REST и др. Преимущества: - Единый API для доступа к данным в системе для всех потребителей (Браузер, Мобильное приложение, Система построения отчетов, Индексирование данных, Различные микросервисы и т.д.); - Поддержка загрузки данных из связанных сущностей. Например, если у нас договор ссылается на доверенность, то, имея идентификатор договора, мы можем получить любой атрибут связанной доверенности; - Оптимальность. Загружаются и вычисляются только те атрибуты, которые нужны потребителю; - Простота в разработке – разработчик источника данных описывает все атрибуты, которые могут запросить потребители вне зависимости от сложности их вычисления. Потребитель в запросе указывает только те атрибуты, в которых он заинтересован; - Простота поддержки - нет версионирования API т.к. мы в любой момент можем добавлять новые атрибуты, не трогая старые; - Тип получаемых данных полностью описывается запросом. Из источника данных мы возвращаем атрибуты с любым типом, а Records API приводит их к нужному для потребителя; - Вычисляемые атрибуты. Возможность добавлять атрибуты, которые не хранятся в БД или любом другом хранилище, а вычисляются на основе существующих; - Поддержка объединения атрибутов из разных источников. Например, можно написать источник данных, который часть атрибутов будет брать из alfresco, а часть из внешней БД объединяя их по идентификатору. .. toctree:: :maxdepth: 2 ECOS_Records/records_intro ECOS_Records/attributes ECOS_Records/RecordsService ECOS_Records/RecordRef ECOS_Records/using_in_browser ECOS_Records/java_kotlin_backend ECOS_Records/records_syntax ECOS_Records/ECOS_Records_examples