AZykov (обсуждение | вклад) Нет описания правки |
AZykov (обсуждение | вклад) Нет описания правки |
||
Строка 417: | Строка 417: | ||
|} | |} | ||
=== Блок кода JavaScript === | |||
[[Файл:Компонент Блок кода JavaScript.png|центр|безрамки|565x565пкс]] | |||
Строка 474: | Строка 474: | ||
|} | |} | ||
=== Метка для перехода === | |||
[[Файл:Компонент Метка для перехода.png|центр|безрамки|517x517пкс]] | |||
Метка, с которой может быть запущена логика сценария с помощью компонентов "Переход на метку". Аналог конструкции GoTo, либо отдельных "методов" в рамках сценария. | |||
Использование данного компонента способно упростить сложные сценарии, и избавить их от необходимости копирования групп компонентов, растягивания длинных ветвей перехода, закручивания графического представления сценариев. А также позволяет инкапсулировать логику в одном сценарии (не вызывать вложенные сценарии), и получить возможность управлять более сложной разветвленной логикой. | |||
{| class="wikitable" | |||
|+Свойства компонента | |||
!Свойство | |||
!Описание | |||
|- | |||
|<code>Метка</code> | |||
|Аргумент, поставляющий значение метки для адресации из компонентов передачи управления. | |||
|} | |||
=== Переход на метку без возврата === | |||
[[Файл:Компонент Переход на метку без возврата.png|центр|безрамки|490x490пкс]] | |||
Передает управление обособленной ветке в текущем сценарии, начиная с компонента Метка. Конкретный компонент выбирается на основании динамического совпадения значения свойств `Метка` у него и у текущего компонента. Свойство может быть задана константой и аргументом. Не предполагает возврата управления в точку вызова. | |||
Позволяет тем самым разбивать сценарий на регионы с простыми алгоритмами и избавляет от необходимости копировать группы компонентов, вызывать вложенные сценарии, растягивать длинные ветки переходов. | |||
Для параметризации непосредственно в компоненте может быть задано значение произвольной переменной. В качестве присваемого значения выступает аргумент. Используется механизм преобразования типов, если типы значения аргумента и переменной не совпадают. Допускает присвоение значений нескольким переменным. | |||
'''После перехода на метку данным компонентом, после достижения компонента "Стоп", выполнение сценария будет завершено.''' | |||
{| class="wikitable" | |||
|+Свойства компонента | |||
!Свойство | |||
!Описание | |||
|- | |||
|<code>Метка</code> | |||
|Аргумент, на основании значения которого производится поиск метки (компонента с таким же значением). | |||
|- | |||
|<code>Переменная</code> | |||
|Переменная - назначение для операции присвоения. | |||
|- | |||
|<code>Значение</code> | |||
|Аргумент, поставляющий значение для операции присвоения. | |||
|} | |||
=== Переход на метку с возвратом === | |||
[[Файл:Компонент Переход на метку с возвратом.png|центр|безрамки|541x541пкс]] | |||
Данный компонент реализует ту же логику, что и предыдущий, однако позволяет вернуться к исполнению изначальной "ветки" сценария с помощью компонента Возврат в точку вызова.э | |||
Передает управление обособленной ветке в текущем сценарии, начиная с компонента Метка. Конкретный компонент выбирается на основании динамического совпадения значения свойств `Метка` у него и у текущего компонента. Свойство может быть задана константой и аргументом. Предполагает возврат управления в точку вызова. Для этой цели интерпретатор сценария сохраняет информацию о вызове в стек и использует его при работе компонента Возврат управления. Возврат всегда производится в крайнюю точку вызова в стеке, таким образом для корректной работы сценария необходимо обеспечивать соответствие точек вызова и возвратов управления. | |||
Позволяет тем самым разбивать сценарий на регионы с простыми алгоритмами и избавляет от необходимости копировать группы компонентов, вызывать вложенные сценарии, растягивать длинные ветки переходов. | |||
Для параметризации непосредственно в компоненте может быть задано значение произвольной переменной. В качестве присваемого значения выступает аргумент. Используется механизм преобразования типов, если типы значения аргумента и переменной не совпадают. Допускает присвоение значений нескольким переменным. | |||
=== Возврат в точку вызова === | |||
[[Файл:Компонент Возврат в точку вызова.png|центр|безрамки|565x565пкс]] | |||
Осуществляет возврат управления в крайнюю точку вызова компонентом Переход на метку с возвратом. | |||
=== Парсер === | |||
[[Файл:Компонент Парсер.png|центр|безрамки|699x699пкс]] | |||
Осуществляет разбор любых текстовых структур. Может использоваться метод регулярных выражений, метод поиска по JSON, встроенный анализатор гипертекста. Согласно строке поиска формирует ответ, либо вырезает запрошенный раздел или их совокупность, либо определяет количество элементов в указанном разделе структуры. Сложные структуры могут быть разобраны последовательностью элементов «Парсер», каждый из которых выделяет из документа некоторую структуру и возвращает ее для передачи на вход следующего элемента. | |||
Разобранная структура документа кэшируется в конкретном экземпляре обработчика сценариев для ускорения работы с одним большим документом последовательных элементов «Парсер». | |||
{| class="wikitable" | |||
|+Свойства компонента | |||
!Свойство | |||
!Описание | |||
|- | |||
|<code>Документ</code> | |||
|Аргумент с содержанием документа, подлежащего разбору. | |||
|- | |||
|<code>Алгоритм</code> | |||
|Алгоритм разбора. | |||
Возможные варианты: | |||
* <code>Парсер json</code> (<code>json</code>, <code>0</code>) – Применяет алгоритм поиска в JSON структуре (объекте или массиве). Примеры поисковых запросов ниже. | |||
* <code>Парсер XML</code> (<code>xml</code>, <code>1</code>) – Применяет алгоритм поиска в XML документе. Примеры поисковых запросов ниже. | |||
* <code>Регулярные выражения</code> (<code>regular</code>, <code>2</code>) – Применяет стандартный алгоритм регулярных выражений. Осуществляет поиск элементов по поисковому шаблону. В общем случае обнаруживает несколько элементов. Для выдачи содержимого необходимо указать номер элемента и номер группы (если в шаблоне используется захват групп). | |||
* <code>Парсер HTML</code> (<code>html</code>, <code>3</code>) – Применяет алгоритм поиска в HTML документе. Синтаксис RQuery. Примеры поисковых запросов ниже. Документы отличаются от XML отсутствием строгой структуры документа, а именно допускают отсутствие закрывающих тегов. | |||
|- | |||
|<code>Поисковый запрос</code> | |||
|Строка с поисковым запросом для выбранного алгоритма. | |||
|- | |||
|<code>Функция</code> | |||
|Функция для алгоритма <code>Парсер JSON</code>. | |||
Возможные варианты: | |||
* <code>Содержимое</code> (<code>content</code>, <code>0</code>) – Возвращает обнаруженный элемент вместе с содержимым. | |||
* <code>Восстановленное содержимое</code> (<code>restoreContent</code>, <code>1</code>) – | |||
* <code>Количество элементов</code> (<code>count</code>, <code>2</code>) – Возвращает количество найденных элементов. | |||
* <code>Список ключей</code> (<code>keys</code>, <code>3</code>) – Возвращает список ключей в найденном объекте. | |||
|- | |||
|<code>Функция</code> | |||
|Функция для алгоритма <code>Парсер XML</code>. | |||
Возможные варианты: | |||
* <code>Документ</code> (<code>textContent</code>, <code>0</code>) – Возвращает выбранный элемент целиком вместе с содержимым. | |||
* <code>Содержимое</code> (<code>content</code>, <code>1</code>) – Возвращает содержимое выбранного элемента, исключая сам элемент. | |||
* <code>Количество элементов</code> (<code>count</code>, <code>2</code>) – Возвращает количество обнаруженных элементов. | |||
* <code>Значение атрибута</code> (<code>attributeValue</code>, <code>3</code>) – Возвращает значение указанного атрибута выбранного элемента. | |||
* <code>Имя атрибута</code> (<code>attributeKey</code>, <code>4</code>) – Возвращает имя атрибута по его индексу в выбранном элементе. | |||
* <code>Количество атрибутов</code> (<code>attributeCount</code>, <code>5</code>) – Возвращает количество атрибутов в выбранном элементе. | |||
|- | |||
|<code>Функция</code> | |||
|Функция для алгоритма <code>Регулярные выражения</code>. | |||
Возможные варианты: | |||
* <code>Содержимое</code> (<code>content</code>, <code>0</code>) – Возвращает содержимое указанной группы из указанного элемента. Отсчет элементов с <code>1</code> (значение по умолчанию), отсчет групп с <code>0</code> (значение по умолчанию <code>1</code>), причем нулевая группа – это полное содержание элемента. Применение в поисковом шаблоне группировок (круглые скобки) влечет необходимость указывать корректное значение интересующей группы, указание неподходящего индекса приводит к завершению работы компонента с ошибкой. | |||
* <code>Количество элементов</code> (<code>countElements</code>, <code>1</code>) – Возвращает количество обнаруженных элементов, соответствующих поисковому шаблону. | |||
* <code>Количество групп</code> (<code>countGroups</code>, <code>2</code>) – Возвращает количество захваченных групп в обнаруженном элементе с указанным индексом. Необходимо указание номера элемента, по умолчанию <code>1</code>. Если группировка в поисковом шаблоне не используется, то возвращается значение <code>0</code>. | |||
|- | |||
|<code>Функция</code> | |||
|Функция для алгоритма <code>Парсер HTML</code>. | |||
Возможные варианты: | |||
* <code>Документ</code> (<code>textContent</code>, <code>0</code>) – Возвращает выбранный элемент целиком вместе с содержимым. | |||
* <code>Содержимое</code> (<code>content</code>, <code>1</code>) – Возвращает содержимое выбранного элемента, исключая сам элемент. | |||
* <code>Количество элементов</code> (<code>count</code>, <code>2</code>) – Возвращает количество обнаруженных элементов. | |||
* <code>Значение атрибута</code> (<code>attributeValue</code>, <code>3</code>) – Возвращает значение указанного атрибута выбранного элемента. | |||
* <code>Имя атрибута</code> (<code>attributeKey</code>, <code>4</code>) – Возвращает имя атрибута по его индексу в выбранном элементе. | |||
* <code>Количество атрибутов</code> (<code>attributeCount</code>, <code>5</code>) – Возвращает количество атрибутов в выбранном элементе. | |||
|- | |||
|<code>Номер элемента</code> | |||
|Параметр для алгоритма <code>Регулярные выражения</code>. Указывает индекс элемента в списке элементов, обнаруженных по шаблону в исходном документе. | |||
|- | |||
|<code>Номер группы</code> | |||
|Параметр для алгоритма <code>Регулярные выражения</code>. | |||
Указывает номер группы в списке захваченных групп выбранного элемента. | |||
Имеет значение только при указании в поисковом запросе групп захвата (выделяются круглыми скобками в соответствии с синтаксисом регулярных выражений). | |||
Например, в документе <code>мама мыла раму, а лена сидела</code> шаблон <code>(.)а([^ ])*</code> обнаружит 7 элементов, в каждом из которых доступны 3 группы: <code>0</code>, <code>1</code>, <code>2</code>. Для элемента <code>4</code> группа <code>0</code> – <code>раму</code>, <code>1</code> – <code>р</code>, <code>2</code> – <code>му</code>. | |||
|- | |||
|<code>Номер атрибута</code> | |||
|Параметр для алгоритмов <code>xml</code> и <code>html</code>. | |||
|- | |||
|<code>Имя атрибута</code> | |||
|Параметр для алгоритмов <code>xml</code> и <code>html</code>. | |||
|- | |||
|<code>Еще запросы</code> | |||
|Список последовательно выполняющихся дополнительных запросов и присвоений результатов в переменную. | |||
Каждое значение в таблице представляет собой поисковый запрос (аналог поля query). | |||
Если поле заполнено, то сначала выполняется основной запрос, а затем с теми же параметрами все дополнительные запросы. | |||
Результат каждого присваивается в соответствующую ему переменную в таблице. | |||
Если какой-то запрос завершается неудачей, то: | |||
* Компонент завершится по ветке неудачи. | |||
* В переменную об ошибке будет присвоен текст ошибки, дополненный префиксом с номером операции, например "Operation 3. Error text". Основной операции соответствует индекс 0. | |||
* Переменные предыдущих выполненных запросов будут заполнены, а последующих запросов - нет. | |||
|} | |||
Следующая статья курса: [[Компоненты работы с данными]] | Следующая статья курса: [[Компоненты работы с данными]] |
Версия от 12:46, 20 февраля 2025
Предыдущая статья курса: Принципы работы служебных сценариев
Общая информация

