Написал уже кучу глобальных скриптов, половина из которых запускается периодически через шедулер.
У каждого скрипта есть определённые настройки, которые нужно где-то хранить.
В коде их хранить не очень удобно:
1. Для скриптов, запускающихся руками постоянно нужно менять код и перекомпилировать. А у меня ещё и git туда прикручен - совсем неудобно получается.
2. Для скриптов, запускающихся в планировщике, может быть ситуация, когда один и тот же скрипт нужно запускать в разное время с разными параметрами. Например, для разных модулей.
Сейчас единственный вариант сделать такое - прописывать параметры прямо в глобальном конфиге сервера и получать их из setup.
В итоге имею примерно такой гадюшник:
Код:
script.ipvpntoinet.excludeIfaces.13=10537
script.ipvpntoinet.excludeIfaces.21=1606
script.ipvpntoinet.deviceType.serviceLinkPlan.servType.3.4=1
script.ipvpntoinet.deviceType.serviceLinkPlan.servType.3.5=3
script.ipvpntoinet.deviceType.serviceLinkPlan.servType.3.119=5
script.ipvpntoinet.deviceType.serviceLinkPlan.servType.4.4=2
script.ipvpntoinet.deviceType.serviceLinkPlan.servType.4.5=4
script.ipvpntoinet.deviceType.serviceLinkPlan.servType.4.119=6
script.ipvpntoinet.deviceType.serviceLinkPlan.servType.5.4=2
script.ipvpntoinet.deviceType.serviceLinkPlan.servType.5.5=4
script.ipvpntoinet.deviceType.serviceLinkPlan.servType.5.119=6
script.ipvpntoinet.sources.50=3
script.ipvpntoinet.sources.51=5
script.ipvpntoinet.sources.53=6
script.ipvpntoinet.sources.23=7
script.ipvpntoinet.sources.7=8
script.ipvpntoinet.sources.9=9
script.ipvpntoinet.sources.27=10
script.ipvpntoinet.sources.26=11
script.ipvpntoinet.sources.12=12
script.ipvpntoinet.sources.15=13
script.ipvpntoinet.sources.13=14
script.ipvpntoinet.sources.5=15
script.ipvpntoinet.sources.17=16
script.ipvpntoinet.sources.10=31
script.ipvpntoinet.sources.36=20
script.ipvpntoinet.sources.37=21
script.ipvpntoinet.sources.32=23
script.ipvpntoinet.sources.25=26
script.ipvpntoinet.sources.28=28
script.ipvpntoinet.sources.21=30
- и это только для одного скрипта
Потом ещё нужно будет чистить глобальный конфиг на предмет устаревших скриптов.
Было бы хорошо иметь возможность задать в конфиге задачи планировщика "Выполнение глобальных скриптов по таймеру" входные параметры для глобального скрипта:
Код:
tids=28
#type: 0 - bsh, 1 - java
type=1
#параметры скрипта
params.mid=1
params.user=admin
params.password=12345
А скрипт получал бы mid, user и password через метод класса GlobalScriptBase:
Код:
public ParameterMap getParams();
Для ручного запуска можно завести отключенную периодическую задачу и запускать вручную ("Выполнить сейчас").