Найти тему

Что делать, если у робота кончились кубики? Расширение функциональности RPA платформы UiPath

Оглавление

Оригинал статьи опубликован на Habr 25 марта 2019

Моя предыдущая статья была написана, в первую очередь, для менеджеров проектов и руководителей направления RPA. Эту статью я хотел бы адресовать, в первую очередь, программистам на платформе UiPath, которым приходится с роботизацией сталкиваться face-to-face.

Первые несколько процессов, которые приходится создавать новоиспеченному программиста RPA, обычно обходятся набором стандартных "кубиков", которые лежат в коробке с платформой. Но что если их не хватает? Почти любую современную платформу RPA можно тем или иным способом расширить, будь то вызов метод DLL в AA, код на Groovy в WF или Code Stage в BP.

Хотя некоторые вещи в статье достаточно банальны и их можно узнать, пройдя соответствующие курсы в UiPath Academy, почитав документацию или изучив форум, как мне кажется, многим будет полезно увидеть их в одном месте, в виде статьи на русском языке. Если у вас появятся дополнения или замечания - я постараюсь статью доработать, чтобы она была максимально полезной и актуальной.

Способы расширения функциональности в статье идут от самого простого (скачать готовое) к самому сложному (написать свое).

Магазин приложений

Хитовые решения на UiPath Go!
Хитовые решения на UiPath Go!

С конца 2018 года у UiPath есть что-то вроде "магазина приложений", который называется UiPath Go!. Разработчики со всего света, и, в том числе, сами сотрудники компании, делятся полезными (или не очень) пользовательскими действиями, кусками кода, шаблонами для приложений и другими полезными разработками, которые значительно упрощают жизнь.

Там есть много всякого, например отличный коннектор к Salesforce, который берет на себя львиную долю работы или написанный самим Abbyy коннектор к Abby Flexicapture.

Сейчас это рекомендованный самим производителем способ расширения функциональности, более того, туда уже началась миграция расширений, которые раньше жили в официальном репозитории NuGet (Галерее).

В PackageManager смотрели?

UiPath PackageManager
UiPath PackageManager

Немножко более хардкорный, но, все еще, вполне доступный обычному пользователю, способ - это использование функционала менеджера пакетов.

Реализован он через NuGet, а значит, что помимо использования "общественных" репозиториев, никто нам не мешает поднять свой и использовать его внутри компании для распространения действий и библиотек собственной разработки.

Ищем в менеджере пакетов по ключевому слову UiPath и получаем большое количество разных действий, которые резко увеличивают наши возможности, не требуя от нас никаких усилий.

Таким образом, сейчас, распространяются, в том числе и вполне официальные компоненты платформы, такие как Web Activities Pack (для работы с SOAP и REST API), Word (на основе Xceed DocX) или Zip (для работы угадайте с чем).

Через Invoke Code

Самый простой и быстрый способ добавить функциональность в ваш процесс, если не хватает готовых "кубиков" и не удалось их найти.

Можно написать небольшой кусок кода на VB.Net и вставить его в действие Invoke Code. Так можно, например, работать с хитрыми вызовами API на Rest, в случаях, когда стандартного UiPath.Web.Activities.HttpClient не хватает или использовать внешние библиотеки, такие как Xceed DocX или PdfSharp.

Не стоит увлекаться этим и другими подобными методами, если у вас больше чем 10 строчек кода внутри InvokeCode Хотя там и действует Intellisense и валидация, за поддержку таких "программ" коллеги вас не поблагодарят. Вынесите их в пользовательское действие или внешнюю программу, благо методов для этого достаточно.

Из похожего еще есть Invoke Method, который, в принципе, позволяет вызвать метод любого класса, который добавляется в проект через зависимости.

Например вот тут он используется для разархивирования архива

Пример использования Invoke Method
Пример использования Invoke Method

Через Invoke <еще что-нибудь>

Помимо "родного" VB.NET UiPath позволяет использовать и множество других методов программирования, как говорится "на все вкусы, на все нужды".

Powershell

Powershell Excel
Powershell Excel

Если не хватает VB.NET, на помощь приходят другие языки программирования. Например, с офисными приложениями, бывалому админу будет удобно работать через Powershell, и использовать, соответственно, действие Invoke Power Shell.

В том же Microsoft Outlook, например, можно бесконечно жать кнопки, чтобы сделать то, что с помощью PS делается парой команд.

COM-объекты

В современных системах потребность в этом, конечно, уже не так велика, но с помощью Invoke COM Method можно обратится к функциональности, зарытой в какую-нибудь DLL.

VBA

Если вы работаете с Excel, можно "натравить" на него VBA-скрипт через запуск Invoke VBA. Скрипт должен лежать в отдельном файле (это удобно, учитывая, что сейчас офисные файлы с макросами не очень в почете). Такое будет удобно тем, кто хорошо умеет программировать на VBA и не желает бросать наработанные библиотеки.

Python

Большим подспорьем для работы с ML и всякими вычислениями является возможность встраивания в процесс питоньих скриптов. Чтобы начать с ними работать необходимо сделать несколько дополнительных телодвижений. Во-первых, эти действия теперь выложены в классный, но не поддерживаемый официально набор действий Community Activities на GitHub. Во-вторых, нужно поставить Python, причем обязательно версии 3.6 и обязательно в корень диска C.

Кстати, в том же Community Activities есть и криптография, и FTP и еще несколько потенциально полезных штук.

Документацию и (устаревший) пример кода можно скачать здесь. Если кому-то понадобится помощь с интеграцией UiPath и Python - пишите, попробую рассказать подробнее.

Java

Примерно тоже самое - пакет собирается самостоятельно из Community Activities. Поддерживается .jar-файлы, собранные с использованием JDK 1.5 и выше. Путь к Java должен быть прописан в PATH.

На сайте UiPath есть документация по использованию и пример процесса с использованием Java.

Через пользовательские действия

К сожалению, не всем подходит вариант с использованием магазина приложений или чужих пакетов. Часто, например, служба безопасности не разрешат использовать куски роботов, написанные не вендором и не внутри компании. Тогда приходится засучить рукава.

Платформа UiPath построена с использованием Microsoft Workflow Foundation. Для нас это значит, что всегда можно написать свое действие (Activity) и добавить в процесс. Если предполагается активное использование бизнес-пользователями, действию можно сделать красивый пользовательский интерфейс с помощью дизайнера форм, а если нужно побыстрее - то сойдет и простой прямоугольничек, настраиваемый из Properties.

К счастью, процесс создания действия документирован, хоть и не очень подробно, но всегда можно воспользоваться масштабной документацией MS по написанию действий и статьями о них в интернете.

Созданное действие нужно запаковать в .nupkg с помощью NuGet Package Explorer, а дальше созданный пакет добавить в UiPath Studio.

Первое действие лучше не начинать создавать с ноля, а воспользоваться уже ранее упомянутыми Community Activities, где есть много готовых действий разной сложности.

В заключение

Как видите, вариантов для расширения фунциональности более чем достаточно, от простейшего Invoke Code до написания своего действия. Это значит, что какая бы задача перед вами не стояла, всегда есть возможность ее быстро решить, часто даже не изобретая велосипеда :)

Надеюсь, эта статья будет вам полезна при создании классных процессов роботизации. Буду рад, если вы расскажете, насколько для вас эта информация была релевантна и о чем еще вы хотели бы узнать.