Interactions avec une BDD MongoDB
Introduction
Dans ce chapitre, nous allons investiguer les interactions possibles d’UiPath sur un SGBD (système de gestion de bases de données) très particulier, MongoDB.
Le SGBD MongoDB est très différent des systèmes relationnels MySQL et Microsoft SQL Server étudiés dans les chapitres Interactions avec une BDD MySQL locale, Interactions avec une BDD MySQL distante et Interactions avec une BDD Microsoft SQL Server.
Système de gestion de bases de données MongoDB
1. Présentation de MongoDB
Il nous faut tout d’abord maîtriser quelques bases sur MongoDB et savoir l’installer (localement ou sur un site distant).
Dans les développements informatiques les plus récents, les serveurs de gestion de bases de données relationnelles (SGBD-R) comme MySQL ou encore Microsoft SQL Server sont de plus en plus concurrencés par des serveurs de données de type NoSQL comme MongoDB.
Les SGBD-R sont basés sur des principes définis il y a plus de 60 ans (travaux de Edgar Frank Codd en particulier) et constituent des solutions de stockage présentant des atouts indéniables. Citons principalement :
-
Le fait que la gestion de la recherche des données se fait via un langage d’extraction normé, le SQL. C’est le moteur du SGBD qui prend donc en charge principalement l’effort de recherche des données au travers d’ensembles de données, et ceci par l’intermédiaire d’instructions basées sur l’algèbre relationnelle (sélections, intersections, unions…).
-
Par ailleurs, ce type d’architecture découple totalement les applications clientes (peu importe le langage de programmation par l’intermédiaire duquel elles sont écrites) de la structure physique du stockage des données.
-
Il est également souvent demandé aux SGBD-R de gérer des contraintes d’intégrité sur les données sans que cela ait besoin d’être pris en charge par les applications (pas de possibilité de supprimer des lignes d’une facture si la facture (en-tête) existe encore par exemple…).
-
Enfin, les SGBD-R (avec l’appui des langages de programmation et du SQL) sont en mesure d’isoler des traitements (et de les annuler le cas échéant) et de protéger les données de processus parallèles. Il s’agit vraiment de la solution idéale pour les accès concurrents.
Les problématiques de stockage de données ont au fil du temps un peu évolué. Avec l’avènement du Web, les besoins sont très différents. La quantité de données s’accroît de manière exponentielle...
Application « Liste de bases de données MongoDB »
1. Présentation de l’application
Ce premier processus UiPath basé sur le serveur local MongoDB a uniquement pour objectif de lister les noms des bases de données MongoDB hébergées. Nous devrions y trouver les trois bases de données admin, config et local, qui sont des bases de données dites « système », ainsi que la base de données voitures déployée dans le cadre de la section Système de gestion de bases de données MongoDB.
2. Application UiPath
La particularité des processus UiPath de ce chapitre est qu’ils vont tous utiliser une dépendance non fournie par UiPath. Il s’agit de la dépendance InternalLabs.MongoDB.Activities développée par la société du même nom. Cette dépendance est disponible dans la section Place de marché.

Le processus se présente comme ceci (toutes les activités sont dépliées) :

L’ensemble du processus est intégré dans un conteneur de type InternalLabs.MongoDB.Activities.MongoDBApplicationScope.
Cette activité sera trouvée dans le gestionnaire d’activités à gauche de l’écran de l’interface d’UiPath Studio :

Les propriétés de cette activité...
Application « Liste de collections d’une base de données MongoDB »
1. Présentation de l’application
Ce second processus UiPath va permettre de lister les noms des collections présentes dans la base de données voitures déployée dans la section Système de gestion de bases de données MongoDB. Nous devrions y trouver uniquement la collection voitures_sport.
2. Application UiPath
Le processus se présente comme ceci (toutes les activités sont dépliées) :

Le scope de l’application est identique à celui vu dans l’application précédente. Il contient la chaîne de connexion au serveur MongoDB local.
L’activité Listage des noms des collections est de type InternalLabs.MongoDB.Activities.ListCollections et a les propriétés suivantes :

La propriété Input/Database indique le nom de la base de données pour laquelle la liste des collections est souhaitée, dans notre cas voitures.
La propriété Output/Collection Names est un tableau de chaînes de caractères nommé listeCollections.
Consultons maintenant les variables mémoire associées à notre processus UiPath au travers du gestionnaire de données :

Nous y découvrons également la variable affichageListeCollections qui servira à...
Application « Liste des documents de la collection voitures_sport »
1. Présentation de l’application
Ce troisième processus UiPath va permettre de lister les noms des documents de la collection voitures_sport présente dans la base de données voitures.
À titre indicatif, ces documents ont été intégrés dans la collection dans la section Système de gestion de bases de données MongoDB :

2. Application UiPath
Le processus est présenté ci-après avec toutes ses activités dépliées :

Le scope de l’application est une fois de plus identique à l’application précédente et contient la chaîne de connexion au serveur MongoDB local.
L’activité Listage des documents de la collection est de type InternalLabs.MongoDB.Activities.Find et a les propriétés suivantes :

La propriété Input/Collection indique le nom de la collection, voitures_sport dans notre cas.
La propriété Input/Database indique le nom de la base de données MongoDB, c’est-à-dire voitures.
La propriété Input/Query permet de filtrer les documents avec un formalisme JSON. Dans notre cas {} sert à préciser que tous les enregistrements sont souhaités. Il aurait été possible d’utiliser...
Application « Liste filtrée de la collection voitures_sport »
1. Présentation de l’application
Ce processus UiPath est une simple extension du précédent, une saisie d’un filtre sur la marque (activité Input Dialog) a été ajoutée.
2. Application UiPath
Le processus est présenté ci-après avec plusieurs activités repliées :

