...
loopServ(имя_параметра_шаблона_команды, использовать_в_цикле_родительский_сервис, выполять_как_отдельную_команду_или_построить_строку) - способ выполнения команд с использованием дочерних сервисов; выполняется цикл для всех дочерних сервисов, а также для родительского, если второй агрумент равен true; шаблоном команды является значение параметра, имя которого прописано в первом агрументе; выполняются как отдельные команды (true) или возвращается конкатенированная строка с указанным разделителем
Блок кода language groovy m_ipLoop=${net()} sa.commandSet.staticIP.serv.create.1=/queue/simple/remove\n=numbers=${contractId()}:${servId()} sa.commandSet.staticIP.serv.create.2=/queue/simple/add\n=name=${contractId()}:${servId()}\n=target=127.0.0.1/32,${loopServ('m_ipLoop', false, ',')}
Вызовы других наборов команд через макросы
Для каждого события есть три набора команд: "перед вызовом обычного набора", "обычный набор", "после вызова обычного набора". Например, sa.terminal.serv.modify, sa.terminal.serv.modify.before, sa.terminal.serv.modify.after. Наборы команд .before и .after предназначены в основном для вызова других наборов команд и изменения логики работы, в зависимости от ситуации. Например, стандартная предопределенная конфигурация выглядит так:
Блок кода | ||||
---|---|---|---|---|
| ||||
# После выполнения команд создания сервиса вызываем команды включения сервиса (serv.enable=) и опций (inetOption.x.enable=), если сервис должен быть включен
# или команды выключения сервиса (serv.disable=), если сервис должен быть отключен
sa.terminal.serv.create.after=${(newState()==1)?(serviceEnable()+optionsEnable()):serviceDisable()}
# Перед выполнением команд изменения сервиса (serv.modify=), если произошло включение сервиса - вызываем команды включения сервиса (serv.modify.enable=) и опций (inetOption.x.enable=)
sa.terminal.serv.modify.before=${(newState()==1&&oldState()!=1)?(serviceEnable()+optionsEnable()):''}
# после (serv.modify=), если произошло отключение сервиса - сначала отключаем опции (inetOption.x.disable=), затем - сервис (serv.modify.disable=);
# иначе, если переключения состояния нет - вызываем переключение опций (inetOption.x.disable= и (inetOption.x.enable=))
sa.terminal.serv.modify.after=${(newState()!=1)?(optionsDisable()+serviceDisable()):''};${(newState()==1&&oldState()==1)?(optionsSwitch()):''}
# Перед удалением сервиса вызываем команды отключения опций и отключения сервиса
sa.terminal.serv.cancel.before=${optionsDisable()+serviceDisable()}
# Перед выполнением команд изменения соединения, если произошло включение сервиса - вызываем команды включения сервиса и опций
sa.terminal.connection.modify.before=${(newState()==1&&oldState()!=1)?(connectionEnable()+optionsEnable()):''}
# после, если произошло отключение соединения - сначала отключаем опции, затем - соединение; иначе, если переключения состояния нет - вызываем переключение опций для соединения
sa.terminal.connection.modify.after=${(newState()!=1)?(optionsDisable()+connectionDisable()):''};${(newState()==1&&oldState()==1)?(optionsSwitch()):''}
# Перед выполнением команд старта соединения (sa.terminal.connection.onAccountingStart), если соединение должно быть отключено - выполняем команды
# отключения (sa.terminal.connection.modify.disable), иначе - выполняем команды включения (sa.terminal.connection.modify.enable)
sa.terminal.connection.onAccountingStart.before=${(newState()!=1)?(connectionDisable()):(connectionEnable())}
# После выполнения команд старта соединения, если соединени включено - вызываем команды включения опций соединения
sa.terminal.connection.onAccountingStart.after=${(newState()==1)?(optionsEnable()):''}
# Перед выполнением команд стопа соединения (sa.terminal.connection.onAccountingStop), если соединение было включено - вызываем команды отключения опций
sa.terminal.connection.onAccountingStop.before=${(oldState()==1)?(optionsDisable()):''} |
Макросы serviceEnable(), serviceDisable(), connectionEnable(), connectionDisable(), connectionClose(), optionsEnable(), optionsDisable() вызывают соответствующие наборы команд. optionsSwitch() - вызывает наборы команд на отключение для старых опций и включение для новых. newState() и oldState() возвращают текущее и новое состояние сервиса или соединения, значения -1 - удален (для сервиса), 0 - отключен, 1 - включен.