Модуль Редактора #
Все сценарии настраиваются в модуле Редактор сценариев (scripteditor). Модуль предоставляет возможность с помощью графического интерфейса визуально программировать сценарии и имеет все требуемые компоненты для решения большинства задач.

Верхняя панель #

| Название | Описание |
|---|---|
| Имя сценария | Отображается имя сценария |
| Код сценария | Отображается заданный код сценария |
| Тип сценария | ![]()
![]()
|
| Сохранить | Сохранение сценария |
Для запуска сценария или отмены изменений в информационой панеле нажмите на image::scripteditor/scripteditorarrow.png[Editrow]
Затем выберите нужно действие в контекстном меню выбора.

Основное окно #
Отображается последовательность выполнения компонентов сценария и условные переходы между ними.

Блок «Компоненты» #

Отображаются доступные компоненты и действия с ними. Для размещения компонента в основном окне необходимо
- выделить компонент в блоке компоненты
- нажать на место его размещения в основном окне
Изменение свойств компонента #
При выделении компонента в основном окне справа отображаются его свойства.
У каждого компонента свои свойства. Подробно они описаны в описании каждого компонента в главе Компоненты сценариев.

Блок действий #
В блоке компонент в верхней строке располагается блок Действий.

В этот блок входят:
- Выделение — дефолтное действие управления компонентами в основном окне
- Связь — действие позволяет управлять связями между компонентами
- Перемещение области — действие, позволяющее перемещать видимую область
- Комментарий — позволяет создавать область под компонентами с дополнительным комментарием
Выделение и перемещение #

Базовое действие при работе мышкой по Основному окну Используется для выделения и перемещения как одного объекта, так и группу выделенных объектов в основном окне редактора сценариев.

| При необходимости выделить несколько компонент вне одной области можно использовать Shift+click |
| Если во время перемещения нажать и удерживать Ctrl, то перемещение будет по вершинам скрытой сетки |
Для копирования выделенных компонент можно использовать контекстное меню (по правой кнопке мыши)

Все свойства и переходы будут скопированы, кроме переходов в выделенную группу и переходы из выделенной группы.
| Также можно использовать горячие клавиши Ctrl+C (копировать), Ctrl+X (вырезать), Ctrl+V (вставить) |
Связи между компонентами #

Каждый компонент, кроме финальных, имеет один или несколько Переходов.
Для создания связи между компонентами можно:
- в свойства компонента выбрать другие компоненты в полях перехода
- кликнуть на компоненте, зажать Ctrl и, удерживая кнопку мыши, вести к компоненту, на который будет переход
| Кнопка | Результат |
|---|---|
| Сtrl + левая кнопка мыши | image::scripteditor/ransitionblue.png[] |
| Сtrl + правая кнопка мыши | image::scripteditor/stransitionred.png[] |
Перемещение видимой области #

Используется для горизонтального и вертикального скроллинга в основном окне редактора сценариев.
Применяется когда сценарий большой и не помещается на видимую область. Также можно использовать стандартные полосы горизонтальной и вертикальной прокрутки в Основном окне.
| Для просмотра всей графической схемы нарисованного сценария можно использовать кнопку «уменьшения» в правом верхнем углу основного окна (появляется когда сценарий не помещается в видимую область) |
Комментарий #

Используется для выделения подложки под компонентами.
Свойства компонента:

| Название | Описание |
|---|---|
| Цвет текста | Цвет текста |
| Цвет фона | Цвет фона выделенной зоны |
| Текст | Комментарий, который будет выводится на выделенной зоне |
Управление переменными #
Переменная сценария – это величина, хранящая свое значение на всем протяжении выполнения сценария, включая запуск вложенных синхронных и асинхронных сценариев в рамках одной цепочки выполнения.
Переменные используются в сценарии для переноса значения из одних компонентов в другие. Например, для обращения к определенному файлу или текущее количество завершенных шагов цикла.
Окно управления переменными #
Посмотреть список всех переменных и управлять ими можно через кнопку переменные, расположенную в правой части навигации

Для Создания переменной необходимо:
- Задать Имя переменной. Допустимые символы:
- буквы русского
- буквы латинского алфавита цифры
- часть спецсимволов _ , . ! ?. Остальные спецсимволы возможны, но не рекомендуются. Спецсимвол не должен первым и последним символом в названии переменной
- Выбрать тип переменной:
- строка. Обработка будет как со строковой переменной
- число. Обработка будет как с числовым значением
- дата/время. Обработка будет как с параметром Дата/Время
- Выбрать уровень доступности переменной

