JavaScript Records API ------------------------- Общее ~~~~~~ В контексте серверного JavaScript для работы с Records API добавлен сервис Records, который доступен в глобальном контексте. Класс сервиса: ru.citeck.ecos.records.script.RepoScriptRecordsService В сервисе предусмотрены следующие методы: +-------------------------------------+-------------------+-----------------------------------------------------+ | Возвращаемое значение | Название метода | Аргументы (\* - обязательный) | +=====================================+===================+=====================================================+ | Any (в зависимости от attributes) | getAtts | record\*: RecordRef, | | | | attributes\*: RecordAttributes | +-------------------------------------+-------------------+-----------------------------------------------------+ | Record | get | record\*: RecordRef | +-------------------------------------+-------------------+-----------------------------------------------------+ | QueryRes | query | query\*: RecsQuery, | | | | attributes: RecordAttributes | +-------------------------------------+-------------------+-----------------------------------------------------+ Типы: * **RecordRef** - ссылка на запись. Допустимые значения: NodeRef, RecordRef, ScriptNode, String; * **Record** - инстанс записи, у которой можно запросить атрибуты или записать туда атрибуты; * **QueryRes** - результат поиска; * **RecsQuery** - запрос на поиск записей; * **RecordAttributes** - атрибуты для получения. Допустимо передавать String или String[] или Map. Возможные варианты: 1. Если мы передаем string, то получаем обычное значение (строка, число и тд.). 2. Если мы передаем массив ["aa", "bb"], то это эквивалентно объекту (Map) {\"aa\":\"aa\",\"bb\":\"cc\"} 3. Если мы передаем объект (Map), то в результате получим тот же объект, но вместо значений исходного объекта будут значения атрибутов. Пример: Пример:: {"disp": "cm:title"} -> {"disp": "Договор №2"} * getAtts - получить атрибуты по заранее известной записи или записям (допускается массив); * get - получить инстанс записи, с которым можно проводить операции чтения/записи атрибутов; * query - выполнить поисковый запрос для получения записей. Описание Record: +-------------------------------------+-------------------+--------------------------------+ | Возвращаемое значение | Название метода | Аргументы (\* - обязательный) | +=====================================+===================+================================+ | RecordRef | getRef | \- | +-------------------------------------+-------------------+--------------------------------+ | String | getLocalId | \- | +-------------------------------------+-------------------+--------------------------------+ | Any (в зависимости от attributes) | load | attributes\*: RecordAttributes | +-------------------------------------+-------------------+--------------------------------+ | \- | att | name\*: String, | | | | value\*: Any | +-------------------------------------+-------------------+--------------------------------+ | Record | save | \- | +-------------------------------------+-------------------+--------------------------------+ * getRef - получить RecordRef записи; * getLocalId - получить локальный идентификатор записи; * load - загрузить атрибуты из записи. Описание аргумента RecordAttributes см выше; * att - установить значение некоторого атрибута в записи. Без вызова save ничего с реальной записью не происходит; * save - сохранить изменения, которые сделаны с записью через метод att. Методы att и save доступны с версии ecos-community-core 4.1.0 Примеры ~~~~~~~ Поиск записей:: var result = Records.query({ sourceId: '', query: 'TYPE:"cm:person"', language: 'fts-alfresco' }, ['cm:userName', 'cm:firstName']).records; Загрузка атрибутов записи:: var result = Records.getAtts(['people@admin', 'people@fet'], {'aa': 'cm:userName'}); --- var result = Records.get('people@admin').load(['cm:userName', 'cm:firstName']) ; --- var result = Records.get('people@admin').load('cm:firstName'); Изменение записи:: var rec = Records.get('workspace://SpacesStore/c34da292-fa35-4593-a08b-0e3a2c675db7'); rec.att('idocs:note', 'Some Value'); rec.att('ecos:documentAmount', 123); rec.save();