3.3.5. Скрипты интерпретатора как объекты приложения

Как уже говорилось ранее, в новой версии Synergy мы интегрировали пакет Интерпретатора JavaScript в платформу. При этом общие настройки скриптов выполняются в Настройках платформы, а сами скрипты создаются в отдельных приложениях.

Для того, чтобы создать новый скрипт в приложении, нужно выделить папку, в которой он будет расположен, и выбрать пункт меню «Объект - Добавить - Интеграция - Скрипт интерпретатора», или в контекстном меню папки выбрать пункт «Добавить - Интеграция - Скрипт интерпретатора».

Откроется редактор свойств скрипта:

Рисунок 3.75. Создание нового скрипта интерпретатора

Создание нового скрипта интерпретатора

Для скриптов как объектов приложения мы добавили поле «Код», которое заполняется автоматически при вводе названия.

При этом для вновь создаваемых скриптов поле «Название» предзаполнено значением, установленным в настройке «Префикс скрипта по умолчанию».

После сохранения в папке приложения появится нода, соответствующая созданному скрипту, и ее дочерняя нода script.js, содержащая непосредственно код:

Рисунок 3.76. Нода скрипта в навигаторе

Нода скрипта в навигаторе

Скрипт интерпретатора - сложный объект, и поэтому он, как и форма, и пользовательский компонент, содержит внутренние вкладки. У объекта есть ровно две внутренние вкладки: редактор свойств и редактор кода:

Рисунок 3.77. Редактор кода

Редактор кода

При этом у вкладки с редактором кода справа есть разворачивающаяся панель с подсказками:

Рисунок 3.78. Панель подсказок развернута

Панель подсказок развернута

Для написанного кода можно выполнить пробный запуск. Для этого нужно в редакторе свойств заполнить группу полей «Настройки пробного запуска», потом нажать на клавишу F8 или на кнопку «Запустить».

3.3.5.1. Возможность обработки событий Synergy с помощью интерпретатора

В новой версии мы добавили возможность обработки внутренних событий Synergy с помощью интерпретатора. Скрипт интерпретатора будет вызываться при наступлении события, если название скрипта совпадает с названием этого события. Например, если необходимо обработать событие [event.workflow.work.create] создания работы, нужно в одном из приложений Synergy создать скрипт интерпретатора с названием event.workflow.work.create.

Сведения о событии можно получить из предопределенной переменной message:

var message = {
  "content": "text of jms message",
  "props": {
     "prop1": "prop1 of jms message",
     "prop2": "prop2 of jms message"
  }
}

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

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

console.error("content {}", [message.content]);
console.error("props {}", message.props);

console - это объект класса org.slf4j.Logger со всеми публичными методами. Название у логгера - interpreter.${название скрипта}.