Все компоненты служебных сценариев разделены на три группы:
- Компоненты управления - базовые компоненты, реализующие логику работы сценария, взаимодействие с другими сценариями и работу с переменными
- Компоненты работы с данными - сложные компоненты, реализующие механизмы взаимодействия с другими модулями системы, а также внешними сервисами
- Компоненты обмена сообщениями - компоненты, реализующие работу с логами, уведомлениями, сообщениями между сценариями, а также голосовой почтой и заказами звонков.
В рамках данной статьи будут рассмотрены базовые компоненты управления, которые являются основной любого сценария. В следующей статье, будут рассмотрены компоненты работы с данными и обмена сообщениями.
Детальную техническую информацию обо всех компонентах сценариев можно найти на портале Vendor.
Общие параметры компонентов
У каждого компонента есть общий набор параметров - Заголовок, Переходы и Описание.
Заголовок (на скриншоте отмечен зеленым) отображается в визуальном редакторе сценария и используется для отображения смысла этого компонента, либо для уточнения его функции (например, если таких компонентов несколько).
Переходы это параметры компонента, определяющие, какой компонент будет выполняться следующим, в зависимости от результата исполнения текущего компонента. Фактически, установка "стрелочек" задаёт параметр Переход. У каждого компонента может быть несколько переходов, в зависимости от возможных исходов его исполнения (например, разные виды ошибок). Для быстрой установки различных переходов можно использовать горячие клавиши 1-9, протягивая стрелочки левой кнопкой мышки.
Описание используется для хранения развернутого пояснения к настройке компонента и его параметров. Визуально не отображается в редакторе, однако может быть полезным для других пользователей.
В дальнейшем, при разборе компонентов будут описаны только спецефичные для них параметры.
Сохранение результата работы компонента
У некоторых компонентов, которые подразумевают обработку входных данных, есть два параметра, которые отвечают за сохранение результата их работы:
Результат в переменную - в данном параметре задаётся переменная сценария, в которую будет сохранен результат выполнения компонента (например, результат парсинга на скриншоте)
Ошибка в переменную - в данном параметре задается переменная сценария, в которую будет сохранен текст ошибки в случае её возникновения. С помощью этой переменной, по "ветке" ошибка можно получить текст ошибки и записать её в лог, или отобразить пользователю.
Описание базовых компонентов
Старт

