Инструменты
Инструментами в скриптах служат следующие блоки:
- Разгруппировать массив
- Синхронизатор
- Вернуть данные
- Выполнить скрипт
- Фильтр
- Выполнить инструкцию
- Ожидать событие
Разгруппировать массив
Блок разбирает массив на пакеты данных. Следующие блоки выполняются столько раз, сколько элементов внутри массива.
Служит для облегчения работы с массивами и позволяет использовать элементы массивов так, как если бы они были переменными. У блока одно поле для заполнения — массив (выбор из списка полученных данных на основе предыдущих блоков).
Пример:
- В блоке в поле Массив на панели маппинга выбираем массив и нажимаем Тестировать. Данные массива отображаются в квадратных скобках.
- На выходе получаем разгруппированные данные.
Синхронизатор
Блок позволяет разделить скрипт на составные части, его составляющие не имеют доступа к данным друг друга. Он ждет окончания выполнения блоков столько раз, сколько необходимо при сборе данных до него, и запускает следующие один раз для расчета. Это позволяет сократить количество выполнений скрипта, а также поместить действия в один скрипт вместо нескольких.
Вернуть данные
Блок Вернуть данные возвращает данные в источник запроса. Работает с триггерами Ручной запуск и Новое событие из пакета Вебхук.
Блок предназначен для получения данных из выполненных скриптов, запущенных вручную или с помощью Вебхука.
Параметры блока:
- Формат запроса (JSON/текст)
- Возвращаемые данные
При текстовом формате запроса возвращаемые данные указываются вручную или с помощью визуального маппинга. При JSON-формате запроса ключ необходимо ввести вручную, значение ключа можно указать вручную или маппингом.
При синхронном режиме работы блока Новое событие из пакета Вебхук статус и данные, указанные в блоке Вернуть данные, при их наличии возвращаются сразу после выполнения скрипта.
Чтобы получить возвращаемые данные (при их наличии) при асинхронном режиме работы блока Новое событие из пакета Вебхук, необходимо дождаться выполнения блока Вернуть данные и выполнить в инструменте GraphiQL указанный ниже GraphQL-запрос.
{
automation{
script{
execution_result(uuid:"5053bb30-3eed-469c-a60a-7b554198ceee"){
return_data
}
}
}
}
Где:
execution_result
— идентификатор вебхука. Для получения идентификатора необходимо отправить запрос на адрес вебхукаreturn_data
— возвращаемые данные, указанные в параметрах блока Вернуть данные
Чтобы получить статусы при асинхронном режиме работы блока Новое событие из пакета Вебхук, необходимо выполнить в инструменте GraphiQL указанный ниже GraphQL-запрос.
{
automation{
script{
execution_result(uuid:"5053bb30-3eed-469c-a60a-7b554198ceee"){
status
}
}
}
}
Где:
execution_result
— идентификатор вебхука. Для получения идентификатора необходимо отправить запрос на адрес вебхука
Если в скрипт добавлено несколько блоков Вернуть данные, то срабатывает и возвращает данные в источник только первый из этих блоков.
Если скрипт с блоком Вернуть данные прекращает работу с ошибкой или останавливается, в источник возвращается информация о статусе выполнения.
Этот блок завершает выполнение скрипта, поэтому блоки после него выполняться не будут.
Выполнить скрипт
Блок запускает выполнение выбранного скрипта.
Параметры:
- Скрипт
- Ожидаемые поля (если указаны в выбранном скрипте)
Родительский скрипт — это скрипт, который содержит блок Выполнить скрипт, запускающий выполнение дочернего скрипта. После запуска блок ожидает, когда дочерний скрипт полностью выполнится и вернет данные в родительский скрипт.
- Дочерний скрипт должен завершаться блоком Вернуть данные.
- Запустить можно только те скрипты, которые находятся в том же пространстве, что и родительский скрипт.
- При тестировании блока или всего родительского скрипта запускается черновик дочернего скрипта. При активации родительского скрипта запускается опубликованная версия дочернего скрипта.
При использовании блока рекомендуем:
- Не создавать зацикленные сценарии, в которых один блок Выполнить скрипт вызывает дочерний скрипт, содержащий аналогичный блок с вызовом родительского скрипта
- Вручную останавливать выполнение ресурсоемких дочерних скриптов, если возникает необходимость их остановить, поскольку остановка родительского скрипта в этом случае не прервёт выполнение дочернего скрипта
Блок возвращает информацию о выполнении дочернего скрипта:
- Если дочерний скрипт выполнился успешно, но не возвращает данные, родительский скрипт получает только информацию о том, что дочерний скрипт выполнен
- Если в дочернем скрипте возникает ошибка, родительский скрипт получает информацию об ошибке и останавливается
В качестве примера рассмотрим два скрипта:
- Родительский скрипт «Отправить отчет», который отправляет ответственному лицу отчет с информацией о разнице между фактическими и плановыми продажами
- Дочерний скрипт «Подсчитать отклонения», который рассчитывает отклонения фактических продаж от плановых по каждому магазину. Подсчет отклонений выделен в отдельный скрипт, чтобы к нему могли обращаться другие скрипты, а также для запуска из дашборда для отображения отклонений
Настроим эти скрипты:
- Добавим в дочерний скрипт для подсчета отклонения в продажах блок Вернуть данные.
- Настроим блок так, чтобы он возвращал идентификатор магазина и процент отклонения для тех магазинов, в которых отклонение от плановых продаж больше 20%.
- Опубликуем дочерний скрипт.
- В родительский скрипт добавим блок Выполнить скрипт.
- В параметрах блока укажем дочерний скрипт.
- Добавим блок Сформировать csv для формирования отчета.
- В параметрах блока укажем нужные колонки и подставим в них данные с помощью маппинга. Также активируем переключатель Добавлять заголовки колонок
- Протестируем блок.
- Добавим в родительский скрипт блок Отправить письмо.
- В параметрах блока укажем получателя, тему письма и сообщение.
- Добавим в письмо отчет в виде вложения. Для этого подставим сформированный CSV-файл в соответствующее поле с помощью маппинга.
- Опубликуем родительский скрипт и активируем его.
- Видим, что скрипты выполнены: данные из дочернего скрипта переданы в родительский, отчет сформирован и отправлен.
Фильтр
Блок позволяет настроить логику скрипта и направить его по определенной ветке после проверки заданного условия.
Параметры:
- Поля для сравнения
- Условие
Данный блок не возвращает данные, а только фильтрует их.
Чтобы настроить скрипт:
- Укажите объекты сравнения в Поле.
- Задайте условие фильтрации через выпадающий список.
- Протестируйте блок с помощью кнопки Тестировать.
Чтобы добавить несколько условий для одной группы объектов, используйте кнопку И.
Чтобы создать дополнительную группу фильтров, используйте кнопку Или.
Чтобы удалить группу фильтров, нажмите кнопку Удалить.
Вы можете направить скрипт по нескольким веткам:
- Чтобы добавить несколько условий и направить скрипт по разным веткам в зависимости от соответствия данных заданным условиям, добавьте в скрипт несколько блоков Фильтр
- Чтобы направить по разным веткам скрипт с данными, полученными после проверки одного условия, сделайте нужное количество ответвлений от блока Фильтр
Для разных типов данных применимы разные условия:
Типы данных | Доступные условия |
---|---|
Строка | - Начинается с - Не начинается с - Оканчивается на - Не оканчивается на |
Строка, массив | - Содержит - Не содержит |
Все типы данных | - Существует - Не существует - Равно - Не равно |
Строка, число, дата, дата и время | - Больше - Меньше - Больше или равно - Меньше или равно |
Дата, дата и время | - Последнее время |
Логический тип | - Истина - Не истина |
Строка, дата, дата и время, число, массив чисел | - Пустое - Не пустое |
Если выбранные типы условий невозможно сравнить, возникает ошибка.
Пример:
- Указываем объекты сравнения и выбираем условие фильтрации в выпадающем списке.
- Запускаем тестирование с помощью кнопки Тестировать. Все дальнейшие действия будут осуществляться с данными, полученными в результате фильтрации.
- Добавляем блоки для дальнейшей работы с отфильтрованными данными.
Выполнить инструкцию
Блок получает инструкцию, которая может быть сформирована вручную или через блок Отправить сообщение пакета Нейросеть, и выполняет действия с использованием функций следующих блоков:
- Добавить строки
- Отправить письмо
- Отправить запрос
- Выполнить скрипт
- Отправить сообщение
- Вернуть данные
В параметрах блока укажите инструкцию в формате JSON вручную или с помощью маппинга. Также поле Инструкция может принимать строковое значение break
. Строка break
— это команда, которая завершает выполнение блока Выполнить инструкцию.
Инструкция передается в виде JSON со следующими полями:
Action
— тип блока, функции которого нужно выполнитьFields
— структура полей для типа выполняемого блока. Необязательные поля можно опуститьIndex
— порядковый номер выполнения, который должен увеличиваться нейросетью
Принцип работы блока:
- Блок анализирует входные данные. Допустимые значения:
- JSON
- Строка
break
(регистр не имеет значения)
- Если на вход поступает строка
break
, блок завершает выполнение с пустым результатом. Выполнение скрипта останавливается после этого блока - Если на вход поступает JSON, выполняется проверка типа блока, полей и порядкового номера выполнения
- Если проверка успешна, блок выполняет функцию указанного типа блока, используя переданные параметры и контекст выполнения
Максимальное количество запусков блока Выполнить инструкцию в одном цикле — 30.
За одно выполнение блок Выполнить инструкцию может выполнять функции только одного типа блока. Попытка обработать несколько пакетов данных или вызвать функций разных блоков в рамках одного запуска может привести к сбою из-за нарушения согласованности данных.
Примеры инструкций представлены ниже.
Выполнить скрипт:
{
"action": "execute_script",
"key": "",
"": "",
"": ""
}
Отправить сообщение:
{
"action": "query",
"query": "",
"model": "",
"temperature":
}
Отправить HTTP-запрос:
{
"action": "http_request",
"url": "",
"method": "",
"body": ""
}
Отправить письмо:
{
"action": "send_email",
"to": "",
"subject": "",
"text": "",
"format": ""
}
Добавить строки в таблицу:
{
"action": "insert_rows",
"table": "",
"rows": [
{
"": "",
"": ""
},
{
"": "",
"": ""
}
]
}
Вернуть данные:
{
"action": "return",
"value": "",
"format": ""
}
Пример:
Рассмотрим, как настроить скрипт с зацикливанием для автоматического выполнения инструкций. В этом сценарии блок Новое событие из пакета Вебхук используется в качестве триггера, а блок Отправить запрос замыкает цикл, отправляя выходные данные обратно на Вебхук.
- Добавим блок Новое событие пакета Вебхук в качестве триггера. Блок принимает входные данные (промпт) и передает их дальше.
- Добавим блок Отправить сообщение пакета Нейросеть.
- С помощью маппинга передадим в блок промпт, полученный от блока Новое событие. Нейросеть анализирует поступившие данные, определяет, какой блок следует запустить и формирует инструкцию на основе информации из промпта.
- Добавим блок Выполнить инструкцию пакета Цифровой сотрудник.
- С помощью маппинга передадим в параметры блока выходные данные блока Отправить сообщение. Блок выполняет сформированную нейросетью инструкцию.
- Добавим блок Отправить запрос пакета HTTP.
- С помощью маппинга передадим в блок выходные данные блока Выполнить инструкцию. Блок Отправить запрос отправляет полученные данные обратно на Вебхук с помощью HTTP-запроса.
- Цикл продолжается до тех пор, пока нейросеть не вернет в блок Выполнить инструкцию команду
break
. В этот момент выполнение скрипта завершается.
Ожидать событие
Эти функции доступны в бета-версии. Попробуйте их в работе и поделитесь своим мнением — обратная связь помогает нам развивать продукт.
Блок Ожидать событие позволяет приостановить выполнение скрипта и ждать наступления указанного события.
Блок работает только в связке с триггером Новое событие из пакета Обработка событий, поскольку он получает из триггера данные о том, для какого экземпляра процесса ждать событие.
Настройка блока Ожидать событие
- Для работы блока в модели данных должен быть настроен процесс.
- В последующие блоки скрипта невозможно передавать с помощью маппинга данные из блоков, расположенных в скрипте до блока Ожидать события.
- Протестировать блок отдельно невозможно, так как он срабатывает только с триггером Новое событие. Чтобы проверить его работу, запустите тестирование всего скрипта целиком.
После выбора процесса в блоке отображаются следующие параметры:
- Процесс
- Ожидаемые события
- Длительность ожидания
- Объект для проверки события
- Расписание запуска скрипта
Укажите процесс, события которого будет отслеживать блок. Если в модели данных нет настроенного процесса, блок будет доступен, но его невозможно будет настроить и запустить.
В поле Ожидаемые события, нажмите Добавить и введите название события или выберите его из списка.
Для события можно настроить фильтр, чтобы учитывать только события, соответствующие определенным условиям. С помощью фильтров можно проверять значения параметров события, использовать расчеты по данным и ограничивать временные рамки. Фильтрация позволяет настроить условия срабатывания скрипта и исключить ненужные события.
При необходимости событие можно удалить, нажав соответствующую кнопку. Вы также можете добавить несколько ожидаемых событий. Для этого нажмите Добавить и выберите событие.
Чтобы задать период ожидания события, активируйте переключатель Длительность ожидания и укажите период ожидания в днях, часах или минутах. Если событие произойдет, выполнение продолжится по ветке Прямое действие. Если событие не произойдет, выполнение продолжится по ветке Действие по тайм-ауту. Более подробная информация о ветках выполнения скрипта после блока представлена в разделе Обработка полученных данных.
Далее добавьте условие для запуска скрипта. Можно задать одно или несколько условий.
Чтобы добавить условие:
- В поле Для объекта, в котором нажмите Добавить и выберите формулу. Вы можете выбрать:
- Готовую формулу Количество выполнений события — сколько раз произошло событие в экземпляре процесса
- Предложенные формулы для расчета значений по данным из модели данных рабочего пространства
- Собственную формулу
- В поле В процессе выберите процесс из модели данных, к которому относится событие.
- В поле Для события выберите событие, по которому будет идти проверка. Для этого введите название события или выберите его из списка событий указанного процесса.
- Задайте условие сравнения значений:
- В интервале
- Равно
- Не равно
- Больше
- Меньше
- Больше или равно
- Меньше или равно
- Пустое значение
- Непустое значение
- Если выбрано условие В интервале, задайте временной промежуток. Для условий Равно, Не равно, Больше, Меньше, Больше или равно, Меньше или равно укажите значение для сравнения.
- Укажите, какие данные необходимо учитывать:
- Все
- За время ожидания события
- Со старта ожидания события
- До появления события
- За определенный промежуток времени — можно задать временной интервал в днях, часах или минутах
Для объекта можно настроить фильтрацию, чтобы ограничить выборку данных. Например, учитывать только события, произошедшие в рабочие дни. Также вы можете задать комментарий для условия с пояснениями настроек.
При необходимости условие можно удалить, нажав соответствующую кнопку.
Также можно добавить дополнительное условие. Для этого нажмите Добавить и повторите шаги по добавлению условия.
Расписание запуска скрипта настраивается аналогично расписанию в блоках-триггерах Новое событие и Планировщик.
Обработка полученных данных
Для обработки полученных данных добавьте в скрипт другие блоки автоматизации. Например, можно записывать выходные данные в таблицу или использовать их для дальнейших действий в системе.
Блок возвращает следующие данные:
- Для ветки Прямое действие:
- Идентификатор экземпляра процесса, для которого ожидалось событие
- Название ожидаемого события
- Время наступления события
- Идентификатор процесса, в котором произошло событие
- Для ветки Действие по тайм-ауту:
- Идентификатор экземпляра процесса, для которого ожидалось событие
- Время истечения тайм-аута
- Идентификатор процесса, в котором ожидалось событие
Скрипт с блоком работает следующим образом:
- Скрипт запускается триггером Новое событие, когда происходит событие.
- Блок Ожидать событие ждет указанное событие для того же экземпляра процесса.
- Если событие наступает в течение заданного времени, выполнение продолжается по ветке Прямое действие.
- Если событие не происходит в течение указанного времени, выполнение продолжается по ветке Действие по тайм-ауту.
Была ли статья полезна?