Seulement sans mains! Robots qui ne répètent pas les actions des utilisateurs

Cet article de revue explique comment utiliser RPA pour les processus métier, qui incluent des tâches que les gens ordinaires ne sont pas en mesure d'exécuter, ne veulent pas, ou cela leur prend beaucoup de temps et nécessite des connaissances particulières, telles que le travail avec FTP, les bases de données ou API.

L'inclusion de telles actions dans le processus rapproche sa création de la programmation et des "scripts" traditionnels, avec tous les avantages et les inconvénients de cette approche.

L'utilisation de l'API même dans des tâches traditionnelles pour la robotique peut augmenter considérablement la vitesse de leur exécution, augmenter la fiabilité et la stabilité, mais en même temps, cela nous empêche de réaliser le rêve que les utilisateurs métier créent et maintiennent eux-mêmes leurs processus, remet définitivement leur développement et leur support entre leurs mains. équipes de développement.

Quand c'est possible, et quand il faut ajouter des actions à un niveau inférieur dans le processus, je vais essayer de le dire dans cet article. La première, partie introductive, contient des considérations générales, et la seconde contient des exemples spécifiques. Des exemples sont donnés pour une plate-forme que je connais bien (UiPath), donc pour ceux qui préfèrent d'autres goûts et couleurs de robots, veuillez ne pas être offensé à l'avance.



Pro et Contra Robotics Low


Pourquoi ces robots sont-ils utiles?


  • Travail considérablement accéléré. C'est souvent la principale raison pour laquelle nous pensons à une interaction de bas niveau avec des systèmes externes. Si nous pouvons rendre le processus 10 fois plus rapide, nous pouvons économiser sur l'utilisation de robots supplémentaires, avec leurs machines virtuelles et leurs licences.
  • La fiabilité est augmentée, vous n'avez plus besoin de travailler avec des sélecteurs fantaisiquement dynamiques dans l'interface utilisateur, pensez à contourner le captcha, luttez pour la précision de la reconnaissance d'une image dans Citrix sur laquelle vous ne pouvez pas mettre de plugin, ou combattez le défilement sans fin sur la page d'actualités.
  • Travaillez avec des systèmes qui n'ont pas d'interface utilisateur complète ou qui ne vous permettent pas d'obtenir toutes les informations nécessaires via l'interface utilisateur. Par exemple, dans ma pratique, il y a eu un cas où nous avons pris des données sur l'API de Shopify , les avons transférées à ShipHero et les avons envoyées au système comptable interne. Seule la dernière étape a utilisé l'interface utilisateur.

Pourquoi ces robots sont-ils dangereux?


  • Les utilisateurs professionnels ne comprennent plus ce que fait notre processus robotique et ne peuvent pas le modifier et le maintenir eux-mêmes. Ce n'est pas si vrai pour les robots sans assistance, mais pour les assistants (assistants numériques), c'est un inconvénient important, car nous voulons que les utilisateurs soient eux-mêmes les auteurs de leurs processus.
  • La visibilité et l'intelligibilité du processus pour le service de sécurité sont perdues. Si avec un robot ordinaire nous pouvons clairement démontrer qu'il fait les mêmes actions que l'utilisateur «organique», il est même possible d'utiliser des descriptions de tâches comme documentation, puis en utilisant une intégration de bas niveau, nous sommes obligés de convenir que notre processus doit passer par les mêmes procédures de vérification et de contrôle longues que la «grande» automatisation.
  • Dito, concernant les équipes d'intégration. Dès que nous commençons à utiliser l'API, nous tombons dans leur domaine et devons respecter leurs règles.
  • Le coût et les risques d'une programmation «réelle» sont supérieurs à ceux de la robotique. Si une personne peut appuyer sur un bouton, un robot peut également l’appuyer. Mais l'API d'un ancien système non documenté peut-elle nous fournir les données nécessaires? Est-il possible d'écrire des informations directement dans la base de données, ou allons-nous détruire son intégrité? Un spécialiste expérimenté est-il nécessaire pour cette tâche ou est-ce suffisant pour un étudiant novice? Pourquoi Slides.Duplicate dans PowerPoint.Interop renvoie un tableau? La réponse à toutes ces questions intrigantes peut être obtenue, mais cela prendra du temps.

Quand vous avez besoin et quand vous ne devez pas utiliser la programmation dans les robots


Ce qui précède peut être résumé comme suit:

La programmation vaut la peine d'être utilisée si


  • Votre processus manque de productivité
  • Les systèmes d'interface utilisateur ne sont pas pratiques pour l'automatisation, mais il existe une API pratique

La programmation ne doit pas être utilisée si


  • Les processus seront développés ou pris en charge par les utilisateurs métier.
  • L'utilisation de l'API rend difficile pour le robot de passer par le processus de négociation.