Компонент, с которого начинается выполнения сценария или его обособленной ветки.
Свойство | Описание |
---|---|
Тип старта
|
Тип старта сценария.
Возможные значения:
|
Параметр запуска
|
Только для Тип старта = Начало
Поле для указания переменной, в которую будет записано значение из первого параметра запуска |
Инициализировать переменные
|
Только для Тип старта = Начало
Переключатель установки всем переменным сценария значений по умолчанию соответствующего типа. |
Вариант перехода
|
Только для Тип старта = Пост-обработка
Причина заврешения основной ветки выполнения сценария, по возникновению которой в рамках пост-обработки будет выполнена цепочка компонентов, следующих за текущим компонентом СТАРТ. Возможные значения:
|
Время выполнения всего сценария
|
Только для Тип старта = Пост-обработка
Ограничение на выполнение сценария в рамках ветки пост-обработки, в миллисекундах. По истечении сценарий принудительно завершится. |
Стоп

Завершает выполнение ветки сценария корректным образом. Обеспечивает возврат управления из вложенного сценария в вышестоящий сценарий.
Свойство | Описание |
---|---|
Возврат управления
|
Разрешает или запрещает дальнейшую передачу управления предыдущему сценарию в стеке вложенных сценариев при завершении текущего, при условии, что он вложенный.
Возврат произойдет только в том случае, если значение поля – |
Результат
|
Аргумент, содержащий результат, возвращаемый сценарием назад по стеку вызовов. Это сохраняется в переменную родительского сценария, указанную в поле 'Результат в переменную' компонента 'Запуск сценария'.
Также заносит значение в переменную с именем "result", если она существует в сценарии. Эта переменная в ряде функций передает значение из сценария в вышестоящую логику. Например, сценарий внешней авторизации. |
Пауза

