Architecture

Vue d'ensemble

L’architecture d’une application faisant l’objet d’une automatisation s’organise de la manière suivante :



Logique de fonctionnement


Rôle et responsabilités

Les développeurs travaillent avec un Studio de développement installé sur leur poste ou sur un serveur dédié. Ce studio peut être couplé à un serveur de gestion de configuration de type Git (tel que Gitlab). Ils réalisent l’application métier portant les fonctions d’orchestration en utilisant le modèle d’application « Orchestrateur de traitements automatisés (OTA) » disponible sur Github, et le générateur Newmips (plateforme de développement "Low-code").


Une fois terminée, cette application est déployée sur un serveur Web et configurée pour assurer la communication externe avec les clients / usagers (email, SMS, notifications) et le dispatch des tâches aux robots.


Les robots sont installés sur des postes dédiés ou sur les postes de travail des collaborateurs. Ils accèdent aux applications portant le processus métier actuel et remonte l’avancement de leur activité à l’orchestrateur. Ce dernier dispose ainsi d’une vision globale et détaillée des tâches à traiter / en cours / traitées.


Fonctionnement des robots

Arborescence de travail des robots

L’arborescence des fichiers d’un robot (application Electron) est la suivante :

  • un répertoire « build » créé à la compilation de l’application
  • un répertoire « config » pour stocker les identifiants de connexion à l’orchestrateur
  • un répertoire « exec » comprenant un répertoire pour les modules node pré-compilés et un répertoire pour charger les programmes (Cf. structure décrite ci-après)
  • un répertoire « assets » pour stocker toutes les ressources statiques
  • un répertoire « utils » pour les librairies
  • un répertoire « html » pour les pages Web de l'application
  • un répertoire « scripts » pour les scripts de gestion de tâches
  • les fichiers principaux : main.js, robot.js, etc.



Structure des programmes

Par convention, un programme est une archive zippée dont la structure est la suivante :

  • un répertoire « download » pour stocker les fichiers téléchargés lors de la navigation
  • un répertoire « script » pour les bribes de code scripts
  • un répertoire « sequence » pour les séquences
  • un fichier de configuration à la racine « config.json » pour définir les étapes à franchir
Lorsque le robot exécute une tâche, il télécharge le programme et le dézippe dans le répertoire « exec/program ». Il nettoie ensuite le répertoire après exécution.



Environnement de fonctionnement

Afin de contrôler au maximum l’environnement dans lequel s’exécute le robot, la navigation s’effectue dans une fenêtre ElectronJS « BrowserWindow » indépendante de la fenêtre principale. Le robot peut ainsi exécuter ses tâches en parallèle d'un collaborateur connecté sur le poste ou en session fermée.


Pour les séquences, la position du curseur de la souris n’est ainsi plus dépendante du « look & feel » du navigateur (barres d’état ou de tâche activée, plugin supplémentaire venant modifier l’apparence de la fenêtre, etc.).



Exécution des programmes

L’exécution d’un programme repose sur le fichier de configuration qui fournit les étapes à respecter et les snippets à exécuter. Le robot charge l’URL de démarrage et lance les bribes de codes (script ou séquence) pour chaque étape.


Le robot exécute les scripts Javascript ou JQuery en direct depuis le code Electron. Nous utilisons pour cela la fonctionnalité « executeJavaScript » : win.webContents.executeJavaScript(code);


Le robot exécute également les séquences NodeJS en les incluant dans le code à la volée.


Chaque fois qu’une étape est franchie, le robot met à jour la tâche sur l’orchestrateur pour indiquer que la sous-tâche s’est bien ou mal passée. Si elle s’est mal passée, le robot remonte l’exception renvoyée par le processus.


Quand la tâche est terminée ou qu’une étape s’est mal passée, le statut de la tâche est mise à jour (OK ou ERROR).


A noter : Les modules nodes compilés utilisés par les programmes sont présents dans le répertoire « exec ». En cas de nécessité de mise à jour de ces programmes, le robot exécutera lui-même la suppression et la recompilation des modules nouvelle version. En pratique, on créé une tâche de nettoyage des modules au niveau de l’orchestrateur que l’on affecte au(x) robot(s) concerné(s).