![](https://habrastorage.org/getpro/habr/upload_files/37b/e55/6d5/37be556d55ff4ad3ac9ab23a125a9e33.png)
Программные роботы (RPA) с каждым годом всё больше проникают в IT-инфраструктуру компаний, а доля роботизированных процессов в бизнесе постоянно растет. Чтобы поддерживать увеличивающееся количество автоматизированных процессов организациям необходимы дополнительные вычислительные ресурсы, а значит и дополнительные расходы на инфраструктуру и лицензии ПО.
Многие профессиональные RPA-разработчики уже давно мечтают о том, чтобы роботов можно было запускать не только под управлением платной требовательной к ресурсам Windows, но и под бесплатной нетребовательной Linux. В этой статье знакомим читателей с возможностью разработки кроссплатформенных процессов с использованием UiPath и подробно разбираем преимущества от использования Linux-роботов.
Статья написана при поддержке технического эксперта UiPath: Валентина Драздова.
Почему роботы появились именно под Windows?
Программные роботы, выполняющие автоматизацию графического интерфейса, являются проверенным инструментом для простого решения сложных задач автоматизации систем, когда у них нет API, или работа с ним является слишком сложной задачей для существующей команды разработчиков. Как правило, такие задачи возникают в первую очередь при взаимодействии со старыми программами и системами, которые были написаны исключительно под ОС Windows. Даже если такие программы и обладали методами взаимодействия, то как правило это были OLE/COM-объекты, которые несовместимы с большинством современных средств разработки.
Однако, простота разработки программных роботов и возможность использования готовых интеграционных решений, позволяющих не писать огромные модули с кодом, привела к тому, что роботов начали применять даже в тех случаях, когда непосредственное взаимодействие с графическими интерфейсами не требуется.
Как известно, один робот может выполнять только одну задачу в одну единицу времени. Таким образом, если разработчики создадут слишком много процессов для роботизации — потребуется устанавливать роботов на новые сервера или использовать сервер с поддержкой нескольких сессий, а это затраты на дополнительную аппаратную инфраструктуру и лицензии на операционную систему.
Кроме того, существует проблема поддержания единого окружения для всех роботов — чем больше компьютеров, на которых установлены роботы, тем больше внимания требуется администраторам для того, чтобы везде были одинаковые версии программ и обновлений.
Возможности Linux-роботов
Начиная с версии 2021.10 UiPath предоставляет возможность использовать Linux-роботов. В отличии от Windows-роботов они создавались в основном для роботизации с использованием веб-технологий (веб-сайты и веб-сервисы), а также вызова готовых интеграционных решений от UiPath.
![](https://habrastorage.org/getpro/habr/upload_files/25f/2c8/830/25f2c88302d88d554c404646cbc2c495.png)
Особенности разработки процессов под Linux
Начиная с версии 2021.10 в UiPath Studio доступны три версии процессов:
Windows-Legacy — так теперь называются классические процессы, которые разрабатывались в предыдущих версиях продукта;
Windows — новые виды процессов, в отличие от классических процессов они поддерживают компиляцию и используют 64-битное адресное пространство, благодаря чему возможно использование большего количества оперативной памяти, а выполнение ускоряется в разы;
Кроссплатформа — новые виды процессов, поддерживающие запуск на любой операционной системе, где могут быть установлены роботы от UiPath. В отличие от Windows-процессов содержат сокращенный набор действий, который может быть расширен загрузкой дополнительных модулей интеграции через менеджер пакетов.
Важно отметить, что новые Windows процессы не совместимы с классическими Windows-Legacy процессами. Причиной является используемый набор библиотек:
Windows-Legacy использует .NET Framework 4.6.1
Windows и Кроссплатформа используют .NET Core 5
Эти наборы библиотек изначально не являются совместимыми, но благодаря использованию Windows Compatibility Pack for .NET Core современные проекты Windows могут использовать большинство существующих действий UiPath.
![](https://habrastorage.org/getpro/habr/upload_files/6de/49f/25b/6de49f25ba48687d926cf6ea80615fb9.png)
Так как кроссплатформенные проекты не могут использовать технологии Microsoft, базовый набор действий является сокращенным: в основном это использование классических действий оркестратора, элементов последовательностей, блок-схем и машин состояний, а также действия для работы с веб-сервисами.
![](https://habrastorage.org/getpro/habr/upload_files/743/87a/606/74387a6066181a841ca0068a619b326f.png)
Для использования действий интеграции необходимо их предварительно загрузить из менеджера пакетов.
![](https://habrastorage.org/getpro/habr/upload_files/0c5/35e/902/0c535e902407a4d6e1f602b3c54e2441.png)
А благодаря использованию пакета “UiPath.UIAutomation.Activities” имеется возможность роботизировать веб-сайты с использованием Chromium API. Настройка робота осуществляется таким же образом, как и при разработке роботов под Windows.
![](https://habrastorage.org/getpro/habr/upload_files/ae4/855/f77/ae4855f771577d41376e8087f077bf2c.png)
Если же при разработке робота вам не хватает готовых действий — всегда можно скачать .NET Core библиотеки из менеджера пакетов и написать код на C#.
![](https://habrastorage.org/getpro/habr/upload_files/121/f95/387/121f953874e956669d44c63d07af416c.png)
Настройка и запуск Linux-роботов
Мир Linux — огромен: существует множество версий операционных систем, каждая из которых в свою очередь обладает богатым набором разнонаправленных дистрибутивов. Разработка и подготовка к эксплуатации универсального программного решения под все современные дистрибутивы Linux — довольно сложная задача, особенно когда речь идет про роботизацию. Поэтому разработчики UiPath решили распространять кроссплатформенных роботов в виде Docker-контейнеров. Сами образы для контейнеров могут быть установлены одной командой:
docker pull uipathprod.azurecr.io/robot/runtime – облегченная версия для использования пакетов упрощенной интеграций, без возможности роботизации браузера
docker pull registry.uipath.com/robot/uiautomation-runtime:latest21.11-preview – полная версия с возможностью роботизации браузера и запуском VNC-сервера для подключения и контроля исполнения действий роботом
Для запуска робота необходимо использовать ключ Template-машины (компьютера) с Unattended-лицензией, которая будет добавлена в одну из папок UiPath Orchestrator. При запуске робота должна быть использована специальная учетная запись “Robot account / Учетная запись робота”, создание которой доступно только с версии 2021.10.
![](https://habrastorage.org/getpro/habr/upload_files/66c/87c/f0b/66c87cf0ba952aae5faabeb5dd30ba6e.png)
После того, как будет настроена папка с требуемой Template-машиной и учетной записью робота, можно запускать контейнер с Linux-роботом.
Запуск контейнера осуществляется следующей командой:
docker run -e LICENSE_AGREEMENT=accept -e ORCHESTRATOR_URL="АДРЕС ВАШЕГО ОРКЕСТРАТОРА" -e MACHINE_KEY="КЛЮЧ МАШИНЫ-ШАБЛОНА (TEMPLATE)" -tid ИМЯ_ОБРАЗА
Для запуска VNC-сервера в полной версии необходимо использовать дополнительные аттрибуты:
--env VNC_ENABLED=true — включить VNC-cервер
-p ВАШ ПОРТ:5900 — VNC-сервер в Docker-контейнере работает на порту 5900, вы можете указать тот порт, который свободен на вашей машине для подключения к нему при помощи VNC-клиента.
Пример команды для запуска:
docker run -e LICENSE_AGREEMENT=accept -e ORCHESTRATOR_URL="https://cloud.uipath.com/*****/DefaultTenant/orchestrator_/" -e MACHINE_KEY="6593****---****-****ae98d3a1" -p 50000:5900 --env VNC_ENABLED=true -tid registry.uipath.com/robot/uiautomation-runtime:latest21.11-preview
Сразу после запуска робот подключится к оркестратору и будет готов выполнять задания.
Важным преимуществом использования Linux-контейнеров является то, что они могут быть запущены почти под любой современной ОС. То есть, если вы хотите начать пользоваться Linux-роботами, вы можете установить их даже на существующую инфраструктуру под управлением ОС Windows.
Linux-роботы в действии
Для того, чтобы продемонстрировать преимущество применения Linux-роботов мы решили роботизировать следующий тестовый сценарий:
Робот-диспетчер под управлением MS Windows загружает список контрагентов из внутренней базы в CRM, формирует из этого списка очередь транзакций, в параллельном режиме ожидает завершения каждой транзакции, записывая результат обработки обратно в CRM.
При поступлении заданий в очередь триггер запускает роботов-исполнителей.
Пока очередь транзакций не закончилась – каждый робот будет брать уникальную транзакцию из очереди, проверять контрагента в веб-клиенте 1С и веб-сервисе, возвращая отчет о проверке в результат транзакции.
Инфраструктура: 1 Windows-робот, 3 Docker-контейнера с Linux-роботами, работающие на том же компьютере, где работает Windows-робот.
![](https://habrastorage.org/getpro/habr/upload_files/439/68c/f3b/43968cf3bcc3ca6d73347d710bae5564.png)
Запущенные Linux-роботы именуются в UiPath Orchestrator по названию запущенного контейнера (Имя узла):
![](https://habrastorage.org/getpro/habr/upload_files/d5a/17d/b25/d5a17db25e6107540b75db86582f07a9.png)
За всеми тремя роботами можно наблюдать одновременно с использованием VNC-клиентов:
Скорость выполнения задания, связанного с роботизацией браузера в кроссплатформенном варианте практически не отличается по скорости выполнения современных Windows-процессов, но количество ресурсов, требуемых для исполнения в разы меньше:
![](https://habrastorage.org/getpro/habr/upload_files/4ca/b73/35b/4cab7335bdcf9b3939d387ef9dd9f4b9.png)
За счет возможности одновременного запуска сразу нескольких роботов на одном компьютере, достигается позитивный эффект: не требуется дополнительная инфраструктура, не требуются дополнительные лицензии. Использование Docker-образов гарантирует единое окружение во всех роботах, не требуется заниматься контролем версий программ и обновлений. Так же важным преимуществом использования данного подхода является возможность быстрого развертывания большого количества роботов на нескольких серверах простыми командами, описанными выше.
Что нас ждет в будущем?
Разработчики UiPath не ограничиваются только созданием роботов для Linux, уже сегодня имеется возможность установки полного решения по роботизации предприятий UiPath Automation Suite на Linux-серверах. Это решение представляет собой полную копию UiPath Cloud, которую можно установить на вашей инфраструктуре.
В дополнении к серверным компонентам, уже сейчас UiPath ведет активную работу над разработкой веб-версии студии UiPath. В имеющейся на данный момент альфа-версии веб-студии UiPath имеется возможность создания кросс-платформенных процессов. Данный подход позволит в будущем избавится от необходимости выделения отдельного места разработчика, что сократит расходы на инфраструктуру и лицензии.
![](https://habrastorage.org/getpro/habr/upload_files/d59/1c5/4fc/d591c54fcde56dfa8c7ff3f934af5bf2.png)
Таким образом UiPath задает тренд на полную платформонезависимость для RPA-решений, что в долгосрочной перспективе позволит существенно экономить ресурсы и роботизировать еще больше процессов.