Термины и определения
Сценарий
Сценарий в контексте модуля автоматизации представляет собой последовательность операций в виде блоков: источника событий, функций и переменных, представленных в виде визуальной схемы на холсте конструктора. Главная цель сценария - автоматизация выполнения задач по обработке событий и метрик, основываясь на определенных условиях и действиях.
В состав сценария входит:
- Событие инициирующее запуск сценария, со своей структурой данных
Структура события определяется в общем пайплайне прохождения событий
- Одна или несколько исполняемых функций
- Различные функции-преобразователи и поставщики данных, операторы сравнения, функции обращения к API, переменные и т.д.
Структура
Локальная структура с собственным набором свойств, для назначения типа Пинов пользовательских функций и переменных.
Содержит следующие параметры:
- Общая информация
- Название структуры
- Описание структуры
- Свойства структуры
- Название свойства
- Тип
Могут быть использованы все существующие типы, кроме
Exec
.
Перечисления
С целью обеспечения удобства пользователей бизнес-процессов, внедрен новый тип данных в сценариях автоматизации: Enum
(перечисление). В текущей версии доступны локальные перечисления, которые можно создавать внутри сценария, а также системные перечисления, предоставляемые разработчиками. Выбранное перечисление отображается в настройках Действия БП в виде выпадающего списка, что позволяет пользователям легко выбирать одну из доступных констант без необходимости исследования документации.
После добавления перечисления во входящую структуру по умолчанию в настройках действия проставляется первая по счету константа, что дополнительно упрощает процесс настройки.
Для удобства использования перечисления его можно передать в виде строкового значения, используя соответствующую функцию конвертации.
Создание локальных перечислений
- Перейдите в раздел "Enums/Перечисления" в диспетчере сценариев
- Нажмите кнопку "+", чтобы создать новое перечисление
- Задайте название перечислению и добавьте описание при необходимости
- Добавьте константы, которые будут доступны в выпадающем списке для выбора пользователей
Редактирование существующего перечисления
Для того чтобы изменить существующее перечисление:
- В разделе "Перечисления" диспетчера объектов выберите нужное перечисление
- В инспекторе объектов вы можете изменить название и описание, а также управлять константами (добавлять, удалять, изменять их значения)
Удаление неактуальных перечислений
Для того чтобы удалить неактуальное перечисление:
- В разделе "Перечисления" диспетчера объектов выберите нужное перечисление
- Нажмите кнопку удаления
- Подтвердите удаление. Учтите, что перечисления, используемые в других частях системы, не могут быть удалены.
Блок
Блоком называют графический элемент конструкции сценария, в состав которого может входить функция, событие, переменная, различные операторы и преобразователи.
Пример блока:
Параметры блока
Параметры блока - карточка настройки блока. Находится в правой части конструктора, вызывается по клику на блок.
Категоризация блоков
Событие запуска
OnLogEvent
- блок инициирует запуск сценария при получении события через какой-либо поток данных и содержит в себе поступившее первичное событие в переменнойValue
.OnThresholdEvent
- блок инициирует запуск сценария при открытии или закрытии порогов при обработке метрик.OnScheduledEvent
- блок инициирует запуск сценария по планировщику.OnRawLogEvent
- блок инициирует запуск сценария в препроцессоре (обработчике) событий потока данных.OnRawBuildEvent
- блок инициирует запуск сценария при получении файла Allure отчета для последующего парсинга.OnBuildEvent
- блок инициирует запуск сценария после обработки файла Allure отчета для генерации сигналов
Локальные функции
К локальным относятся функции, созданные в рамках текущего сценария и используются только внутри него.
В текущей версии локальными функциями будут являться блоки CodeFunction
.
Пользователю доступно создание новых функций, а также возможность использовать ранее объявленные функции для текущего сценария повторно.
Глобальные функции
Пользователю доступен список глобальных функций, состоящих в системной библиотеке. Список доступных пользователю глобальных функций.
Пин
Пином называют узел связи для передачи данных или инициирующих команд между блоками сценария.
Пины используются для определения того, какие входы и выходы могут быть подключены между собой для передачи данных.
Категории Пинов
-
Пин передачи данных. Обозначение на Блоках - 🔴🟠🟡🟢🔵🟣🟤.
- Могут быть входящие и исходящие Пины.
- Нельзя соединить между собой 2 исходящих Пина, равно как и 2 входящих между собой.
- Для входящего Пина передачи данных может быть установлена только одна связь.
- Исходящий Пин может быть соединен с множеством входящих Пинов других блоков.
- Нельзя соединять Пины одного блока между собой.
- При попытке выполнить не валидные соединения пользователь получит уведомление.
- Если у блока существует входящий Пин, для него может быть установлено значение или протянута связь.
В некоторых случаях, пользователь сможет самостоятельно указать значение для данного Пина через поле ввода, без необходимости протягивать к нему связь.
- Пины различаются по типам данных, которые передаются между ними. Подробнее о Типах данных
- Пины различных типов и связи между ними данных должны различаться визуально;
- Для некоторых универсальных функций на этапе их создания могут быть объявлены Пины неопределенного типа - Wildcard.
- Могут быть входящие и исходящие Пины.
-
Пин вызова функции
- Пины вызова функции и связи между ними визуально отличаются от Пинов данных - ▶.
- Нельзя соединить Пин передачи данных и Пин вызова функции.
- Если у блока существует входящий Пин вызова функции, то для его запуска обязательно должна быть протянута связь от другого блока функции или блока События запуска.
- Отсутствие связей для Пинов вызова функции не будет вызывать ошибок провала сборки кода, просто функция не будет исполнена.
- Исходящие Пины так же могут не иметь связей. Это означает, что участок сценария завершится исполнением данной функции, при наличии входящей связи.
- От одного исходящего пина вызова функции нельзя построить несколько связей.
- Несколько связей может идти к одному пину вызова от других функций или событий.
Конструкция сценария
Конструкция сценария представляет из себя схему взаимодействия различных блоков.
Пример конструкции:
Инспектор объектов
Инспектор объектов - правая панель, предназначенная для настройки блоков сценария. Вызывается двойным кликом по блоку.
Пример инспектора:
Диспетчер объектов
Левая панель конструктора для объявления новых объектов или для работы с ранее добавленными.
Пример диспетчера:
Функция
Функции являются основными исполняемыми блоками сценария.
Функции разделяют на 2 основных класса:
CodeFunction
Данный тип функции, кроме базовых настроек, включает в себя возможность построить конструкцию используя скриптовый язык программирования C# scripts
Общесистемные функции
Операторы сравнения, математические функции, преобразователи данных и т.д. Данные функции поставляются по умолчанию для всех систем, вне зависимости от состава продуктов.
Все функции так же делятся на 2 категории:
- Функции управления потоком сценария, исполняемые явно путем подключения связи к Пину вызова и которые сами могут активировать исполнение других функций
- Функции преобразования данных и получения значений на выходе (не имеют Пинов вызова). Эти функции подключаются к входящим Пинам данных и автоматически выполняются компилятором, когда требуются данные, полагающиеся на них.
Pure & Impure функции
Функции могут быть Pure (чистые) и Impure (нечистые)
Pure (чистые):
- Чистые функции никоим образом не изменяют состояние элементов сценария.
- Блоки данных не участвуют в управлении потоком и никогда не могут иметь Пины вызова функции.
- Чаще всего чистые функции используются, как функции получения данных или операторы.
- Чистые функции исполняются всякий раз, когда на их данные полагаются вышестоящие функции.
Impure (нечистые):
- Данные блоки функций участвуют в управлении потоком выполнения сценария.
- Блоки функций управления характеризуют наличие специальных Пинов "вызова функции".
- Нечистые функции могут менять состояние элементов сценария и глобальные переменные.
Пользовательская переменная
Пользователь может использовать переменные при построении конструкции сценария.
- Переменные делятся на:
- Предопределенные стандартные (системные) переменные:
- ID текущего сценария
- ID Рабочей группы
- Bearer token - токен авторизации от имени
Automaton Bot
- Scenario - переменная содержит общие параметры сценария (
ScenarioId
,OwnerWorkGroupId
,RobotToken
,BaseUri
,UserspaceId
)
- Локальные переменные, созданные пользователем для текущего сценария (настраиваемые в инспекторе, по аналогии с настройкой локальных функций
CodeFunction
).
- Предопределенные стандартные (системные) переменные:
- Для каждой переменной существует 2 состояния: SET и GET. При добавлении в сценарий пользователь может указать состояние переменной.
- GET - используется для получения значения переменной в сценарии.
- SET - используется для установки значения предопределенной переменной.
Правила именования функций и переменных
Имя функции или переменной может содержать:
- буквы (строчные и прописные).
- знак нижнего подчеркивания ("_").
- цифры.
Имя функции или переменной должно начинаться с:
- буквы (строчные и прописные).
- знака нижнего подчеркивания ("_").
- символа "@".
Язык программирования C# чувствителен к регистру: name
и Name
- 2 разные сущности.
Имя функции или переменной не может совпадать с ключевыми словами (for
, if
, using
).
Пример | Допустимо/Недопустимо |
---|---|
myvar | Допустимо |
Myvar14092 | Допустимо |
_name | Допустимо |
@variable1 | Допустимо |
123myvar | Недопустимо, начинается с цифры |
my var | Недопустимо, содержит пробел |
Типы данных
Блоки функций поддерживают передачу данных через Пины следующих типов:
Название | Возможные значения | Возможность установить значение по умолчанию | Валидация |
---|---|---|---|
Boolean | True/False | ДА | - |
Byte | Целые числа от 0 до 255 | ДА | Только целые неотрицательные числа. |
Char | Единичный символ Unicode | ДА | Запрет на ввод более одного символа |
Double | ДА | ||
Dynamic | Хранит любые значения | НЕТ | - |
GUID | Значение формата 00000000-0000-0000-0000-000000000000 | ДА | Валидация по маске |
Integer | От -2147483648 до 2 147 483 647 | ДА | Только целые числа. При вводе числа меньше или больше допустимого значения, значение приводится к минимально или максимально допустимому |
Integer64 | От -9223372036854775808 до 9223372036854775807 | ДА | Только целые числа. При вводе числа меньше или больше допустимого значения, значение приводится к минимально или максимально допустимому |
String | Строка символов Unicode | ДА | Разрешено использовать любые символы. Ограничений на количество символов нет. |
Structure | НЕТ | - | |
Enum | НЕТ | - |
Каждый тип имеет цветовую маркировку для удобства идентификации.
Связь между Пинами можно установить только между Пинами одного типа.
Глобальные переменные
Работа с глобальными переменными осуществляется при помощи соответствующи глобальных функций:
SetStorageValue
- инициализация глобальной переменной и задание её значенияStorageTryGetValue
- попытка получения значения глобальной переменнойStorageContainsKey
- проверка наличия глобальной переменнойStorageRemoveKey
- удаление глобальной переменной
Automaton bot
Automaton Bot - системный пользователь, использующийся для "обезличивания" операций в сценариях модуля "Автоматизация".
- Automaton Bot не отображается в списке пользователей.
- Пользователя Automaton Bot нельзя изменить или удалить.
- Пользователя Automaton Bot нельзя добавить в Рабочие Группы.
- Для каждой "Рабочей группы"-владельца сценария Автоматизации у пользователя Automaton Bot выписан соответствующий токен.