Тема
Триггеры
Триггер - правило для автоматического выполнения действий в ответ на события.
Описание
Триггер, как часть конфигурации проекта, содержит описание:
- какое действие выполнить
- что инициирует выполнение
Срабатывание триггера может быть инициировано таймером или внутренним событием проекта.
Формат
Описание триггера имеет четко определенный формат.
json
{
"id": "%уникальный идентификатор триггера%",
"type": "%тип триггера%",
"action": "%действие%",
"options": "%опции%",
"disabled": "%флаг отключения%"
}Поддерживаемые типы триггеров
| Тип | Описание |
|---|---|
timeout | Выполняет действие через заданное время. |
interval | Выполняет действие через заданный интервал. |
event | Выполняет действие при наступлении внутреннего события. |
TIP
Подробнее о конфигурации триггеров см. в справочнике.
Пример
Вернемся к нашему примеру с браузером и текстовым файлом.
Предположим, что нам нужно открыть текстовый файл через 5 секунд после запуска проекта.
В этом случае мы можем использовать триггер типа timeout, который будет запускать задачу open-file.
WARNING
Т.к. задача open-file должна быть запущена не сразу, а с помощью триггера, необходимо предотвратить ее самостоятельный запуск. Для этого задаем значение свойства mode в deferred.
json
{
"id": "some-project",
"tasks": [
{
"id": "open-browser",
"options": {
"command": "firefox",
"arguments": ["https://example.com"]
}
},
{
"id": "open-file",
"mode": "deferred",
"options": {
"command": "open",
"arguments": ["/tmp/file.txt"]
}
}
],
"triggers": [
{
"id": "open-file-after-5-seconds",
"type": "timeout",
"action": {
"type": "start-task",
"options": {
"taskId": "open-file"
}
},
"options": {
"timeout": 5000
}
}
]
}