Осуществляет задержку сценария перед выполнением следующего компонента. В случае указания нулевого таймаута – компонент пропускается.
В некоторых случаях при работе с большими сценариями удобно использовать компонент «Пауза» в качестве пустышки. Для выравнивания визуального представления сценария, для удобства и быстроты смены свойств. Например, по веткам выхода из компонента «Меню», где каждое свойство перехода задается внутри специального окна путем выбора одного объекта из списка всех объектов сценария.
Свойство | Описание |
---|---|
Время, мс
|
Длительность паузы, в миллисекундах.
В случае отрицательных значений компонент работает в синхронном режиме. В случае |
Очистить события
|
Определяет поведение компонента с очередью необработанных событий.
Необработанные события накапливаются в очереди, если исполняемый во время поступления события компонент не призван их обрабатывать, и остаются в очереди до тех пор, пока очередной компонент не обработает их (или не завершится сценарий). Обрабатывать события могут только асинхронные компоненты, то есть проводящие асинхронные операции и ожидающие событий. К множеству рассматриваемых событий НЕ ОТНОСЯТСЯ события, обрабатываемые самой скрипт-машиной, например события межсценарного взаимодействия, подмены сценариев, завершения или подмены владельца и т.д. К накапливаемым событиям относятся:
Возможные значения:
Использование компонента с нулевым таймаутом и режимом очистки очереди событий может применяться в тех местах сценария, где с точки зрения логики важно сбросить накопленные хвосты. Например введенные ранее DTMF сигналы. |
Сохранить состояние сценария
|
Включение режима сохранения состояния сценария IVR для возможного дальнейшего восстановления разговора с продолжением обслуживания с сохраненной позиции.
Возможные значения:
Применяется совместно с режимом sip_restore_enabled. Имеет смысл только для IVR сценариев. Если состояние сценария не сохранялось, то при восстановлении разговора (в случае пропадания ноды IVR или падения сервера с нодой IVR) сценарий начнется с самого начала от момента маршрутизации сценария на фичакод. Состояние включает весь стек вложенных вызовов, значения всех локальных переменных, стартовые параметры, хранилище, код сценария, номер компонента, время начала, счетчики и т.д. Метаданные сценария не хранятся. Исполнение начнется непосредственно с компонента, следующего за текущим компонентом 'Пауза', исполняющим сохранение. Сценарий будет загружен из доменного центра, поэтому если он существенно изменился (сбились номера компонентов или отсутствует сохраненный номер компонента), то корректное продолжение выполнения будет невозможно. Состояние может быть объемным, операция сохранения состояния не должна применяться после каждого компонента в длинных интенсивных циклах без пауз. При завершении обработчика сценария сохраненное состояние автоматически удаляется из хранилища. Сеанс вызова при восстановлении разговора сохраняется вне зависимости от того, сохранялось ли состояние сценария IVR. Состояние сохраняется в объектное хранилище, управляемое микросервисом store. Если количество сохранений заведомо большое, и микросервис store нагружается, следует его размножать на сайте. Восстановленный экземпляр обработчика сценария утрачивает связь с временными файлами предыдущего обработчика, использованными им в макро-путях :TEMP и :LOCAL. Функция getscriptref() нового экземпляра имеет новое значение. Контекст может восстанавливаться произвольное количество раз. |
Сравнение

