Глобальные скрипты
Глобальные скрипты предоставляют пользователю биллинга возможность выполнения произвольного кода для взаимодействия с API ABilling без привязки к событийной модели. Глобальные скрипты могут быть использованы как для однократного выполнения некоторого сложного взаимодействия с данными (что сложно было бы реализовать возможностями SQL-редактора), так и для периодического (об этом см. ниже).
Для доступа к глобальным скриптам необходимо открыть меню Сервис⇒Автоматизация⇒Глобальные скрипты поведения. В открывшейся вкладке представлено две вкладки - Скрипты и Логи. Во вкладке Скрипты представлено две вкладки: Классы Java и Скрипты BGBS.
Вкладка Логи отображает информацию о выполнении скрипта. Абсолютно идентична логам событийных скриптов в карточке договора (см. здесь).
Глобальные скрипты с использованием динамических классов Java
Во вкладке Классы Java расположен список всех доступных глобальных скриптов, привязанных к динамически загружаемым классам. Для создания, удаления и редактирования скриптов необходимо воспользоваться соответствующими кнопками панели инструментов. Двойной щелчок по уже созданному скрипту также открывает редактор.
Как и в случае со скриптами поведения, вместо редактора кода скрипта представлена панель привязки динамического класса к глобальному скрипту.
Класс, привязанный к глобальному скрипту, должен расширять базовый класс ru.avantis.abilling.kernel.script.server.dev.GlobalScriptBase. Для однократного выполнения глобального скрипта необходимо нажать на кнопку Выполнить скрипт. Выполнение скрипта происходит асинхронно. Результат выполнения скрипта логируется (см. вкладку Логи).
Глобальные скрипты на языке BGBS
Во вкладке Скрипты BGBS отображен список всех доступных скриптов. Для создания, удаления и редактирования скриптов необходимо воспользоваться соответствующими кнопками панели инструментов. Двойной щелчок по уже созданному скрипту открывает редактор.
При создании/редактировании скрипта должны быть соблюдены следующие условия. Во-первых, обязательно должно быть задано имя скрипта. Во-вторых, тело скрипта обязательно должно содержать функцию main, как представлено на скриншоте выше. В функцию main передаются следующие аргументы:
-
con - объект типа java.sql.Connection - соединение с базой биллинга;
-
conSlave - объект типа java.sql.Connection - соединение с Slave базой биллинга либо Master, если ее нет;
-
setup - объект класса ru.avantis.abilling.server.util.DefaultServerSetup - конфигурация сервера биллинга.
Для однократного выполнения глобального скрипта необходимо (предварительно его сохранив) нажать на кнопку Выполнить скрипт. Выполнение скрипта асинхронно. Результат выполнения скрипта логируется (см. вкладку Логи).
Периодическое выполнение глобальных скриптов
Для периодического выполнения глобальных скриптов необходимо в Сервис⇒Администрирование⇒Планировщик заданий создать задачу планировщика "Выполнение глобальных скриптов по таймеру".
В качестве параметра для задачи необходимо указать tids=X,Y,Z, где X,Y,Z - коды скриптов, перечисленные через запятую.
По причине появления глобальных скриптов двух типов (BGBS и Java) был добавлен опциональный флаг type, обозначающий желаемый тип выполняемого глобального скрипта. При type=0 (по умолчанию) в качестве скриптов выполняются соответствующие указанным кодам скрипты на BGBS, в случае же type=1 - на Java.
Возможны случаи, когда внутри выполняемых глобальных скриптов используется commit для соединений с БД, либо commit вызывается внутри api биллинга, при установленной опции autocommit=true у соединения с БД. Для предотвращения ошибок по умолчанию для данной задачи установлен autocommit=false в соединении с БД. Чтобы изменить поведение по умолчанию используйте опцию задачи autocommit=, которая может принимать 2 значения: true или false.