Как предотвратить застревание UiPath в Call Macro Stage? - PullRequest
1 голос
/ 22 мая 2019

Я вызываю макрос, используя макрос вызова в UiPath Workflow. Беспокойство вызывает то, что один из примеров того, что дескрипторы макроса будут зависать навсегда, приводя к зависанию выполнения макроса, и процесс застревает в макросе Call навсегда.

Можно ли как-то изменить рабочий процесс UiPath, чтобы, если в течение 15 минут макрокоманда Call не была завершена, бот выдал исключение?

Ответы [ 2 ]

2 голосов
/ 22 мая 2019

Есть способ сделать это, позвольте мне попытаться представить его вам:

Вам понадобятся 3 переменные для вашего решения, как показано ниже:

  1. Одна для храненияваше время ожидания, пока исключение не будет выброшено, типа TimeSpan
  2. Один, чтобы объявить время начала вашего текущего типа выполнения DateTime
  3. Один ксообщить, было ли превышено время ожидания исполнения по умолчанию или нет тип Boolean

enter image description here

Затем необходимо использовать Параллельное действие , где на Область приложения Excel и Выполнение макроса будет выполняться вместе с Циклом while , который будет постоянно сравнивать время запуска и вашеустановить время ожидания.Если оно превысит установленное значение времени по умолчанию, будет сгенерировано исключение.Проверьте пример решения ниже:

enter image description here

В этом случае, потому что мы окружаем Параллельно Действие в Try-Catch block, вам необходимо указать выражение исключения в Catches разделе, так как Throw будет перезаписано на Catches , как показано ниже:

enter image description here

Второй вариант - сделать это без Try-Catch , тогда появится исключение Throw , проверьте решение ниже:

enter image description here

Также необходимо изменить действие Бросок , установив сообщение об исключении соответствующим образом, как показано на рисунке ниже:

enter image description here

Надеюсь, это будет полезно.

0 голосов
/ 22 мая 2019

Вы можете заключить макрос вызова в параллель, где у вас во второй ветви есть задержка и исключение Броска. Задержка должна соответствовать желаемому значению тайм-аута, то есть 15 минут.

Вам также необходимо иметь локальную переменную типа boolean в качестве входных данных для свойства условия в параллели. Когда / если вызов макроса возвращается, вы устанавливаете для этого логического значения значение True, что, в свою очередь, отменяет ветвь задержки.

Таким образом, если выдается исключение, параллель завершается, и рабочий процесс продолжается. Основываясь на желаемом поведении, вы можете захотеть обернуть параллель в try-catch.

...