Пакетное выполнение сценариев
Пакетный режим — исполнение Cценариев Пакета без отображения какого-либо пользовательского интерфейса и вывода сообщений на экран. Обычно результатом выполнения пакета при этом является формирование итоговых данных и передача их в стороннюю систему (например, в хранилище данных или другую учетную систему).
Пакетное выполнение cценариев осуществляется при помощи утилиты BatchLauncher, поставляемой в комплекте с сервером Loginom версий Team, Standard, Enterprise. При установке по умолчанию утилита располагается по пути:
Для Windows:
"C:\Program Files\Loginom\Server\BatchLauncher.exe".
Для Linux:
"/opt/loginom/server/BatchLauncher"
Важно: BatchLauncher работает синхронно с сервером и ждёт завершения процесса. Если BatchLauncher закрыть, то в Loginom Server отменится соответствующий процесс.
Синтаксис строки запуска в пакетном режиме:
Для Windows:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=<FileName> [/Teach] [/Deactivate=<Value>] [/Node=<NodeName>] [/Address=<Address>] [/Port=<Port>] [/UserName=<UserName> [/Password=<Password>]] [/VarName=<Value>] [/PortName.VarName=<Value>] [/Save]
Для Linux (native):
/opt/loginom/server/BatchLauncher -package=<FileName> [-teach] [-deactivate=<Value>] [-node=<NodeName>] [-address=<Address>] [-port=<Port>] [-userName=<UserName>] [-password=<Password>] [-vаrname=<Value>] [-portname.varname=<Value>] [-save]
Для Linux (docker):
docker exec -it loginom-server /app/BatchLauncher -package=<FileName> [-teach] [-deactivate=<Value>] [-node=<NodeName>] [-address=<Address>] [-port=<Port>] [-userName=<UserName>] [-password=<Password>] [-vаrname=<Value>] [-portname.varname=<Value>] [-save]
Для Linux (podman):
podman exec -it loginom-server /app/BatchLauncher -package=<FileName> [-teach] [-deactivate=<Value>] [-node=<NodeName>] [-address=<Address>] [-port=<Port>] [-userName=<UserName>] [-password=<Password>] [-vаrname=<Value>] [-portname.varname=<Value>] [-save]
Где:
/Package, /Teach, /Deactivate, /Node, /Address, /Port, /UserName, /Password, /PortName.VarName, /VarName, /Save — параметры запуска в пакетном режиме.
Несколько параметров в строке запуска разделяются символом пробела.
Пример:
Для Windows:
"C:\Program Files\Loginom\Server\BatchLauncher.exe" /Package=test.lgp /Teach
Описание параметров
Package
Путь к файлу пакета внутри файлового хранилища. Обязательный параметр.
Примеры:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp
"C:/Program Files/Loginom/Server/BatchLauncher.exe" "/Package=/user/test and log.lgp"
Node
Имя узла, который необходимо выполнить. При этом выполняются указанный узел и все предшествующие ему узлы — то есть все узлы, которые необходимо выполнить для формирования его входных данных. Узел не должен находиться в Подмодели. Если параметр не указан, то выполняются все узлы Пакета, для которых заданы необходимые настройки режима активации.
Примечание: имя узла задается при настройке модификатора доступа.
Примеры:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp "/Node=executable node"
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp /Node=executable_node
PortName.VarName
Используется для задания значений входных Переменных узла, определенного параметром /Node.
- PortName — наименование порта;
- VarName — наименование переменной, значение которой необходимо задать в строке запуска.
Примеры:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp /Node=test_node /Port1.Parameter1=true
/Port1.Parameter2=2008-01-02T22:24:24 "/Port2.Parameter1=Hello World!" /Port2.Parameter2=null /Port2.Parameter3=3.14 /Port2.Parameter4=4.025E4
Можно не указывать наименование порта (например: /Parameter1=true, однако, если переменная с указанным таким образом именем присутствует в нескольких портах, то возникнет исключение. Ошибка так же возникнет, если указано имя несуществующей переменной.
Важно: все незарезервированные параметры в строке запуска интерпретируются как параметры установки значений переменных.
Исходное строковое значение, указанное в командной строке, конвертируется к типу данных целевой переменной:
- Если исходное строковое значение равно null (с учётом регистра), то целевая переменная получает пустое значение независимо от её типа данных.
- Если целевая переменная имеет тип Логический, Целый, Вещественный или Дата/Время, то исходное строковое значение конвертируется по правилам соответствующего типа, причём для Вещественного типа используется десятичный разделитель . (точка). Для Даты/Времени используется подмножество форматов ISO 8601: "YYYY-MM-DD", "YYYY-MM-DDThh:mm[:ss[.zzz]]", "hh:mm[:ss[.zzz]]". Допустимыми значениями Логического типа считаются true и false (без учёта регистра).
- Если целевая переменная имеет Строковый тип, то преобразование типа данных не выполняется. Если исходное значение заключено в одинарные кавычки, то эти кавычки разэкранируются, в противном случае исходное значение присваивается в переменную без изменений.
- Если целевая переменная имеет Переменный тип, то происходит попытка поочерёдно преобразовать исходное строковое значение к типам Логический, Целый, Вещественный и Дата/Время, причём если ни одно из этих преобразований не удалось, то целевая переменная получает строковое значение.
- Для переменных типа Вещественный и Переменный в качестве параметров можно передавать экспоненциальную форму записи числа (пример: 4.205E2, 4.205E-2).
Пример:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp /Node=test_node /Var0=null /Var1=True /Var2=1 /Var3='1' /Var4='null' /Var5= /Var6=test /Var7='te''st' /Var8="test" "/Var9=a b c"
Если все переменные имеют Переменный тип, то они получат следующие значения:
Var0 — пустое значение;
Var1 — логическое значение true;
Var2 — целое значение 1;
Var3 — строковое значение 1;
Var4 — строковое значение null;
Var5 — пустая строка;
Var6 — строковое значение test;
Var7 — строковое значение te'st;
Var8 — строковое значение "test";
Var9 — строковое значение a b c.
Deactivate
Используется для настройки автоматической цепной деактивации групп узлов после их полного выполнения для освобождения используемой сценарием памяти.
Деактивация узлов включается после разблокирования узла в процессе активации. При этом проверяется, есть ли у узла потомки (узлы, подсоединенные к выходным портам узла, за исключением связанных через порт порядка выполнения) и не является ли узел выходным узлом Подмодели. При отсутствии потомков и, если узел не является выходным узлом Подмодели, запускается процесс деактивации узлов в обратном порядке.
В список узлов для деактивации не попадают узлы, если к их выходным портам подключены активные или активирующиеся узлы, которые еще не были внесены в список узлов для деактивации. В этом случае деактивация узлов не будет конкурировать с их активацией в параллельных ветках сценария.
Порядок выполнения узлов не влияет на порядок их автоматической деактивации, то есть при попытке деактивировать узел также деактивируются все его потомки, за исключением связанных через порт порядка выполнения.
Передача деактивации узлов по цепочке работает по ссылкам, за исключением случаев, когда они ссылаются на узлы из общих пакетов.
Если через BatchLauncher требуется задать значение переменной deactivate, то для этого следует использовать ключи вида:
/.Deactivate=Value— для переменной пакета;/PortName.Deactivate=Value— для переменной узла, находящейся внутри порта с именемPortName.
Важно:
- Параметр
Valueпринимает значения толькоTrueилиFalse.- Опция
/Deactivate=Falseгарантированно отключает автоматическую деактивацию (даже если она выставлена в настройках пакета/сервера). Аналогично/Deactivate=Trueгарантированно включает ее. Использование опции без значения (/Deactivate) идентично записи/Deactivate=True.
Пример:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp /Teach /Deactivate=True
VarName
Используется для задания значений Переменных пакета.
Для того чтобы задать значение переменной, необходимо указать параметр формата:
/VarName=Value./.VarName=Value— используется, если имя переменной совпадает с именем, зарезервированным параметром BatchLauncher (например,PackageилиUserName),
где:
VarName— наименование переменной, значение которой необходимо задать в строке запуска;Value— значение переменной.
Примечание: нельзя устанавливать значения переменных, которые доступны "Только для чтения".
Пример:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp /Var0=null /Var1=True /Var2=1 /Var3='1' /Var4='null' /Var5= /Var6=test /Var7='te''st' /Var8="test" "/Var9=a b c"
Teach
Запуск пакета в режиме «Обучение». Если параметр не указан, то пакет запускается в режиме «Выполнение».
Пример:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp /Teach
Address
IP адрес или имя хоста сервера Loginom. По умолчанию используется localhost.
Пример:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp /Address=192.168.0.95
Port
Порт, по которому происходит обращение к серверу Loginom. По умолчанию используется 4580.
Пример:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp /Address=192.168.0.95 /Port=4555
UserName
Имя пользователя. Если параметр не указан, то используется пользователь по умолчанию service. Если пользователя service удалить, то необходимо обязательно указывать параметр UserName.
Пример:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp /UserName=user
Password
Пароль пользователя. Если параметр не указан, то используется пустой пароль.
Пример:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=/user/test.lgp /UserName=user /Password=12345
Save
При наличии этого параметра пакет будет сохранён на диск после выполнения или переобучения.
Если при выполнении пакета возникнет ошибка, то он не будет сохранен.
Пример:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" /Package=test.lgp /Teach /Save
Важно: при использовании пробельных символов в выражении, задающем значение параметра, все выражение необходимо заключить в двойные кавычки.
Пример:
"C:/Program Files/Loginom/Server/BatchLauncher.exe" "/Package=/user/Quantization training/Quantization.lgp" /Teach /UserName=user