в переменную какого типа сохраняется таблица при помощи активности extract data в uipath
UiPath — подробные примеры
В этой главе давайте разберемся с концепциями, которые мы изучали до сих пор, с помощью подробных примеров.
Excel Automation
Первый пример объясняет автоматизацию Excel. В этом примере вы научитесь —
Чтобы автоматизировать Excel с помощью UiPath studio, нам нужно выполнить следующие шаги:
Шаг 1 — Сначала откройте студию UiPath и начните новый пустой проект.
Шаг 2 — Теперь поместите файл Excel, из которого вы хотите прочитать данные, в папку вашего текущего проекта. Мы читаем данные из следующего файла Excel
Шаг 3 — Перетащите последовательность на панели дизайнера.
Шаг 4 — Перетащите действие «Область приложения Excel» под последовательность на панели «Дизайнер». Обратите внимание, что его можно искать на панели действий.
Шаг 6 — Поскольку нам нужно прочитать файл, перетащите операцию «Чтение диапазона» в «Область приложения Excel» на панели «Дизайнер». Это можно искать с панели действий.
Шаг 8 — Теперь мы также хотим увидеть его вывод, нам нужно перетащить действие « Таблица выходных данных» в действие «Чтение диапазона».
Шаг 11 — Запустите проект. Он прочитает файл Excel и выдаст вывод в окне сообщения следующим образом:
Это был простой пример автоматизации Excel, в котором мы читаем данные из файла Excel.
PDF извлечение данных и автоматизация
В этом примере мы будем иметь дело с извлечением информации из наиболее часто используемого формата файла, т.е. PDF. PDF может содержать простой текст или текст в виде изображений. С помощью следующих шагов мы можем извлечь данные из файла PDF и сохранить их в текстовом файле или показать в виде сообщения на экране —
Шаг 1 — Сначала откройте студию UiPath и начните новый пустой проект.
Шаг 3 — Перетащите последовательность на панели дизайнера.
Шаг 4 — Перетащите действие «Чтение PDF-текста» ниже последовательности на панели «Дизайнер». Это можно искать с панели действий.
Шаг 7 — Теперь мы также хотим записать вывод в текстовый файл, нам нужно перетащить операцию « Записать текстовый файл» в разделе «Чтение PDF-текста».
Окончательный проект будет выглядеть следующим образом —
Шаг 11 — Запустите проект. Он извлечет файл PDF и создаст текстовый файл с именем output.txt, а также выдаст вывод в окне сообщения, как показано ниже:
Еще один способ извлечения данных из PDF — это Scraping, который мы уже обсуждали в предыдущей главе.
Обратите внимание, что перед реализацией этого примера убедитесь, что действия PDF установлены. Это можно искать с панели действий. Если он пуст, вы можете установить его через панель управления пакетами в панели действий.
Автоматизация электронной почты
В этом примере мы будем иметь дело с чтением непрочитанных писем из нашей учетной записи Gmail через студию UiPath.
Мы можем выполнить это с помощью следующих шагов —
Шаг 1 — Сначала откройте студию UiPath и начните новый пустой проект.
Шаг 2 — Перетащите последовательность на панели дизайнера.
Шаг 3 — Перетащите действие «Получить сообщения IMAP» ниже последовательности на панели «Дизайнер». Это можно искать с панели действий.
Шаг 5 — Теперь, что вы хотите сделать для каждого письма? Для определения этого нам нужно перетащить для каждого вида деятельности. Это может быть поиск из деятельности. Укажите здесь переменную «Сообщения», которую мы использовали в шаге 4. Мы также должны изменить TypeArgument на System.Net.Mail.MailMessages из панели свойств. Его можно выбрать в разделе «Поиск вариантов».
Когда вы запустите вышеупомянутый проект, UiPath покажет сообщения, имеющие тему с топ-5 непрочитанных писем с указанным вами идентификатором электронной почты.
Обратите внимание, что перед реализацией этого примера убедитесь, что установлены действия MAIL. Это можно искать с панели действий. Если он пуст, вы можете установить его через панель управления пакетами в панели действий.
UiPath Studio — переменные и аргументы
В этой главе давайте разберемся, как работать с переменными и аргументами в UiPath, а также с соответствующими концепциями.
Управление переменными в UiPath Studio
Переменная может быть определена как символическое имя, связанное со значением, которое может измениться. В студии UiPath переменные имеют разные типы и используются для хранения различных типов данных, начиная от общего значения, текста, числа, таблицы данных, времени и даты.
Одним из важных применений переменных является то, что мы можем контролировать количество выполнений тела цикла, поскольку значение переменных может изменяться.
Панель переменных
Как следует из названия, панель переменных используется для создания переменных и позволяет нам вносить в них изменения. Следующий скриншот даст представление о панели переменных —
Четыре поля объясняются как дано ниже —
название
Это обязательное поле. Мы должны дать имя переменной. Предположим, что если вы не даете никакого имени, UiPath studio сгенерирует его автоматически. Рекомендуется следовать соглашениям об именах, как обсуждалось в предыдущей главе, при именовании переменных.
Тип переменной
Объем
Это также обязательное поле, которое показывает область, в которой доступна переменная. Например, если вы выберете вид деятельности « Последовательность», областью действия переменной будет «Последовательность» и т. Д.
По умолчанию
Это необязательное поле, которое показывает значение переменной по умолчанию. Например, значение по умолчанию для переменной типа Int32 равно 0.
Типы переменных
Ниже приведены типы переменных, которые мы можем использовать в UiPath Studio.
Текстовые переменные. Как следует из названия, переменные такого типа могут хранить только строки. Например, если вы хотите хранить такую информацию, как имя, фамилия, имена пользователей и т. Д., Вам следует выбрать текстовые или строковые переменные.
Булевы переменные — они также называются истинными или ложными переменными. У него есть только два возможных значения: true или false.
Целочисленные переменные. Как следует из названия, переменные такого типа могут хранить только целочисленные значения или значения Int32, т.е. целочисленную информацию. Они также называются числовыми переменными.
Переменные массива — если вы хотите хранить несколько значений одного типа, тогда подойдет переменная массива. Вы можете хранить столько типов массивов, сколько есть типов переменных в UiPath.
Переменная даты и времени. Как следует из названия, этот тип переменной позволяет нам хранить информацию о любой дате и времени.
Переменные таблицы данных — эти типы переменных хранят большую часть информации. Он действует как база данных или электронная таблица со строками и столбцами. Например, если вы хотите извлечь информацию с веб-сайта и сохранить ее в электронной таблице, вы можете выбрать переменную таблицы данных.
Текстовые переменные. Как следует из названия, переменные такого типа могут хранить только строки. Например, если вы хотите хранить такую информацию, как имя, фамилия, имена пользователей и т. Д., Вам следует выбрать текстовые или строковые переменные.
Булевы переменные — они также называются истинными или ложными переменными. У него есть только два возможных значения: true или false.
Целочисленные переменные. Как следует из названия, переменные такого типа могут хранить только целочисленные значения или значения Int32, т.е. целочисленную информацию. Они также называются числовыми переменными.
Переменные массива — если вы хотите хранить несколько значений одного типа, тогда подойдет переменная массива. Вы можете хранить столько типов массивов, сколько есть типов переменных в UiPath.
Переменная даты и времени. Как следует из названия, этот тип переменной позволяет нам хранить информацию о любой дате и времени.
Переменные таблицы данных — эти типы переменных хранят большую часть информации. Он действует как база данных или электронная таблица со строками и столбцами. Например, если вы хотите извлечь информацию с веб-сайта и сохранить ее в электронной таблице, вы можете выбрать переменную таблицы данных.
Как создать переменную?
Выбрав хотя бы одно действие в панели дизайнера студии UiPath, вы можете создать переменную с помощью следующих двух методов:
Использование панели переменных — еще один способ создания переменной — панель переменных. Для начала нам нужно нажать на панель переменных на вкладке дизайнера. Затем будет отображаться переменная панель. Теперь нажмите « Создать переменную строку», чтобы создать новую переменную. Панель переменных уже подробно обсуждалась в предыдущем разделе.
Использование панели переменных — еще один способ создания переменной — панель переменных. Для начала нам нужно нажать на панель переменных на вкладке дизайнера. Затем будет отображаться переменная панель. Теперь нажмите « Создать переменную строку», чтобы создать новую переменную. Панель переменных уже подробно обсуждалась в предыдущем разделе.
Как удалить переменные?
Мы также можем удалить переменные, которые мы создали в предыдущем разделе, используя любой из следующих двух методов:
Способ 1
Как выстроить процесс интеллектуальной обработки документов с помощью RPA: опыт UiPath
Не существует компаний, в которых не было бы работы с документами. И это — кропотливый, рутинный, но очень важный процесс. Люди хотят получать зарплату вовремя, а поставщики и контрагенты своевременную оплату за свои услуги. Бухгалтеру в компании регулярно приходится проводить серии повторяющихся действий и при этом отслеживать их правильность. Вот простейший пример цепочки таких операций: чтобы отправить счет покупателю, менеджер по продажам отправляет бухгалтеру заявку. Затем бухгалтер создает счет в учетной системе, формирует печатную форму и высылает ее менеджеру. Если с покупателем ведется обмен электронными документами, то бухгалтер создает и отправляет ему счет в системе ЭДО.
Процесс обработки входящих документов состоит из нескольких частей: сканирование, распознавание, классификация, извлечение данных. Обычно, весь процесс происходит с использованием технологий одного вендора, что ограничивает компанию в выборе технологий. При этом недостаточно извлечь данные из документа, необходимо каким-то образом их передать в основные бизнес-приложения (SAP, 1C и др.), это не всегда возможно из-за сложностей интеграции с корпоративными бизнес-приложениями.
Если какие-то задачи выполняются систематически с неизменной четкой логикой, и они присутствуют в большом количестве бизнес-процессов, то их роботизация становится экономически выгодной. UiPath предлагает использовать программных роботов для автоматизации процесса обработки входящих документов. Использование RPA позволяет для каждого типа документов применять разные подходы к распознаванию и извлечению (например, для одного документа использовать шаблоны Abbyy Flexi Capture, а для другого – Microsoft OCR и ML-модели), что делает этот процесс гибким, с точки зрения внедрения.
Сложности распознавания и извлечения данных
Для примера возьмем популярные виды документов: счета и квитанции. На первый взгляд кажется, что работать с ними — простая задача. Но в реальности это не так. Несмотря на то, что подобная автоматизация очень актуальна — ежегодно обрабатываются миллионы счетов, решения, которые умеют это делать, стали лишь недавно выходить на рынок и показывать первые реальные результаты. Трудности такой роботизации определяются двумя ключевыми моментами.
Первая проблема с автоматизацией обработки счетов и квитанций состоит в том, что эти документы являются полуструктурированными. Это значит, что мы наверняка знаем, как расположены логические блоки в таких документах: например, платежная информация всегда находится в шапке счета на оплату, но при этом мы не знаем в каком конкретно месте находится такая информация, как сумма платежа или номер счета.
В начале любого процесса обработки документов используются решения оптического распознавания (OCR), которые трансформируют изображения символов со скана в символы воспринимаемые компьютером. Существуют различные механизмы распознавания: полнотекстовое и зональное распознавание. После того, как документ распознан, нам необходимо извлечь из него нужные данные, ведь движок OCR не знает, где в документе «искать» необходимую информацию.
Это приводит к тому, что компании, пытаясь решить эту проблему, создают большое количество шаблонов, предназначенных для каждого бланка счета. Эти макеты помогают указать OCR правильное место на странице, чтобы оно могло найти и извлечь соответствующую информацию. Этот метод работает, но когда макетов становится много, он теряет свою эффективность. И для каждого нового поставщика нам приходится настраивать новый шаблон.
Вторая проблема заключается в устранении ошибок, встречающихся в реальных документах, которые редко бывают идеально напечатанными и хорошо отсканированными.
Документы, с которыми сталкивается робот, часто содержат много ошибок, затрудняющих их чтение. Счет может быть отсканирован на некачественном офисном сканере. Картинка может быть перекошена или отсканирована вместе с другими ненужными документами. Все эти факторы могут запутывать роботов и систему OCR, затрудняя поиск необходимой информации.
Как роботы извлекают данные?
Есть несколько подходов к извлечению данных. Одним из перспективных направлений мы считаем использование моделей машинного обучения. У UiPath есть модели для счетов и чеков, они помогают автоматически определять местоположение информации, которую необходимо извлечь. UiPath может работать и со сторонними моделями. Даже если документ содержит множество ошибок, робот все равно найдет необходимую информацию. Возвращаясь к нашим примерам счетов выше, с использованием машинного обучения робот без проблем сможет найти, в каком конкретно поле содержится информация о банке получателя.
Создаем проект по обработке документов в UiPath Studio
1 Запуск менеджера таксономий.
В менеджере таксономий мы создаем классы документов, с которыми мы будем работать.
Мы можем выбирать категорию и тип распознаваемого документа:
На этом этапе также определяются поля для извлечения в конкретном типе документа. Например, типу документа «акт о приемке выполненных работ» могут соответствовать поля «Итого», «Заказчик», «Дата» и, например, «Смета» в формате таблицы.
2 Оцифровка документа с помощью OCR
В UiPath реализовано полнотекстовое распознавание. Можно настроить мониторинг папки, из которой робот будет переносить документы в OCR-сервис. У UiPath есть встроенные механизмы для работы с распространенными движками, как платными, так и бесплатными (Abbyy, Tesseract OCR, Microsoft OCR и др.). Чтобы выбрать нужный движок, нужно просто перенести его из палитры действий в Digitize Document Scope.
3 Классификация документа по ключевым словам.
После распознавания робот классифицирует документ, чтобы сопоставить его с таксономией и определить какие поля необходимо извлечь. Здесь можно использовать разные подходы от машинного обучения до обычных бизнес правил. Например, если встречается слово ‘invoice’, то скорее всего документ является международным инвойсом, а если “счет-фактура”, то российским счетом-фактурой.
Классификатор UiPath может обучаться на массиве данных.
4 Экстракция данных.
Экстракция — это извлечение текстовых данных из распознаваемого файла.
На этом этапе производится выбор экстрактора, который будет извлекать данные. На текущий момент в UiPath есть 4 основных типа экстрактора: формы, ML, Regex, Abbyy Flexi Capture. Переносим их из палитры действий в Data Extraction Scope.
Для каждого экстрактора мы можем задать необходимую степень уверенности. При этом для каждого типа документа мы можем выбрать несколько экстракторов. Если при использовании первого по порядку экстрактора степень уверенности оказывается ниже заданной, то используется следующий экстрактор.
Также мы можем выбрать разные экстракторы для разных полей в документе. Например дату извлекать с помощью ML, а наименование компании через Regex:
А вот как в интерфейсе сервиса выглядит распознанный документ с извлеченными данными:
5 Экспорт результатов распознавания.
Первичный экспорт результатов происходит с помощью действия Export Extraction Results в датасет, откуда информация может передаваться в любые сторонние системы, например, SAP, 1C или Госуслуги для бизнеса. При этом нам не нужно реализовывать сложную интеграцию. Робот может ввести данные в абсолютно любую систему через пользовательский интерфейс.
Примеры внедрения RPA для работы с документами
Одно из первых внедрений робота UiPath для работы с документами было проведено в компании «СОК Сервисный Центр РУС», которая оказывает сервисные услуги бухгалтерского сопровождения магазинам финской розничной сети PRISMA и отелям Sokos Hotels в России.
Робот-ассистент UiPath освободил сотрудников сервисной компании от выполнения рутинных операций, связанных с документооборотом. Он обращается к ERP-системе компании, находит, распечатывает и рассылает клиентам по e-mail бухгалтерские документы (счета, счета-фактуры, накладные), в соответствии с требуемыми параметрами и условиями формирования печатных форм. Скорость выполнения операций благодаря использованию робота-ассистента выросла, а количество ошибок уменьшилось. Это позволило ускорить обработку и оплату счетов, и разгрузить сотрудников, высвободив до двух часов их рабочего времени для решения более творческих и интересных задач.
Еще один пример — внедрение бота в компании QIWI, который проверяет бухгалтерские документы на соответствие стандартам финансовой безопасности. Он выполняет запросы к таблицам баз данных из различных систем (в основном ORACLE). Затем компонует полученные результаты и сохраняет их в отдельный файл. После этого бот создает в «1С: Документооборот» документы с файлами отчетов.
В результате удалось освободить людей от рутины, повысить скорость и прозрачность процессов, снизить риски и количество ошибок. Итоговый экономический эффект от роботизации значительно превысил затраты на внедрение RPA.
Выводы и перспективы
Мы рассказали о том, как реализовать процесс ввода и первичной обработки входящих документов без привязки к вендору. С использованием роботов вы можете использовать как классические подходы к извлечению данных, такие как формы или шаблоны, так и недавно появившиеся возможности машинного обучения.
Рассуждая о будущем, мы можем сказать, что появляется все больше моделей машинного обучения, которые позволяют автоматизированно извлекать данные из документа без использования “якорей” и шаблонов. Решения, которые работают с привлечением возможностей машинного обучения в разы эффективнее предыдущих поколений аналогичных сервисов и имеют большой потенциал для повышения уровня автоматизации бизнес-процессов.
По данным Aimultiple.com большинство компаний из списка Fortune 500, использующих технологии, которые разработаны более трех лет назад, имеют уровень автоматизации 10-15%, в то время как решения для извлечения данных счетов на основе машинного обучения могут увеличить этот показатель до 80% и выше.
Компании только начинают осваивать RPA для автоматизации работы с документами, и многие совершают общую стратегическую ошибку в этой области. Поскольку весь процесс управления счетами-фактурами уже является цифровым, они не стремятся его автоматизировать. Однако, бухгалтеры все равно тратят много времени на сверку, перенос и другую работу с цифровыми данными. Получается парадокс — в почти полностью цифровом процессе все равно присутствует много ручного труда. Поэтому автоматизация повторяющихся процессов — становится сегодня точкой роста цифровой трансформации бизнеса, а распознавание и дальнейшая обработка финансовых документов — самой распространенной областью применения RPA.
Гайд: как создавать собственные активности для RPA-платформ
Платформы для роботизированной автоматизации имеют широкий спектр возможностей и позволяют использовать множество готовых действий без программирования. Однако, бизнес-пользователям часто не хватает тех активностей, которые предоставляют RPA-платформы. В таких случаях весь проект роботизации уходит к программистам, которые могут написать любую программу.
Но есть проблема – они плохо понимают настоящие бизнес процессы, а на то, чтобы в них разобраться, уходит время. В этом посте рассказываем, как программисты могут разработать свои активности для бизнес-пользователей, чтобы те продолжали роботизировать свои задачи без передачи всего проекта программистам.
Статья написана при поддержке технического эксперта UiPath: Валентина Драздова.
В последние несколько лет все больше компаний переходит от классической автоматизации к роботизации с использованием RPA-технологий. Современные RPA-платформы предоставляют большой набор готовых действий для создания роботов. Они дают возможность эмулировать действия пользователя путем взаимодействия с разными системами через графический интерфейс, программировать в этом случае не нужно. Однако, всех потребностей бизнеса этими действиями не покроешь, поэтому платформы дают возможность пользователю написать часть кода самому непосредственно в схеме робота. Этого вполне достаточно для вызова других библиотек и программ, но такой подход неудобен, когда роботизацией хотят заниматься не только программисты, а люди из бизнеса — citizen developers).
В этой статье мы на примере UiPath расскажем, как программисты могут создавать свои активности для RPA-платформы UiPath так, чтобы с ними могли работать бизнес-пользователи при роботизации процессов, не привлекая профессиональных разработчиков.
Мы решили рассмотреть создание пользовательских активностей в UiPath на примере с универсальной библиотекой регистрации посещений выставок или бизнес-центров. Она предоставляет функционал работы с реестром посещений, позволяет регистрировать приходящие лица (метод AddVisitor) и получать таблицу посетителей (метод GetVisitors).
Список посетителей формируется в экземпляре класса Registrator, он существует от момента создания экземпляра класса до завершения работы с ним.
Готовим рабочую среду
Рассмотрим разработку активностей в Microsoft Visual Studio с использованием специального расширения «UiPath Activity Creator», которое можно бесплатно установить из Visual Studio Marketplace:
После установки расширения вам необходимо закрыть студию и принять лицензионное соглашение.
Создаем решение и знакомимся со структурой
После установки расширения вам станет доступен новый шаблон проекта – «UiPath Standard Activity Project»
Создайте свой проект используя этот шаблон. Наш проект мы назвали «UiPath.Habr.Visitors». В результате было создано решение из пяти проектов:
UiPath.Shared.Activities – проект с общим кодом от UiPath, предназначен для облегчения разработки активностей (не изменяйте код этого проекта).
UiPath.Shared.Activities.Design – Проект с общим кодом от UiPath, предназначен для облегчения разработки визуальной части активностей, которая будет отображаться в UiPath Studio (не изменяйте код этого проекта)
ИМЯ_ВАШЕГО_ПРОЕКТА – Базовый проект решения, предназначен для бизнес-логики ваших активностей.
ИМЯ_ВАШЕГО_ПРОЕКТА.Activities – Проект, содержащий классы с активностями. Именно в этом проекте должно происходить получение аргументов, вызов бизнес-логики и возврат аргументов.
ИМЯ_ВАШЕГО_ПРОЕКТА.Activities.Design – Проект, содержащий визуальные компоненты активностей (.XAML), которые будут отображаться в UiPath Studio.
Создаем активности
Для того, чтобы создать свою активность – необходимо добавить класс активности в проект ИМЯ_ВАШЕГО_ПРОЕКТА.Activities и визуальный компонент активности в проект ИМЯ_ВАШЕГО_ПРОЕКТА.Activities.Design
После открытия мастер предложит создать активности вручную или импортировать их из JSON-файла. Мы используем первый вариант.
В открывшемся окне вы можете создать разные активности при помощи кнопки «+». Каждая активность содержит следующие параметры:
Name – имя активности (рекомендуем писать на английском), которое будет отображено в списке активностей.
Description – описание активности, которое будет появляться во всплывающем окне
Type – тип активности:
Simple – обычная активность (одно действие).
Scope – активность с контейнером для других активностей, которые могут использовать данные из скоуп-активности.
Properties – набор аргументов активности (поговорим об этом ниже).
Timeout – переключатель «имеется ли у действия время ожидания?». Если включить этот параметр – можно будет настраивать время, через которое активность будет останавливаться, даже если она еще не завершилась.
Icon – иконка для вашей активности.
Аргументы
У каждой активности могут быть свои аргументы со следующими свойствами:
Category – Раздел в панели «Свойства», в котором будет размещаться данный аргумент
Name – Имя аргумента
Description – Описание аргумента, которое будет появляться во всплывающем окне
Direction – Направление передачи :
In – Входной аргумент (передача информации от робота в активность)
InOut – Входной-Выходной аргумент (передача информации от робота в активность и обратно)
None – Не использовать динамические значения (передаваемые через переменные), настройка вручную в UiPath Studio, рекомендуется использовать для Boolean (будет отображен в виде чекбокса), Enum (будет отображен в виде фиксированного списка)
Options Required – является ли аргумент обязательным при настройке робота в UiPath Studio
Аргументы активности Add Visitor (регистрации приходящего лица)
Разбираемся, как устроены активности
После того, как вы создали свои первые активности при помощи специального расширения, мы можем рассмотреть подробнее из чего они состоят.
Классы активностей располагаются в проекте ИМЯ_ВАШЕГО_ПРОЕКТА.Activities, в подпапке «Activities»:
Классы обычных (Simple) и скоуп (Scope) активностей похожи, но немного отличаются, поэтому рассмотрим их по отдельности.
Класс активности типа Simple
Класс состоит из трех регионов:
Регион Properties
Содержит определение входящих и исходящих аргументов активности. Обратите внимание, что у каждого параметра имеются параметры с локализацией:
LocalizedCategory – имя строки в ресурсах проекта, в которой содержится название категории (группы), которая будет отображена в списке аргументов в окне «Параметры»
LocalizedDisplayName – имя строки в ресурсах, в которой содержится название аргумента
LocalizedDescription – имя строки в ресурсах, в которой содержится описание аргумента, которое будет появляться при наведении мышкой.
Также вы можете заметить, что все входные параметры используют тип InArgument, а выходные – OutArgument.
Когда используется данный тип – в UiPath Studio будет предложено ввести в качестве параметра переменную типа, обрамленного в угловые скобки .
Регион Constructors
Регион содержит конструктор класса. Если вам необходимо выполнять какие-либо действия до непосредственного выполнения активности – вы можете сделать их здесь.
Регион Protected Methods
Регион содержит методы, отвечающие за работу активности
Метод CacheMetadata предоставляет возможность провести проверку корректности использованных параметров на этапе проектирования робота
Метод ExecuteAsync содержит код, который выполняется непосредственно при выполнении активности роботом. Условно разбит на три части:
Часть Object Container и Inputs –происходит загрузка контейнера объектов (что позволяет получить данные из других активностей, в частности из Scope), а также входных параметров. Все параметры, использующие тип данных InArgument можно получить с использованием функции Get, указав в качестве параметра переменную с контекстом (context), например:
var plannedNumberOfVisitors = PlannedNumberOfVisitors.Get(context)
В случае, если вы используете «обычные» типы данных – вы можете обращаться к параметрам напрямую.
Часть Add execution logic HERE – предназначена для вашего кода, где вы будете писать свой бизнес-код (или вызывать другие библиотеки).
Часть Outputs – предназначена для вывода результатов из активности, выполняется с использованием анонимной структуры, где указывается параметр типа OutArgument с вызовом функции Set, где первый параметр – контекст (context), второй – значение. Например:
return (ctx) =>
Пример метода ExecuteAsync активности Get Visitors
Класс активности типа Scope
Рассмотрим основные отличия данного типа класса
Регион Properties
Помимо входящих и исходящих аргументов содержит:
Body — коллекция дочерних активностей,
_objectContainer – контейнер объектов для дочерних активностей
Регион Protected Methods
Метод ExecuteAsync в отличие от метода из класса типа Simple, возвращает не содержимое для исходящих аргументов, а запускает выполнение дочерних активностей
Регион Events
Метод OnFaulted выполняется в случае, если одна из дочерних активностей вызвала ошибку.
Метод OnCompleted выполняется в случае, если все дочерние активности завершились успешно
Регион Cleanup
Метод Cleanup предназначен для освобождения памяти и занятых ресурсов.
Связываем Scope и Simple активности
Чтобы работать с данными, которые были инициализированы в рамках Scope-активности, вам необходимо сначала передать эти данные в контейнер объектов в Scope-активности. Сделать это можно в методе ExecuteAsync перед запуском дочерних активностей. Для примера, если вы хотите передать всю Scope-активность, вам достаточно написать следующий код:
_objectContainer.Add(this);
Чтобы получить нужный объект в Simple-активности, вам необходимо получить объект из контейнера объектов в методе ExecuteAsync после его инициализации. Для примера получим родительскую Scope-активность:
var parentRegistrator = objectContainer.Get ();
Формирование Nuget-пакетов
Если вы знаете как пользоваться консольной утилитой nuget.exe, вы можете пропустить этот раздел и сформировать пакет самостоятельно для проекта «ИМЯ_ВАШЕГО_ПРОЕКТА.Activities.Design».
Если у вас нет больших компетенций в формировании Nuget-пакетов, то вы можете воспользоваться очень простым способом. Для этого нажмите правой кнопкой мыши по проекту «ИМЯ_ВАШЕГО_ПРОЕКТА.Activities.Design» в обозревателе проектов и выберите пункт «Опубликовать…» (Publish…)
По умолчанию в созданном из шаблона проекте нет профилей публикации, поэтому Visual Studio предложит вам создать собственный. Выберите профиль «Папка» (Folder) и укажите директорию на вашем компьютере, где у вас располагается локальный источник пакетов (если его еще нет – мы создадим его в следующем разделе, пока просто создайте директорию). В рамках примера для данной статьи будет использована директория «C:\MyNuGet»
После создания профиля вы сможете публиковать ваш NuGet-пакет, а также управлять настройками публикации:
При выполнении публикации будет осуществлена сборка решения в соответствии с указанными параметрами, после чего собранные библиотеки будет запакованы в NuGet-пакет и сохранены по указанному адресу.
Если вы все сделали правильно – в целевой директории появится пакет с версией 0.1.0:
Изменение версии пакета
Если вы внесете изменения в свою активность и соберете ее снова, то можете обнаружить, что вы снова получите пакет с версией 0.1.0. Так как версия пакета не поменялась – вы не сможете обновить активность через менеджер пакетов UiPath. Чтобы изменить номер версии – вам необходимо открыть в текстовом редакторе файл проекта «ИМЯ_ВАШЕГО_ПРОЕКТА.Activities.Design» (его расширение – csproj)
Вам необходимо найти тэги «PackageVersion» и изменить версию с 0.1.0 на следующую.
Добавление использованных библиотек в NuGet-пакет
WithMetadataValue(‘ReferenceSourceTarget’, ‘ProjectReference’)->WithMetadataValue(‘PrivateAssets’, ‘All’))» />
Использование в UiPath
Чтобы использовать ваш NuGet-пакет в UiPath вам необходимо добавить его в источник пакетов. Когда вы будете распространять свои активности на всю компанию – рекомендуется добавить его в источник пакетов вашего оркестратора.
Создание своего источника пакетов
Если вы только разрабатываете и отлаживаете свои активности, то вам лучше воспользоваться локальным источником пакетов. Чтобы создать локальный источник пакетов вам необходимо в окне «Проект» нажать правой кнопкой мыши по разделу «Зависимости», выбрать пункт «Управление».
В открывшемся окне перейдите на закладку «Настройки», справа над нижним списком будет кнопка «+» (плюс), нажмите ее, после чего в поле «Название» введите название для вашего локального источника (придумайте свое), а в поле «Источник» введите адрес директории с вашими пакетами (можете воспользоваться кнопкой «…» для простого выбора папки) и нажмите кнопку «Добавить».
Установка пакета
Перейдите на вкладку своего источника, где вы сможете увидеть свой пакет. Выбрав пакет вы сможете увидеть все версии пакета, доступные в вашем источнике пакетов. Установите ваш пакет как любой другой пакет, доступный вам в UiPath:
После установки пакета ваши активности будут доступны в общем списке активностей:
Отладка ваших активностей
Иногда вам может потребоваться отладка ваших активностей непосредственно во время работы робота. Для этого вам необходимо поставить точку останова на вашей активности в UiPath Studio, запустите робота и дождитесь его остановки перед выполнением активности:
Перейдите в Visual Studio, откройте класс, соответствующий вашей активности, поставьте точки останова в том месте метода ExecuteAsync, где вам требуется начать отладку, далее откройте меню «Отладка – Присоединиться к процессу» (Debug – Attach to process…)
В открывшемся окне найдите «UiPath.Executor» в списке процессов и нажмите кнопку «Attach»
После того, как Visual Studio запустит режим отладки, вернитесь в UiPath Studio и продолжите выполнение робота. После этого Visual Studio выполнит остановку исполнения кода именно в том месте, где вы поставили точку останова и вы сможете выполнить отладку.
Если в Visual Studio открыт код более новой версии, чем находится в установленном в UiPath пакете, подключение может не удастся, либо процесс отладки будет выглядеть некорректным.
Если у вас не работает отладка – попробуйте при сборке NuGet-пакета выбрать конфигурацию Debug.
Что еще можно сделать со своими активностями
В этой статье мы рассказали, как можно быстро начать разрабатывать свои активности для UiPath, чтобы дать больше возможностей при роботизации вашим коллегам. Часть советов из этой статьи можно назвать «вредными», так как в некоторых моментах стоит внимательней подойти к настройке каких-то деталей. Вот несколько рекомендаций, которые помогут вам сделать ваши активности более качественными:
Сделайте свои активности более привлекательными, в проекте «ИМЯ_ВАШЕГО_ПРОЕКТА.Activities.Design» можно найти XAML-файлы, изменяя которые можно сделать более удобный интерфейс взаимодействия с вашими активностями в UiPath Studio.
Разберитесь с файлами ресурсов, обратите внимание, что по умолчанию все текстовые надписи сделаны на «нейтральном» языке. Приведите локализацию в порядок, как правило нейтральный язык должен содержать английский вариант, а русский вариант должен быть реализован с использованием локализованного файла ресурсов. Если вы не знаете как настраивать локализацию через файлы ресурсов — мы вам расскажем об этом в одной из следующих статей.
Если вы сделали универсальную активность, которая будет полезна не только лично для вас или вашей компании, но и для мирового сообщества, то вы можете опубликовать ее в магазине UiPath (и даже заработать на этом денег). Подробнее про публикацию своих активностей в магазине UiPath мы расскажем в следующих статьях.
Позаботьтесь о модульном тестировании ваших активностей, а также не забудьте опубликовать исходный код в репозитории вашей компании.