Сравнивает значения двух аргументов. Компонент осуществляет ветвление внутри сценария. В случае соответствия выбранной логической операции и значений аргументов переход осуществляется по ветке «Правда», в противном случае – по ветке «Ложь».
Свойство | Описание |
---|---|
Аргумент 1
|
Операнд 1 |
Аргумент 2
|
Операнд 2 |
Тип сравнения
|
Логическая операция между Операндами.
Возможные значения:
При сравнении значений разных типов осуществляется их предварительное преобразование к одному типу. |
Переход, правда
|
Компонент, которому передается управление в случае истинности операции. |
Переход, ложь
|
Компонент, которому передается управление в случае ложности операции. |
Меню

Сравнивает аргумент со списком значений. Компонент осуществляет ветвление внутри сценария. Может иметь неограниченное число веток перехода. Переход осуществляется по ветке значения, с которым совпало значение аргумента. Если совпадений не найдено, переход осуществляется по ветке «Прочее».
Свойство | Описание |
---|---|
Аргумент
|
Операнд, подлежащий сопоставлению с перечнем значений |
Значения
|
Набор вариантов значений для операнда и соответствующих им веток перехода. |
Переход, прочее
|
Компонент, которому передается управление в случае, если операнд не был сопоставлен ни с одним из перечисленных вариантов. |
Присвоение

