Вводная


Ранее на Хабре очень подробно освещалась тема Автоматизации десктопных GUI приложений на Python. В то время меня очень сильно привлекла эта статья, потому что в ней раскрываются элементы, схожие с элементами создания роботов. А так как по роду своей профессиональной деятельности я занимаюсь роботизацией бизнес-процессов компании (RPA — область, в которой не было полнофункциональных OpenSource аналогов до недавнего времени), данная тема была очень актуальна для меня.


Топовые существующие IT решения в области RPA (UI Path, Blueprism, Automation Anywhere и другие) имеют 2 существенные проблемы:


  • Проблема 1: Технические ограничения функциональности платформы, так как скрипты роботов создаются только в графическом интерфейсе (да, там есть возможность вызывать программный код, но эта возможность имеет ряд ограничений)
  • Проблема 2: Крайне дорогая лицензионная политика продажи этих решений (Для топовых платформ около 8000$ за одного постоянно работающего робота в год). Сделайте с десяток роботов, чтобы попасть на ежегодную крупную сумму в виде лицензионных отчислений.

Так как этот рынок очень молодой и очень активный, уже сейчас Вы запросто сможете найти в гугле 10+ решений роботизации с разной ценовой политикой. Но полнофункционального OpenSource решения, до недавнего времени, найти было невозможно. Причем речь именно про полнофункциональный OpenSource, потому что частичные свободные решения роботизации найти можно, но они предлагали только часть ключевых технологий, на которых базируется концепция RPA.


На чем же базируется концепция RPA?


RPA (Robotic Process Automation) — это одна из самых экономически выгодных форм достижения цели. Так как RPA предполагает не отказываться от всевозможных legacy систем компании, а сделать необходимый скрипт автоматизации на базе этих самых систем — это даёт свои плоды как в отношении скорости разработки (потому что не надо переделывать существующий зоопарк систем), так и в отношении бизнес-результата (экономия ПШЕ/FTE, увеличение выручки компании, уменьшение расходов компании).


В основе инструментов RPA лежать следующие технологии:


  • управление открытыми web страницами браузера;
  • управление открытыми десктопными GUI приложениями;
  • управление мышью и клавиатурой (нажатие клавиш, hotkeys, кнопок мыши, перемещение курсора);
  • поиск графических элементов на экране рабочего стола для применения дальнейших действий мышью и/или клавиатурой;

Многолетним практическим опытом нам удалось показать, что именно этот набор технологий позволяет реализовать роботизацию практически любого бизнес-процесса, в которых не требуется элемент распознавания/применения искусственного интеллекта (в этих случаях требуется подключать к роботу соответствующие библиотеки, доступные в существующем мире IT). Отсутствие хотя-бы одного из вышеперечисленных инструментов существенно влияет на возможности RPA.


Ведь все инструменты RPA можно найти в интернете. Чего же тогда не хватает?


А не хватает самого главного — не хватает их целостности. Целостность, которая позволит реализовать синергетический эффект от использования различных инструментов (web, gui, мышь, клавиатура) в одном скрипте робота, что зачастую является необходимостью (как показывает практика) при разработке. Именно эту ключевую возможность предоставляют все топовые RPA платформы, и теперь эту возможность стала предоставлять первая OpenSource RPA платформа OpenRPA


Как устроена OpenRPA?


OpenRPA — это OpenSource проект на базе языка программирования Python 3, который состоит из лучших существующих python библиотек, которые позволяют реализовать необходимый инструментарий RPA платформы (перечень ключевых инструментов RPA см. выше).


Перечень ключевых библиотек:


  • pywinauto;
  • selenium;
  • keyboard;
  • pyautogui

Так как все библиотеки не знают о существовании друг друга, в OpenRPA реализована важнейшая функция RPA платформы, которая позволяет их использовать вместе. Особенно явно это проявляется при использовании библиотеки pywinauto для управления десктопным GUI приложением. В этой области была проведено дополнение функциональности библиотеки до того функциональность уровня, который предлагается в лучших RPA платформах (селекторы для GUI приложений, разрядонезависимость, студия создания селектора и др.).


Заключение


Современный мир IT сегодня настолько открыт для всех, что даже сложно представить, что до сих пор существуют еще области, где господствуют только платные лицензионные решения. Так как данная лицензионная политика сильно ограничивает развитие данного направления, то я надеюсь, что мы сможем переломить эту ситуацию: чтобы любая компания могла позволить себе RPA; чтобы наши IT коллеги могли с легкостью найти себе работу в RPA вне зависимости от экономической ситуации в их регионы (сегодня регионы со слабой экономикой не могут позволить себе RPA).


Если данная тема будет для Вас интересна, то в дальнейшем могу составить tutorial специально для Хабр по использованию OpenRPA — пишите в комментариях.


Всем спасибо и хорошего дня!