Avec quoi et comment est-il sensé de travailler avec du code?


Ensuite, j'ai essayé de donner quelques exemples de travail avec du code, que d'une manière ou d'une autre, j'ai dû vraiment utiliser lors de la création de robots, ce qui signifie qu'ils ont lieu dans la vie. Naturellement, la liste n'est pas exhaustive, mais j'espère qu'elle est illustrative.
Les exemples sont tous testés sur les dernières versions des actions au moment de la rédaction.

Microsoft Office


Curieusement, l'un des premiers candidats à utiliser l'API est Microsoft Office. Oui, UiPath a une excellente fonctionnalité intégrée pour travailler avec Excel (même deux types, l'un avec des fichiers directement, le second via l'application). Il existe également des possibilités de travailler avec Word (le package UiPath.Word.Activities est UiPath.Word.Activities via le gestionnaire de packages). Mais, par exemple, il n'y a pas d'actions standard pour travailler avec PowerPoint, et il y a aussi Outlook ou même Visio avec Project, qui sont encore assez activement utilisés dans les grandes entreprises. Avec Office, vous pouvez très facilement vous lier d'amitié avec un robot via l'interface utilisateur, mais dans certains cas, ce n'est pas très pratique, car tous les éléments de l'interface utilisateur ne sont pas accessibles directement et vous devez jouer des gammes sur le clavier. Par exemple, une action Type Into avec le texte k [tab] k [f10] JCDD (pour la version anglaise d'Office) ouvrira les données du graphique à partir d'une diapositive PowerPoint pour les modifier dans Excel. De telles combinaisons fonctionnent bien, mais semblent plus propres que IDDKQD.
Astuce: la liste des sélecteurs disponibles peut être étendue à l'aide de Microsoft UI Automation (UIA) au lieu du cadre Microsoft Active Accessibility (MSAA) par défaut. Passez-y avec le bouton F4 dans UI Explorer et voyez s'il y a une différence
Pour travailler avec des fichiers Office, vous pouvez utiliser des bibliothèques tierces, par exemple des bibliothèques Xceed DocX ou Spire, telles que Spire.Presentation . Lorsque vous travaillez avec des bibliothèques tierces, faites attention à la licence, elle peut ne pas toujours convenir à votre entreprise (par exemple, iTextSharp pour PDF est distribué gratuitement via AGPL et PDFSharp - via MIT ). Cette méthode est très pratique, car elle peut être utilisée même si Microsoft Office n'est pas installé sur la machine, ce qui signifie qu'elle est idéale pour les robots sans assistance exécutés sur des machines virtuelles.

Pour un travail complexe avec des programmes bureautiques, Microsoft.Office.Interop vient à la rescousse. Il nous permet d'effectuer des actions à l'intérieur des applications, de manipuler des données, etc. Vous pouvez consacrer plus d'un article aux fonctionnalités de l'utilisation d'Office.Interop, une chose ancienne et fragile, mais elle conviendra à nos besoins. Pour qu'Interop fonctionne, vous devez ajouter les assemblys appropriés aux importations.

Voici quelques exemples de ce que vous pouvez faire avec Office Interop:

Perspectives


La fonctionnalité d'Outlook est beaucoup plus large que de simplement travailler avec le courrier, c'est un gestionnaire d'informations personnelles, et il y a un calendrier, un bloc-notes et un carnet d'adresses, en général, un ensemble complet. Si tout avec le courrier électronique peut généralement être résolu par un accès direct au serveur, s'il représente des interfaces IMAP / POP3, le reste des informations est beaucoup plus facile à obtenir à partir d'Outlook lui-même. Pour cette Interop s'adapte parfaitement.

Obtenir une liste des événements du calendrier
 Dim oApp As New Microsoft.Office.Interop.Outlook.Application Dim mapiNamespace As Microsoft.Office.Interop.Outlook.NameSpace Dim calendarFolder As Microsoft.Office.Interop.Outlook.MAPIFolder Dim calendarItems As Microsoft.Office.Interop.Outlook.Items mapiNamespace = oApp.GetNamespace("MAPI") calendarFolder = mapiNamespace.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderCalendar) calendarItems = calendarFolder.Items calendarItems.IncludeRecurrences = True 


Powerpoint


