Triggers: Difference between revisions

From Memento Database Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 69: Line 69:
|}
|}


== Скрипты ==
==Библиотеки и записи==
Через скрипты можно получить доступ к записям библиотек, к файлам на устройстве, а также выполнять http-запросы. Некоторые функции требуют включения для библиотеки соответствующих разрешений.
===Глобальные Функции===


===Функции работы с библиотеками и записями===
====entry()====
:Получить запись в контексте которой происходит выполнение скрипта. Т.е. если скрипт выполняется на действие Изменение записи, то данная функция возвращает изменяемую запись.
:Функция доступа для всех действий и фаз выполнения, за исключением "Создание записи - открытие формы создания", для данного действия используйте функцию entryDefault.
 
:Результат: Объект Entry, текущая запись.
 
====entryDefault()====
:Получить объект для установки значений по умолчанию для еще не созданной записи. Функция доступна для действия ''Создание записи'' и фазы выполнения ''Открытие формы создания''.
 
:Результат: Объект DefaultEntry.
 
====lib()====
:Получить библиотеку в контексте которой происходит выполнение скрипта.
 
:Результат: Объект Library, текущая библиотека.
 
====libByName(name)====
:Найти библиотеку по имени. В настройках безопасности должно быть установлено разрешение на использование получаемой библиотеки.
 
:Результат: Объект Library, найденная библиотека.
 
 
===Объект Library===
Через этот объект осуществляется доступ к записям библиотеки. Можно работать с текущей библиотекой - ''lib()'' или с любой другой библиотекой в базе данных - ''libByName()''. Помимо функций получения записей данный объект предоставляет возможность создания новой записи.
====Методы====
=====entries()=====
:Получить все записи библиотеки.
:Результат: Array[Entry] Массив записей. Записи отсортированы по времени их создания - от новых к старым.
 
===Примеры===

Revision as of 06:32, 10 September 2016

« Page as of 2016-09-09, editions Mobile 4.0.0, Desktop 1.0.5 »

Триггер это скрипт, который запускается при определенных действиях или событиях. В качестве языка для написания скриптов используется JavaScript. Результатом выполнения скрипта может быть изменение или создание записи, выполнение http-запроса, создание файла, валидация данных и другие действия.

Создание триггера

Каждая библиотека может иметь несколько триггеров, чтобы открыть список триггеров зайдите в библиотеку, откройте меню и выберите пункт Триггеры.

Для создания триггера откройте список триггеров библиотеки и нажмите кнопку +. После этого необходимо выбрать момент запуска триггера и написать скрипт реализующий ваши потребности.

Момент запуска триггера

Момент запуска триггера определяется двумя параметрами:

Действие
это какая-либо выполняемая пользователем операция с записями.
Фаза действия
определяет более точный момент срабатывания триггера. Для каждого типа Действия доступны свои фазы.

Выполнение скрипта

Фаза в которую запускается триггер также определяет то, как будет выполняться скрипт - синхронно или асинхронно.

Синхронное выполнение скрипта
приложение приостановить взаимодействие с пользователем на время выполнения скрипта. Не рекомендуется в таких скриптах выполнять длительные операции.
Асинхронное выполнение скрипта
скрипт запускается в фоновом режиме, приложение не приостанавливает взаимодействие с пользователем. Обычно асинхронно выполняются скрипты в последних фазах действия.

Безопасность

Некоторые функции доступные из скриптов (операции с файлами, выполнение http-запросов, доступ к другим библиотекам) в целях безопасности требуют соответствующих разрешений. Эти разрешения пользователь должен установить вручную для каждой библиотеки отдельно.

Чтобы открыть диалог установки разрешений для скриптов - откройте список триггеров библиотеки и нажмите кнопку Щит на тулбаре. Установка разрешений должна выполняться на каждом устройстве отдельно. Выбранные разрешения не синхронизируются между устройствами.

Разрешения для скриптов

Libraries
Определяет какие библиотеки помимо родной будут доступны скрипту. Вы можете предоставить доступ ко всем библиотекам или выбрать определенные библиотеки. Данное разрешение требуется для функции libByName.
Read files
Предоставляет скрипту доступ на чтение файлов с запоминающего устройства. Данное разрешение требуется для функции file.
Write files
Предоставляет скрипту доступ на создание и изменение файлов в запоминающем устройстве. Данное разрешение требуется для функции file.
Network
Предоставляет скрипту право выполнять http запросы. Данное разрешение требуется для функции http.

Действия

Действие Фаза Выполнение
Создание записи открытие формы создания синхронное
перед сохранением записи синхронное
после сохранения записи асинхронное
Изменение записи открытие формы изменения записи синхронное
перед сохранением записи синхронное
после сохранения записи асинхронное
Удаление записи перед удалением записи синхронное
после удаления записи асинхронное
Открытие карточки записи перед отображением окна синхронное
после отображения окна асинхронное
Добавление записи в избранное перед операцией синхронное
после операции асинхронное
Удаление записи из избранного перед операцией синхронное
после операции асинхронное

Библиотеки и записи

Глобальные Функции

entry()

Получить запись в контексте которой происходит выполнение скрипта. Т.е. если скрипт выполняется на действие Изменение записи, то данная функция возвращает изменяемую запись.
Функция доступа для всех действий и фаз выполнения, за исключением "Создание записи - открытие формы создания", для данного действия используйте функцию entryDefault.
Результат: Объект Entry, текущая запись.

entryDefault()

Получить объект для установки значений по умолчанию для еще не созданной записи. Функция доступна для действия Создание записи и фазы выполнения Открытие формы создания.
Результат: Объект DefaultEntry.

lib()

Получить библиотеку в контексте которой происходит выполнение скрипта.
Результат: Объект Library, текущая библиотека.

libByName(name)

Найти библиотеку по имени. В настройках безопасности должно быть установлено разрешение на использование получаемой библиотеки.
Результат: Объект Library, найденная библиотека.


Объект Library

Через этот объект осуществляется доступ к записям библиотеки. Можно работать с текущей библиотекой - lib() или с любой другой библиотекой в базе данных - libByName(). Помимо функций получения записей данный объект предоставляет возможность создания новой записи.

Методы

entries()
Получить все записи библиотеки.
Результат: Array[Entry] Массив записей. Записи отсортированы по времени их создания - от новых к старым.

Примеры