Редактор сценариев
Все сценарии настраиваются в модуле Редактор сценариев (scripteditor). Модуль предоставляет возможность с помощью графического интерфейса визуально программировать сценарии и имеет все требуемые компоненты для решения большинства задач.
 
Верхняя панель
 
| Название | Описание | 
|---|---|
| Имя сценария | Отображается имя сценария | 
| Код сценария | Отображается заданный код сценария | 
| Тип сценария |   
   
 | 
| Сохранить | Сохранение сценария | 
Для запуска сценария или отмены изменений в информационой панеле нажмите на 
Затем выберите нужно действие в контекстном меню выбора.
 
Основное окно
Отображается последовательность выполнения компонентов сценария и условные переходы между ними.
 
Блок "Компоненты"
 
Отображаются доступные компоненты и действия с ними. Для размещения компонента в основном окне необходимо
- 
выделить компонент в блоке компоненты 
- 
нажать на место его размещения в основном окне 
Изменение свойств компонента
При выделении компонента в основном окне справа отображаются его свойства.
У каждого компонента свои свойства. Подробно они описаны в описании каждого компонента в главе Компоненты сценариев.
 
Блок действий
В блоке компонент в верхней строке располагается блок Действий.
 
В этот блок входят:
- 
Выделение - дефолтное действие управления компонентами в основном окне 
- 
Связь - действие позволяет управлять связями между компонентами 
- 
Перемещение области - действие, позволяющее перемещать видимую область 
- 
Комментарий - позволяет создавать область под компонентами с дополнительным комментарием 
Выделение и перемещение
 
Базовое действие при работе мышкой по Основному окну Используется для выделения и перемещения как одного объекта, так и группу выделенных объектов в основном окне редактора сценариев.
 
| При необходимости выделить несколько компонент вне одной области можно использовать 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 доступ к данным 
Рекомендации по этапам работы над сценариями
- 
Этап проектирования архитектуры разбиения ответственности за реализацию по сценариям 
- 
Этап проектирования структуры сценария - 
входные - выходные данные 
- 
протоколы взаимодействия 
- 
основные блоки и алгоритмы внутри сценария 
 
- 
- 
Этап разработки 
- 
Этап отладки 
- 
Этап приведения сценария в состояние релиза 
- 
Этап оценки качества. Рекомендуем на этот этап привлекать инженера, кто не задействован в текущем проекте. Цель этапа - оценить читаемость сценария и насколько сторонний инженер сможет в нем разобраться через месяц-год 
 
