# Термины и определения

# Сценарий

Сценарий - это основная сущность модуля "Автоматизация". В состав сценария входит:

  • Событие инициирующее запуск сценария, со своей структурой данных.

    Структура события определяется в общем пайплайне прохождения событий.

  • Одна или несколько исполняемых функций.
  • Различные функции-преобразователи и поставщики данных, операторы сравнения, функции обращения к API, переменные и т.д.

# Структура

Изображение

Локальная структура с собственным набором свойств, для назначения типа Пинов пользовательских функций и переменных.

Содержит следующие параметры:

  • Общая информация
    • Название структуры
    • Описание структуры
  • Свойства структуры
    • Название свойства
    • Тип

      Могут быть использованы все существующие типы, кроме Exec.

# Блок

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

Пример блока:

Изображение

# Параметры блока

Параметры блока - карточка настройки блока. Находится в правой части конструктора, вызывается по клику на блок.

# Категоризация блоков

# Событие запуска

Блок с событием OnLogEvent будет по умолчанию добавлен в сценарий при его создании. Добавление из контекстного меню блока OnLogEvent заблокировано.

  • OnLogEvent - блок, содержащий первичное событие поступившее в коллектор monq в переменной Value.

# Локальные функции

К локальным относятся функции, созданные в рамках текущего сценария и используются только внутри него. В текущей версии локальными функциями являются блоки CodeFunction. Пользователю доступно создание новых функций, а также возможность использовать ранее объявленные функции для текущего сценария повторно.

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

Пользователю доступен список глобальных функций, состоящих в системной библиотеке. Список доступных пользователю глобальных функций.

# Переменные

Подробней о типах переменных

# Пин

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

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

# Категории Пинов

  1. Пин передачи данных

    Обозначение на Блоках в виде цветовой маркировки 🔴🟠🟡🟢🔵🟣🟤.

    1. Могут быть входящие и исходящие Пины.
      • Нельзя соединить между собой 2 исходящих Пина, равно как и 2 входящих между собой.
      • Для входящего Пина передачи данных может быть установлена только одна связь.
      • Исходящий Пин может быть соединен с множеством входящих Пинов других блоков.
      • Нельзя соединять Пины одного блока между собой.
      • При попытке выполнить не валидные соединения пользователь получит уведомление.
      • Если у блока существует входящий Пин, для него может быть установлено значение или протянута связь.

        В некоторых случаях, пользователь сможет самостоятельно указать значение для данного Пина через поле ввода, без необходимости протягивать к нему связь.

    2. Пины различаются по типам данных, которые передаются между ними. Подробнее о Типах данных
    3. Пины различных типов и связи между ними данных должны различаться визуально;
    4. Для некоторых универсальных функций на этапе их создания могут быть объявлены Пины неопределенного типа - Wildcard.
  2. Пин вызова функции Exec
    1. Пины вызова функции и связи между ними визуально отличаются от Пинов данных

      Обозначение на Блоках в виде "треугольников" синего цвета - ▶.

    2. Нельзя соединить Пин передачи данных и Пин вызова функции.
    3. Если у блока существует входящий Пин вызова функции, то для его запуска обязательно должна быть протянута связь от другого блока функции или блока События запуска.
      • Отсутствие связей для Пинов вызова функции не будет вызывать ошибок провала сборки кода, просто функция не будет исполнена.
      • Исходящие Пины так же могут не иметь связей. Это означает, что участок сценария завершится исполнением данной функции, при наличии входящей связи.
      • От одного исходящего пина вызова функции нельзя построить несколько связей. Изображение
      • Несколько связей может идти к одному пину вызова от других функций или событий. Изображение

# Конструкция сценария

Конструкция сценария представляет из себя схему взаимодействия различных блоков.

Пример конструкции:

Изображение

# Инспектор объектов

Инспектор объектов - правая панель, предназначенная для настройки блоков сценария. Вызывается двойным кликом по блоку.

Пример инспектора:

Изображение

# Диспетчер объектов

Левая панель конструктора для объявления новых объектов или для работы с ранее добавленными.

Пример диспетчера:

Изображение

# Функция

Функции являются основными исполняемыми блоками сценария.

Функции разделяют на 2 основных класса:

# CodeFunction

Данный тип функции, кроме базовых настроек, включает в себя возможность построить конструкцию используя скриптовый язык программирования C# scripts

# Общесистемные функции

Операторы сравнения, математические функции, преобразователи данных и т.д. Данные функции поставляются по умолчанию для всех систем, вне зависимости от состава продуктов.

Все функции так же делятся на 2 категории:

  1. Функции управления потоком сценария, исполняемые явно путем подключения связи к Пину вызова и которые сами могут активировать исполнение других функций
  2. Функции преобразования данных и получения значений на выходе (не имеют Пинов вызова). Эти функции подключаются к входящим Пинам данных и автоматически выполняются компилятором, когда требуются данные, полагающиеся на них.

# Pure & Impure функции

Функции могут быть Pure (чистые) и Impure (нечистые)

Pure (чистые):

  1. Чистые функции никоим образом не изменяют состояние элементов сценария.
  2. Блоки данных не участвуют в управлении потоком и никогда не могут иметь Пины вызова функции.
  3. Чаще всего чистые функции используются, как функции получения данных или операторы.
  4. Чистые функции исполняются всякий раз, когда на их данные полагаются вышестоящие функции.

Impure (нечистые):

  1. Данные блоки функций участвуют в управлении потоком выполнения сценария.
  2. Блоки функций управления характеризуют наличие специальных Пинов "вызова функции".
  3. Нечистые функции могут менять состояние элементов сценария и глобальные переменные.

# Переменная

Пользователь может использовать переменные при построении конструкции сценария.

  1. Переменные делятся на:
    • Предопределенные стандартные (системные) переменные.
      • ID текущего сценария
      • ID Рабочей группы
      • Bearer token
    • Локальные переменные, созданные пользователем для текущего сценария (настраиваемые в инспекторе, по аналогии с настройкой CodeFunction).
  2. Для каждой переменной существует 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 ДА
Struct Выбор из списка объявленных структур в сценарии НЕТ
Exec Тип Exec используется для передачи управления следующим функциям в сценарии НЕТ

Каждый тип имеет цветовую маркировку для удобства идентификации.

Связь между Пинами можно установить только между Пинами одного типа.

# Automaton bot

Automaton Bot - системный пользователь, использующийся для "обезличивания" операций в сценариях модуля "Автоматизация".

  • Automaton Bot не отображается в списке пользователей.
  • Пользователя Automaton Bot нельзя изменить или удалить.
  • Пользователя Automaton Bot нельзя добавить в Рабочие Группы.
  • Для каждой "Рабочей группы"-владельца сценария Автоматизации у пользователя Automaton Bot выписан соответствующий токен.