Темплейт Robotic Enterprise Framework в UiPath по умолчанию настроен так, чтобы продолжать выполнение процесса, если Оркестратор недоступен. При этом в лог отправляются предупреждения о каждом asset-e, который UiPath не смог вычитать. Это хорошо только в том случае, если у вас есть значения всех переменных в локальном файле Config.xlsx, но если все данные хранятся в asset-ах, то такой подход может привести к неприятным последствиям.
Вот как выглядит внутренность цикла For..Each для вычитки asset-ов:
Если во время вычитки какого-либо одного или всех asset-ов возникнет проблема, то всё, что мы получим, — это ворнинг в логе. Представим себе, что у нас есть переменная tempFolder, которая содержит путь к папке, которая очищается при каждом запуске процесса. Также этот путь различный для каждого робота, а потому на вкладке Settings файла Config.xlsx значение для этой переменной не указано.
В результате в переменную tempFolder попадет пустое значение, а пустое значение пути соответствует текущей папке, где находится всё содержимое проекта. Процесс попытается очистить текущую папку, сумеет грохнуть несколько файлов и свалится при попытке удалить заблокированные процессом UiPath.exe файлы. С такими ситуациями обычно тяжело разбираться, а потому необходимо явно останавливать процесс, если при вычитке asset-ов произошла ошибка.
Если попросту заменить активити Log Message на Throw, то станет ещё хуже, так как весь блок For..Each тоже обёрнут в Try..Catch, при этом в случае исключения в лог помещается уже не Warning, а Trace, еще больше усложняя анализ проблемы. Поэтому лучше всего избавиться от обоих блоков Try..Catch и оставить простую конструкцию:
Теперь процесс остановится в самом начале, не сумев вычитать хотя бы один asset и не пытаясь выполнять какие-либо дальнейшие действия.
И напоследок несколько вариантов ошибок, которые могут случаться при вычитке asset-ов:
- Loading asset failed: Orchestrator information is not available. Please check if UiPath Robot Service is started.
- Loading asset failed: Could not find an asset with this name. Error code: 1002
- Get Orchestrator asset: The remote name could not be resolved: ‘cloud.uipath.com’
- Get Orchestrator asset: Unable to connect to the remote server
- A task was canceled
Последняя ошибка наиболее интересна, так как случается редко и обычно происходит из-за того, что с серверами Orchestrator-a что-то не в порядке.