Передача параметров из сценария в сценарий

bpm 5.4 on-site, как передать информацию в подпроцесс

например есть скрипт А и скрипт Б
как из скрипта А вызвать скрипт Б и передать в него текстовую строку?

Нравится

19 комментариев

Так всё таки передать параметр в подпроцесс, или из скрипта А вызвать скрипт Б?
В подпроцесс можно передать информацию, например, с помощью параметров бизнес-процесса.
Опишите ситуацию более подробно.

из скрипта А вызвать скрипт Б

Скрипт А и скрипт Б - это 2 функции "задание-сценарий"?

Нужно сделать так, чтобы каким-то образом при выполнении скрипта А, запустилась функция Б и пошло-поехало?
Или вам просто нужно вызвать какой-то вспомогательный метод, и после этого продолжить выполнение скрипа А?

Здравствуйте, Илья!

В бизнес процессе можно добавить параметры и методы. А потом просто вызывать их из Вашего скрипта.

"Яландаев Евгений" написал:

Скрипт А и скрипт Б - это 2 функции "задание-сценарий"?

Нужно сделать так, чтобы каким-то образом при выполнении скрипта А, запустилась функция Б и пошло-поехало?
Или вам просто нужно вызвать какой-то вспомогательный метод, и после этого продолжить выполнение скрипа А?

да надо из А просто запустить скрипт Б и передать в скрипт Б параметр

"Резниченко Сергей" написал:

Здравствуйте, Илья!

В бизнес процессе можно добавить параметры и методы. А потом просто вызывать их из Вашего скрипта.

С уважением,
Резниченко Сергей
Специалист 2-й линии поддержки

я в процессах и сздал сценарий, а как создать сценарий с параметром не нашел

Илья, задание-сценарий это void метод, принимающий в качестве параметра контекст выполнения. Поэтому конкретному заданию Вы параметр передать не сможете. Но можете определить параметр на уровне процесса (в соответствующей ветке структуры) и использовать его значение внутри задания, обращаясь к параметру по имени:

Не вижу нигде где можно создать параметр для скрипта.
вот скрин http://joxi.ru/zE7gU_3JTJD9B0uy32I
скрин

Здравствуйте, Илья!

Прочитайте, пожалуйста, внимательнее комментарий моего коллеги Максима

"Maxim Gritsenko" написал:

Илья, задание-сценарий это void метод, принимающий в качестве параметра контекст выполнения. Поэтому конкретному заданию Вы параметр передать не сможете. Но можете определить параметр на уровне процесса (в соответствующей ветке структуры) и использовать его значение внутри задания, обращаясь к параметру по имени:


Параметры задаются на уровне всего процесса.

Далее можно использовать данный параметр, обращаясь из скрипта к нему по имени.

Сделал параметр
вот скрин: http://joxi.ru/LV_gU_3JTJBlZPqSF_U
скрин

присваиваю параметру значение "авто" и запускаю скрипт ScriptTask10Execute
вот скрин http://joxi.ru/a1_gU_3JTJA-CC1SJLY
скрин

а вот проверяю значение этого параметра в скрипте ScriptTask10Execute
и не срабатывает условие, значит значение параметру не передалось
вот скрин условия http://joxi.ru/NGHgU4wyTJC6Aufx0g4
скрин

Как вы определяете, что условие не выполнилось?
Советую отлаживаться, так как представленная вами конструкция должна отрабатывать. А если не отрабатывает, необходимо смотреть в другие места, например, задание-сценарий называется не ScriptTask10.

1. Я точно знаю, что ScriptTask10Execute запустился, так как у меня там выполняются еще действия.
2. Как видите условие двойное, и условие Page.TextEdit5.Text=="авиа" срабатывает
3. скрипт так и называется ScriptTask10Execute, именно по этому имени он и вызывается, как видите на скриншоте именно такое и есть название

Проверьте, не меняется ли значение до момента проверки. Выведите значение параметра в текстовый файл или в панель уведомлений непосредственно перед условием.
Лучше, конечно, пользоваться Visual Studio, это сэкономит время.

"Maxim Gritsenko" написал:

Проверьте, не меняется ли значение до момента проверки. Выведите значение параметра в текстовый файл или в панель уведомлений непосредственно перед условием.

напомните как выводить в файл и как вывести сообщение

"Maxim Gritsenko" написал:

Лучше, конечно, пользоваться Visual Studio, это сэкономит время.


нет студии и не умею ей пользоваться, если идти этим путём, то я завалю вас еще кучей вопросов и это будет намного дольше и не сэкономит времени

В файл можно вывести так:

System.IO.File.AppendAllText("C:\\debug.txt", VidPerevozkiParametr);

В панель уведомлений можно если это процесс страницы:

Page.BaseMessagePanel.AddMessage("Warning", VidPerevozkiParametr, MessageType.Warning);

изменил сценарий вызывающий

Page.TextEdit5.SetValue("авто");
VidPerevozkiParametr= "авто";
System.IO.File.AppendAllText("C:\\debug.txt", "перед входом в сценарий "+VidPerevozkiParametr+"\n");
ScriptTask10Execute(context); // скрыть линее в зависимости от вида
System.IO.File.AppendAllText("C:\\debug.txt", "до входа в сценарий "+VidPerevozkiParametr+"\n");
return true;

и сценарий принимающий

System.IO.File.AppendAllText("C:\\debug.txt", "в сценарии"+VidPerevozkiParametr+"\n");
...

В файл попадает только вот что:

в сценарии

Если это полное содержимое файла, то очевидно, что у вас не выполняется первый скрипт-таск.

Но второй скрипт вызывается из первого!!! И больше ниоткуда не вызывается!!! Значит по логике первый тоже выполняется, тем более присвоение из первого скрипта выполняется!!!

Page.TextEdit5.SetValue("авто");

В таком случае остается только отладиться.
Рекомендую к ознакомлению:
BPMonline: отладка конфигурации On-Site для 5.X
Отладка в Visual Studio

Показать все комментарии