En utilisant PowerPoint, vous pouvez non seulement créer de belles présentations, mais aussi l'utiliser pour la paperasse, comme les offres commerciales ou les rapports de projet réguliers. Pour ce faire, vous devez afficher les données d'autres sources dans PowerPoint, et, bien sûr, le robot fait un excellent travail. La plupart du temps, lors de la création de diapositives PowerPoint, il faut les concevoir magnifiquement, vous pouvez donc le faire à l'avance et remplacer les données réelles en copiant les diapositives de modèle et en remplaçant les textes par elles.
Microsoft.Office.Interop.Powerpoint et tous les autres assemblys Interop peuvent être trouvés dans le référentiel nuget.org.
Diapositive en double
Étant donné que la présentation est dans System.Activities et Application - dans d'autres Interop, vous devez écrire complètement les noms de classe. fileName et slideToCopy - arguments, chaîne et nombre, respectivement.

 Dim app As New Microsoft.Office.Interop.PowerPoint.Application Dim pres As Microsoft.Office.Interop.PowerPoint.Presentation Dim newSlide As Microsoft.Office.Interop.PowerPoint.Slide pres = app.Presentations.Open(fileName) newSlide = pres.Slides(slideToCopy).Duplicate()(1) 


Plus loin dans la collection Shapes, qui contient tous les éléments de la diapositive, vous pouvez rapidement mettre à jour les informations nécessaires sur une nouvelle page

Travailler dans Word


Bien que les activités du pack d'activités Word fournissent des fonctionnalités Word de base, elles ne couvrent pas toutes les fonctionnalités de la bibliothèque Xceed DocX sur laquelle elles sont construites. Le cas le plus courant est de travailler avec des tables, mais il existe de nombreux autres cas.

Il existe suffisamment d' exemples différents dans le référentiel de projet pour comprendre où cette bibliothèque ou une bibliothèque similaire sera utile.

API Web (REST, SOAP)


REST / JSON est maintenant probablement le lien clé afin de fournir une intégration avec des systèmes représentant l'API.

La prise en charge de REST, SOAP et JSON est fournie via le pack d'activités Web .
Avec REST, tout est assez simple, comme il se doit: HTTP Request -> Deserialize JSON et maintenant nous avons déjà un JObject avec lequel nous pouvons faire ce que nous voulons. Afin de transférer des données vers le service Web, il existe un éditeur de paramètres pratique.

Mais pour SOAP, la fonctionnalité intégrée, malheureusement, est limitée, tous les types de services Web ne sont pas pris en charge, toutes les demandes ne sont pas traitées correctement. Si le service ne fonctionne pas pour vous, vous devez utiliser l'un des nombreux wrappers pour HttpClient, par exemple, SimpleSOAPClient ou écrire le vôtre (une variante de l'utilisation de SOAP à partir de C # ).

MISE À JOUR 04/03/19: Dans la version 2019.4, dont la bêta est déjà disponible en téléchargement, le composant est mis à jour, amélioré et refait. Vous pouvez donc vous attendre très bientôt à l'apparition d'un support SOAP normal

Travailler avec FTP


Ici, dans UiPath, tout est simple, il existe un ensemble d'actions prêt à l'emploi pour FTP inclus dans les activités de la communauté , bien qu'il convient de noter qu'à partir de la version 18.2 du pack d'activités FTP dans l'état obsolète . Mais toutes les fonctionnalités sont là, même SFTP est pris en charge (l'ensemble est basé sur SSH.NET ), bien que, malheureusement, le travail avec la clé client ne soit pas terminé.

.

Bases de données


UiPath fonctionne avec des bases de données via le fournisseur de données .NET. Pour MS SQL et MS Access, tout est simple, pour le reste vous devez configurer ODBC, et s'il n'est pas là, installez le pilote. Gardez à l'esprit que, comme la plate-forme est actuellement en 32 bits, nous devons alors télécharger le pilote approprié et la source de données ODBC doit être la même.

Voici un exemple de travail avec MySQL.

Configurer la connexion MySQL
Paramètres de la base de données MySQL distante de test (pilote d'ici ):

et vous y connecter depuis l'action


La poursuite du travail avec une base de données compatible SQL est assez standard - nous faisons des requêtes, nous obtenons un DataTable.

SAP via BAPI


Si votre SAP vous offre cette opportunité, vous pouvez essayer au lieu de travailler via l'interface utilisateur pour automatiser l'intégration avec SAP via le BAPI. Comme d'habitude, dans UiPath, il est prêt pour cela
Un ensemble d'actions qui inclut un assistant pour configurer une connexion à SAP. Il n'y a presque pas de programmation ici, mais c'est un exemple du fait que le chemin d'intégration standard n'est pas le seul possible.

En conclusion


J'espère qu'avec l'aide de cet article, j'ai pu parler des aspects de l'utilisation des robots qui ne sont pas si faciles à apprendre à l' Académie ou au Forum . Je serais heureux si quelqu'un s'intéresse ou aide à répondre aux questions liées au développement de robots.

Source: https://habr.com/ru/post/fr446092/


All Articles