La saisie de la marque (activité InputDialog), la préparation de la variable queryMongoDB (activité Assign) et l’affichage de contrôle de cette variable (activité MessageBox) ont été regroupés dans une séquence nommée Préparation du filtrage.
Vérifions la liste des variables mémoire du processus via le gestionnaire de données :

La variable marqueVoiture sera associée à la boîte de dialogue de saisie de la marque.
La variable listeDocuments a déjà été vue dans l’application de la section Application « Liste des documents de la collection voitures_sport ».
La variable queryMongoDB contiendra la requête au format JSON qui sera traitée par le moteur de base de données du serveur MongoDB.
La saisie de la marque s’effectuera au travers de l’activité Saisie de la marque :

Cette activité n’amène...
Application « Ajout d’une collection »
1. Présentation de l’application
Ce processus UiPath ne présente pas de difficulté majeure, il s’agit d’ajouter une collection voitures_sport_FRA dans la base de données MongoDB voitures.
2. Application UiPath
Le processus est présenté ci-après complètement :

L’activité nommée Création de la collection ’voitures_sport_FRA’ est de type InternalLabs.MongoDB.Activities.CreateCollection et a les propriétés suivantes :

3. Compte rendu d’exécution
Le message suivant apparaît à la fin de l’exécution du processus :

Il reste à vérifier que la collection voitures_sport_FRA a bien été créée, nous utiliserons pour cela le logiciel MongoDB Compass :

Si le processus UiPath est relancé, il ne sera pas en mesure de récréer une seconde occurrence de la collection voitures_sport_FRA. Si celle-ci existe et qu’elle contient des documents, ceux-ci seront gardés intacts.
Application « Suppression d’une collection »
1. Présentation de l’application
Ce processus UiPath est aussi simple en termes de conception. Il s’agit de supprimer la collection voitures_sport_FRA créée dans la base de données MongoDB voitures par le processus de la section Application « Ajout d’une collection ».
2. Application UiPath
Le processus est présenté ci-après complètement :

L’activité nommée Suppression de la collection ’voitures_sport_FRA’ est de type InternalLabs.MongoDB.Activities.DropCollection et a les propriétés suivantes :

3. Compte rendu d’exécution
Le message suivant apparaît à la fin de l’exécution du processus :

Il reste à vérifier que la collection voitures_sport_FRA a bien été supprimée, c’est le cas :

Si le processus UiPath est lancé alors que la collection voitures_sport_FRA existe avec des documents intégrés, l’ensemble (documents et collection) est supprimé.
Si la collection voitures_sport_FRA aucun message particulier n’est prévu. Ce cas de figure aurait pu être géré dans le processus.
Application « Export des documents d’une collection »
1. Présentation de l’application
Il est possible d’exporter une collection d’une base de données MongoDB au format JSON depuis le logiciel MongoDB Compass pour ensuite pouvoir importer les documents dans une autre collection. Cela constitue un moyen de réaliser des sauvegardes des données.
Ce processus UiPath que nous allons étudier va exporter les documents de la collection voitures_sport intégrée dans la base de données voitures.
2. Application UiPath
Dans la mesure où le processus est relativement conséquent, il est présenté ci-après avec ses séquences repliées :

L’option prise dans cette application a été de ne pas utiliser les activités spécifiques qui permettent de manipuler le flux JSON constitué de la description de l’ensemble des documents de la collection.
Nous avions vu dans les processus dans les sections Application « Liste des documents de la collection voitures_sport » et Application « Liste filtrée de la collection voitures_sport » comment lire les documents de la collection voitures_sport. Dans la présente application, la démarche sera un peu identique, il nous faut aussi passer en revue les documents au travers d’une boucle ForEach. Ceci sera vu plus loin lors du commentaire concernant l’activité Pour chaque document de la collection ’voitures_sport’.
Rappelons que cette boucle affiche (à titre indicatif pour l’un des documents de la collection) ceci (voir la propriété currentText) :

Notre objectif est d’exporter l’ensemble de la collection dans un fichier JSON nommé voitures_sport_sauvegarde.json, stocké dans le répertoire du projet UiPath.
L’enjeu est de construire un fichier qui sera ensuite importable dans une autre collection (nous appellerons...
Application « Ajout d’un document dans une collection »
1. Présentation de l’application
Voyons comment intégrer de nouveaux documents dans une collection MongoDB.
Le processus UiPath présenté proposera à l’utilisateur de saisir les trois champs marque, modele et pays au travers de trois boîtes de dialogue indépendantes, les valeurs saisies étant ensuite intégrées dans la collection voitures_sport de notre base de données MongoDB voitures.
2. Application UiPath
Le processus est de taille relativement modeste :

Dépliez la séquence Saisie de la marque.

La valeur saisie sera stockée dans la variable mémoire marque définie dans le gestionnaire de données :

La logique sera la même pour la saisie du modèle et du pays.
Passez à la préparation de la valeur à insérer dans la collection :

La valeur de la variable ajoutJSON est définie comme suit :
"{ 'marque' : '" & marque & "', 'modele' : '" & modele & "', 'pays' : '" & pays & "' }"
L’ajout s’effectue par l’intermédiaire de l’activité Ajout du document de type InternalLabs.MongoDB.Activities.Insert selon les modalités définies...
Autres activités de la dépendance « InternalLabs » pour MongoDB
La dépendance InternalLabs pour MongoDB propose d’autres activités permettant de manipuler les bases de données et les collections sous MongoDB. Il n’est pas envisageable de les étudier toutes dans le cadre de ce livre.
Pour aller plus loin
Un focus important a été fait sur le pilotage des collections et documents d’une base de données MongoDB sous UiPath au travers des neuf processus étudiés.
Vous pouvez donc estimer avoir une maîtrise suffisante du sujet.