Задает значение указанной переменной. В качестве присваемого значения выступает аргумент. Используется механизм преобразования типов, если типы значения аргумента и переменной не совпадают. Допускает присвоение значений нескольким переменным.
Свойство | Описание |
---|---|
Режим
|
Режим работы компонента по количеству одновременных операций присвоения
Возможные значения:
|
Переменная
|
Только для Режим=Одиночный
Переменная - назначение для одиночного присвоения. |
Значение
|
Только для Режим=Одиночный
Аргумент, поставляющий значение для одиночного присвоения. |
Операции
|
Только для Режим=Множественный
Список последовательно выполняющихся операций присвоения, где каждой переменной сопоставляется отдельный аргумент. Одной и той же переменной может быть присвоено значение многократно. |
Мьютекс

Занимает или освобождает критическую секцию на текущем сайте. Применяется для блокирования произвольной операции (например чтение и модификация сайтовой или глобальной переменной) от одновременного выполнения в разных экземплярах сценариев и связанных с этим вредных мутаций. Может использоваться как альтернатива транзакциям.
Компонент приостанавливает выполнение сценария до тех пор пока не будет выдана инициатива, подтверждающая захват именованной критической секции.
Ожидание захвата может быть прервано по таймауту, при этом происходит отказ от захвата.
Критическая секция будет удерживаться до одного из событий:
- выполнение освобождения секции в этом же сценарии таким же компонентом с действием "Освободить";
- плановым или внеплановым завершением обработчика сценария;
- истеканием времени гарантированного освобождения, заданного в параметрах компонента.
- перезагрузкой ноды или сервера, исполняющего сценарий.
Реализация компонента ограничивает применение рамками одного сайта. Критическая секция не имеет привязки к доменам, конкретным серверам и сценариям. Для введения таковых привязок следует формировать ключ с применением названия соответствующего домена и/или сервера.
Свойство | Описание |
---|---|
Ключ
|
Аргумент, содержащий имя критической секции. |
Действие
|
Выбор действия над критической секцией.
Возможные значения:
|
Тип операции
|
Выбор типа блокируемой операции.
Операции чтения могут взаимно не блокироваться (например узнать значение глобальной переменной), однако операции изменения (сначала взятие значения глобальной переменной, потом преобразование и затем сохранение глобальной переменной) требуют полной блокировки критической секции. Возможные значения:
Применяется для захвата. |
Время ожидания, мс
|
Аргумент, содержащий таймаут в миллисекундах, после истечения которого ожидание захвата следует прекратить. Управление возвращается по ветке таймаута.
Применяется для захвата`. |
Гарантированное время освобождения, мс
|
Аргумент, содержащий время удержания блокировки в миллисекундах, по истечении которого критическая секция гарантированно освободится без ожидания других событий.
Применяется для захвата. |
Запуск сценария

Обеспечивает процессное или функциональное ветвление на уровне сценариев.
В случае организации автоматических сервисов размеры сценария могут быть достаточно велики, и компонент «Запуск сценария» предоставляет возможность разбить крупный сценарий на несколько логических блоков. Таким образом, один сценарий передает управление в начало другого сценария. При этом можно задать некоторое значение на запуск, которое примет компонент «Старт» вложенного сценария и сохранит в свою локальную переменную. Помимо этого, все переменные одного типа, которые названы одинаково в запускающем и запускаемом сценариях, перенесут свои значения из одного в другой без изменений. Такой способ запуска называется вложенным.
Также с помощью компонента можно запускать в параллельный процесс любой служебный сценарий, не работающий с зависимыми от основного сценария ресурсами. При запуске асинхронного служебного сценария начальные значения его переменных, совпадающих по типам и именам с переменными основного сценария, будут установлены в соответствии с их значениями.
Свойство | Описание |
---|---|
Режим
|
Режим запуска дочернего сценария.
Возможные значения:
|
Источник сценария
|
Способ выбора сценария для запуска.
Возможные значения:
|
Сценарий
|
Выпадающий список с кодами сценариев. Содержит все доступные (нескрытые) сценарии того же типа, что и текущий сценарий, содержащиеся в текущем домене. |
Сценарий
|
Выпадающий список с кодами сценариев. Содержит все доступные (нескрытые) служебные сценарии, содержащиеся в текущем домене. |
Код сценария
|
Аргумент, определяющий код запускаемого сценария. Может указывать также коды скрытых сценарии.
При отсутствии сценария с указанным кодом, управление передается по ветке ошибки. В мастер-домене в качестве кода сценария может быть указано значение Такой режим используется для запуска контекстных сценариев звонка в домене и трансляции ему событий: поскольку звонок не принадлежит домену, то контекстный сценарий запускается в мастер-домене. Настройка контекстного сценария производится в настройках мастер-домена. |
Ид в переменную
|
Переменная для сохранения значения идентификатора запущенного сценария, по которому можно производить взаимодействие. |
Возврат управления
|
Разрешает или запрещает возврат управления из вложенного сценария и продолжение работы по ветке дальше. |
Значения переменных
|
Таблица начальных значений для локальных переменных запускаемого сценария.
Доступно только если выбранный режим отличается от "вложенного с объединением переменных". Ключи - названия переменных запускаемого сценария. Сопоставление происходит по именам переменных, значения присваиваются только тем переменным, которые определены в сценарии. Если запускаемый сценарий передает управление вложенному, то присвоение значений каждой из указанных переменных производится не более одного раза, но может откладываться вплоть до загрузки вложенного сценария, имеющего переменную с соответствующим именем. Установленные таким образом значения приоритетны перед значениями по умолчанию внутри запускамого сценария. |
Параметр 1 - Параметр 10
|
Параметры для асинхронного служебного сценария. Доступ к значению осуществляется через функцию выражений startparam(n) , где n - номер параметра, или через сохранение значения в компоненте Старт (только для первого)
|
Прочие параметры
|
JSON-массив, содержащий параметры 11, 12 и т.д. для асинхронного служебного сценария. Доступ к значению осуществляется через функцию выражений startparam(N) , где N > 10.
|
Блок кода JavaScript

Осуществляет выполнение кода JS, заданного аргументом, в микросервисе продуктового слоя.
Передает на вход либо объект со значениями переменных, либо объект с указанными именованными аргументами.
Внутри тела могут выполняться любые действия с примененмем переданного объекта в контексте продуктового слоя.
На выход возвращаемый результат сохраняется в переменной, а также, в случае если возвращается объект, все его ключи сопоставляются с имеющимися в сценарии переменными и производится сохранение значений.
Пример:
return { a: x + y.name + z[0].caption };
для переданных переменных или параметров
x = "abc"
y = {"name": "def"}
z = [{"caption": "ghi"}]
вернет "abcdefghi" и присвоит в существующую переменную сценария 'a', а также тело "{ a: "abcdefghi" }" в переменную возвращающую результат, если она задана.
При необходимости можно выполнять асинхронный запрос:
return async function() { await GlobalUtils.wait(500); return { a: 1, b: x }; }
Свойство | Описание |
---|---|
Код JS
|
Код JS функции для исполнения в node.js в окружении микросервиса продуктового слоя. |
Способ задания параметров
|
Переключает режим задания параметров для среды выполнения.
Возможные значения:
При передаче значений JSON-строки представляющие собой объекты доступны в коде как объекты, JSON-массивы - как массивы, строки и числа по умолчанию, даты в виде строки, а незаполненные значения остаются незаполненными (null). |
Аргументы
|
Список передаваемых параметров и их имен.
Доступ к ним из выполняемого кода через имена как к обычным переменным. Если значение представляет собой JSON-строку с объектом или массивом, то в коде JS при обращении к соответсвующей переменной будет доступен непосредственно объект или массив. |
Таймаут, сек
|
Аргумент, определяющий таймаут выполнения кода в ноде JS.
По истечении таймаута сценарий передает управление по ветке 'Переход, таймаут', а код продолжает выполняться. |
Метка для перехода

Метка, с которой может быть запущена логика сценария с помощью компонентов "Переход на метку". Аналог конструкции GoTo, либо отдельных "методов" в рамках сценария.
Использование данного компонента способно упростить сложные сценарии, и избавить их от необходимости копирования групп компонентов, растягивания длинных ветвей перехода, закручивания графического представления сценариев. А также позволяет инкапсулировать логику в одном сценарии (не вызывать вложенные сценарии), и получить возможность управлять более сложной разветвленной логикой.
Свойство | Описание |
---|---|
Метка
|
Аргумент, поставляющий значение метки для адресации из компонентов передачи управления. |
Переход на метку без возврата

Передает управление обособленной ветке в текущем сценарии, начиная с компонента Метка. Конкретный компонент выбирается на основании динамического совпадения значения свойств `Метка` у него и у текущего компонента. Свойство может быть задана константой и аргументом. Не предполагает возврата управления в точку вызова.
Позволяет тем самым разбивать сценарий на регионы с простыми алгоритмами и избавляет от необходимости копировать группы компонентов, вызывать вложенные сценарии, растягивать длинные ветки переходов.
Для параметризации непосредственно в компоненте может быть задано значение произвольной переменной. В качестве присваемого значения выступает аргумент. Используется механизм преобразования типов, если типы значения аргумента и переменной не совпадают. Допускает присвоение значений нескольким переменным.
После перехода на метку данным компонентом, после достижения компонента "Стоп", выполнение сценария будет завершено.
Свойство | Описание |
---|---|
Метка
|
Аргумент, на основании значения которого производится поиск метки (компонента с таким же значением). |
Переменная
|
Переменная - назначение для операции присвоения. |
Значение
|
Аргумент, поставляющий значение для операции присвоения. |
Переход на метку с возвратом

Данный компонент реализует ту же логику, что и предыдущий, однако позволяет вернуться к исполнению изначальной "ветки" сценария с помощью компонента Возврат в точку вызова.э
Передает управление обособленной ветке в текущем сценарии, начиная с компонента Метка. Конкретный компонент выбирается на основании динамического совпадения значения свойств `Метка` у него и у текущего компонента. Свойство может быть задана константой и аргументом. Предполагает возврат управления в точку вызова. Для этой цели интерпретатор сценария сохраняет информацию о вызове в стек и использует его при работе компонента Возврат управления. Возврат всегда производится в крайнюю точку вызова в стеке, таким образом для корректной работы сценария необходимо обеспечивать соответствие точек вызова и возвратов управления.
Позволяет тем самым разбивать сценарий на регионы с простыми алгоритмами и избавляет от необходимости копировать группы компонентов, вызывать вложенные сценарии, растягивать длинные ветки переходов.
Для параметризации непосредственно в компоненте может быть задано значение произвольной переменной. В качестве присваемого значения выступает аргумент. Используется механизм преобразования типов, если типы значения аргумента и переменной не совпадают. Допускает присвоение значений нескольким переменным.
Возврат в точку вызова

Осуществляет возврат управления в крайнюю точку вызова компонентом Переход на метку с возвратом.
Парсер

Осуществляет разбор любых текстовых структур. Может использоваться метод регулярных выражений, метод поиска по JSON, встроенный анализатор гипертекста. Согласно строке поиска формирует ответ, либо вырезает запрошенный раздел или их совокупность, либо определяет количество элементов в указанном разделе структуры. Сложные структуры могут быть разобраны последовательностью элементов «Парсер», каждый из которых выделяет из документа некоторую структуру и возвращает ее для передачи на вход следующего элемента.
Разобранная структура документа кэшируется в конкретном экземпляре обработчика сценариев для ускорения работы с одним большим документом последовательных элементов «Парсер».
Свойство | Описание |
---|---|
Документ
|
Аргумент с содержанием документа, подлежащего разбору. |
Алгоритм
|
Алгоритм разбора.
Возможные варианты:
|
Поисковый запрос
|
Строка с поисковым запросом для выбранного алгоритма. |
Функция
|
Функция для алгоритма Парсер JSON .
Возможные варианты:
|
Функция
|
Функция для алгоритма Парсер XML .
Возможные варианты:
|
Функция
|
Функция для алгоритма Регулярные выражения .
Возможные варианты:
|
Функция
|
Функция для алгоритма Парсер HTML .
Возможные варианты:
|
Номер элемента
|
Параметр для алгоритма Регулярные выражения . Указывает индекс элемента в списке элементов, обнаруженных по шаблону в исходном документе.
|
Номер группы
|
Параметр для алгоритма Регулярные выражения .
Указывает номер группы в списке захваченных групп выбранного элемента. Имеет значение только при указании в поисковом запросе групп захвата (выделяются круглыми скобками в соответствии с синтаксисом регулярных выражений). Например, в документе |
Номер атрибута
|
Параметр для алгоритмов xml и html .
|
Имя атрибута
|
Параметр для алгоритмов xml и html .
|
Еще запросы
|
Список последовательно выполняющихся дополнительных запросов и присвоений результатов в переменную.
Каждое значение в таблице представляет собой поисковый запрос (аналог поля query). Если поле заполнено, то сначала выполняется основной запрос, а затем с теми же параметрами все дополнительные запросы. Результат каждого присваивается в соответствующую ему переменную в таблице. Если какой-то запрос завершается неудачей, то:
|
Следующая статья курса: Компоненты работы с данными
Предыдущая статья курса: Принципы работы служебных сценариев