Подробнее о переменных написано в Переменные сценариев
| Можно в любом свойстве компонента, где требуется указать Переменную, ввести имя новой переменной и нажать на появившееся рядом «Создать» |
При работе с свойствами компонент и переменных необходимо присваивать им значения. Делается это через окно Аргумент

Закладка значение Аргумента #
Возможность ввода Константы или выбора Переменной.
При вводе Константы можно выбрать тип значения — Строка, Число или Дата/время.
Закладка Выражение #

На этой закладке с использованием Функции сценариев создаются Выражения.
После написания выражения необходимо кликнуть вне заны окна ввода Выражения и система проверит его орфографическую корректность. Если выражение содержит ошибку, то окно будет выделено красным цветом.
Иногда корректно написанное выражение дает ошибку при проверке, например, при len([some_string])-1. Это вызвано тем, что все переменные при проверке корректности нелевые. |
Закладка Шаблон #

На этой закладке с использованием Функции сценариев создаются Шаблоны.
Шаблоны и выражения имеют встроенный механизм перевода между собой. Иногда удобнее использовать закладку Выражения, иногда закладку Шаблон
При сохранении и при клике вне области ввода Шаблона система проверяет корректность вычисления и орфографии. В случае ошибки окно становится красным.
Правила хорошего тона #
Графический интерфейс создания сценариев предоставляет удобный и легкий в использовании инструментарий, отражающий концепцию Low-Code/No-Code. Но с другой стороны «некрасивое» рисование сценария приведет к сложностям дальнейшей модификации и понимания. Поэтому мы рекомендуем придерживаться следующих правил:
- Разбивать сценарии по функциональному предназначению. Можно все активности свести в один громоздкий сценарий, но стоимость любого изменения и возможной ошибки будет пропорционально количеству компонент
- Названия сценариев должны быть «говорящими»
- Префикс должен отражать прямое предназначение, проект, другую классификацию
- Основая часть имени должна нести смысловую нагрузку
- Постфикс можно использовать на номер версии, дату последнего релиза и т.п.
- Коды сценариев должны быть максимально сжатыми и отвечать единым правилам наименования. В пределе Код и Наименования могут совпадать, но обычно код меньше по количеству символов
- Планарность самого рисунка. Пересекаемые линии переходов сильно усложняют чтение картинки. Рекомендуется избегать пересечений или минимизировать их смысловое влияние на чтение сценария
- Использование Комментарий где можно выделить отдельно значимый блок. В описании указать что это за блок, какие функции он выполняет и в дальнейшем вести changeLog изменений в нем
- Оптимизация количества компонент. Не рекомендуется более 100 компонент в одном сценарии. Рекомендация крайне условная, но ей можно придерживаться при формальной оценке сложности сценария
- У компонент тоже должны быть «говорящие» названия. Не «Присвоение 3» (по пиктограмме видно что это Присвоение, а «i+1» или «увеличение счетчика i»
- Названия переменных так же важны. Не рекомендуется плодить множество переменных, но и ограничений нет. Используйте переменные и их наименования чтобы облегчить восприятие сценария
- После компонента Старт задать все начальные значения, которые являются константами и не получаются из Дефолтных значений объекта или из других переменных
- Отладочные компоненты настроены не на константы, а на переменные, которые можно изменить в начале сценария. Например, пользователь у компонента Уведомление
- Нет брошенных веток. Каждая ветка завершается компонентом Стоп или Отбой (Отправка SIP Bye пакета),Отбой или другим конечным компонентом
- При необходимости отладочных данных в работающем сценарии записывать их в Лог-файлы через Уведомление. После можно будет собрать логи и проанализировать выпонение разных экземпляров
- Использование компонента SQL-запрос только там, где данные принадлежат Oktell Studio (а не другой системе) или в случае, если сторонняя ИС не может предоставить WebService API доступ к данным
Рекомендации по этапам работы над сценариями
- Этап проектирования архитектуры разбиения ответственности за реализацию по сценариям
- Этап проектирования структуры сценария
- входные — выходные данные
- протоколы взаимодействия
- основные блоки и алгоритмы внутри сценария
- Этап разработки
- Этап отладки
- Этап приведения сценария в состояние релиза
- Этап оценки качества. Рекомендуем на этот этап привлекать инженера, кто не задействован в текущем проекте. Цель этапа — оценить читаемость сценария и насколько сторонний инженер сможет в нем разобраться через месяц-год



