.. _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