Automations : zoom sur la révolution de FME Server

Il arrive qu’une nouvelle fonctionnalité que l’on pensait mineure se révèle être importante. Parfois, elle est tellement géniale que l’on se demande comment nous avons pu nous en passer. Il se peut aussi que cette nouvelle fonctionnalité soit un tel bond en avant qu’elle devient une véritable révolution par rapport aux anciennes : c’est le cas du mode Automations de FME Server.

Avant-propos

Cet article est une adaptation française de l’article The Next Generation: Enterprise-Level Automations in FME Server 2019, écrit par Mark Ireland pour Safe Software, publié le 7 février 2019 sur safe.com. La présente adaptation a été mise à jour pour FME Server 2020.

Pourquoi le mode Automations est-il si important ? Pour le savoir, il suffit de voir ce qui était disponible avant sur FME Server : le système de Notifications, qui embarquait les notions de « topics », « publishers » et « subscribers ». Pour créer un processus automatisé, il fallait donc que ces éléments soient paramétrés pour pouvoir interagir correctement entre eux. Les concepts de notification sont si déroutants qu’il a fallu environ trois ans de révision à Mark Ireland pour arriver à les présenter clairement dans les formations proposées par Safe Software.

Même s’il a finalement été possible d’expliquer cette fonctionnalité aussi bien que les autres, FME consiste avant tout à simplifier les idées compliquées : ce système de notifications n’avait pas besoin d’être aussi complexe. C’est pourquoi Safe Software a conçu un nouvel outil – le mode Automations – apparu avec FME Server 2019.

Comme vous le verrez, il s’agit d’une simplification importante des notifications et de bien d’autres choses encore…

Qu’est-ce qu’Automations ?

Automations permet d’automatiser des flux de traitement de données avec FME Server. Cela inclut les notifications, mais aussi les tâches planifiées et les événements système. Les événements système (comme nous le verrons) sont des notifications concernant des actions d’administration de FME Server.

Automations combine donc un certain nombre de fonctions différentes en une unique et nouvelle composante.

L’autre force d’Automations est son interface. Ce mode utilise une interface web intuitive de type « glisser-déposer » pour définir votre automatisation de manière graphique, comme c’est le cas ici :

Si vous comprenez comment utiliser des outils similaires à FME Workbench, alors l’utilisation d’Automations sera très simple. Voyons comment commencer…

Démarrer avec Automations

Lorsque vous choisissez Automations dans le menu de FME Server, vous ouvrez une boîte de dialogue dans laquelle vous pouvez ouvrir des automatisations existantes ou en créer de nouvelles :

La création d’une nouvelle Automation ferme la boîte de dialogue et crée un espace de travail vide (oui, là aussi, comme dans Workbench). Il y a un menu et une barre d’outils en haut :

…et un petit ensemble de boutons en bas. Ces boutons sont des outils permettant de définir un Déclencheur (en vert) une Action (en orange) et une Action externe (en bleu). Il suffit de les glisser-déposer sur l’espace de travail pour les utiliser :

Voyons maintenant ce que chacun d’entre eux signifie…

Déclencheurs

Un Déclencheur fournit des informations à Automations. Comme mentionné, il s’agit d’une combinaison de différents outils, il peut donc s’agir d’une tâche programmée, d’un événement système (plus d’informations à ce sujet dans un instant) ou de l’un des nombreux types de notifications disponibles.

En cliquant sur l’objet, un menu s’ouvre sur la droite pour vous permettre de sélectionner le type de déclencheur et ses paramètres :

Dans cet exemple, nous ajoutons une tâche planifiée. Lorsque ce déclencheur est activé, il lance donc l’étape suivante du traitement, qui est généralement une Action…

Actions

Plaçons maintenant une Action. Remarquez tout d’abord que les objets ont des ports d’entrée/sortie, ce qui nous permet de relier facilement le Déclencheur à l’Action :

En vérifiant les paramètres de l’action, vous pouvez voir un certain nombre d’options :

Bien sûr, Exécuter un traitement est l’option clé. Elle vous permet de lancer l’exécution n’importe quel traitement grâce à une boîte de dialogue d’apparence familière…

…ce qui relie FME Workbench et l’ensemble de ses 500+ Transformers à vos flux de travail en ligne (mais c’est une autre histoire). Notez par ailleurs les deux ports de sortie Succès/Echec sur une action Exécuter un traitement :

Cela signifie que vous pouvez facilement effectuer des actions sans avoir à définir manuellement les composants du système de notification !

Vous pouvez donc enchaîner les traitements les uns après les autres, ou – comme ci-dessus – envoyer la notification d’échec à une action de type « Loguer un message ». Celle-ci intègre un éditeur de texte pour personnaliser votre résultat (cliquez pour agrandir l’image ci-dessous) :

De plus, vous pouvez aussi choisir où écrire le fichier, par exemple ici dans à $(FME_SHAREDRESOURCE_LOG)/TrainingUpdateLog

Les deux autres actions sont Fusionner et Filtrer, mais nous y reviendrons d’ici peu. Pour l’instant, attardons-nous sur les Actions externes.

Actions externes

L’Action externe est un peu le Writer d’Automations, c’est-à-dire les données destination. La majorité de ces Actions externes est de type notification :

Une Action externe est donc déclenchée par une alerte provenant d’une Action. Vous pourriez aussi passer outre l’Action et aller directement du Déclencheur à l’Action externe.

Sauvegarde et activation

Une fois votre Automation terminée, elle peut être enregistrée (vous pouvez d’ailleurs lui ajouter un certain nombre de tags) puis activée :

Gardez toutefois à l’esprit que, malgré les similitudes, ce n’est pas comme Workbench et son bouton Exécuter. Il s’agit de tâches automatisées qui traitent les données provenant d’autres processus et qui peuvent être déclenchées à tout moment. Il est important de pouvoir désactiver un workflow pendant qu’il est en cours de développement, et de ne l’activer que lorsqu’il est prêt.

Le bouton Lancer l’Automation vous permet de faire cela. En fait, il permet non seulement l’automatisation, mais aussi la lecture seule. Les modifications ultérieures ne peuvent être effectuées que lorsque l’Automation est à nouveau désactivée.

De cette façon, un flux de travail ne peut pas être déclenché en même temps que vous effectuez des modifications. En outre, il permet à un auteur de désactiver temporairement l’automatisation pour d’autres raisons.

Variables d’événements

Dans une interface graphique, une condition essentielle est que chaque objet doit recevoir des informations de l’objet précédent. Prenez FME Workbench : si vous créez un attribut dans un Transformer (AreaCalculator par exemple), cet attribut devient disponible pour le Transformer suivant (disons StatisticsCalculator) :

Il en va de même ici. Les informations passent d’un composant à l’autre dans Automations grâce à ce que nous appelons des variables d’événements. L’objet Action reçoit des informations de l’objet Déclencheur. Il existe plusieurs informations sur l’événement qui peuvent être transmises. Dans le cas d’une action Exécuter le traitement, ces variables d’événements sont transmises dans le traitement en utilisant des paramètres publiés.

Réfléchissons à ce que cela signifie concrètement. Les notifications traditionnelles peuvent transmettre des informations aux paramètres publiés, mais pas de manière aussi simple. De plus, les notifications traditionnelles ne transmettent que le contenu des e-mails en JSON brut. Ici, vous pouvez choisir de recevoir (par exemple) l’objet ou l’expéditeur de l’e-mail en tant que simples valeurs. Ces informations ne sont pas stockées dans une chaîne JSON complexe qui doit être déchiffrée dans votre traitement !

Les événements disponibles dépendent du type de Déclencheur utilisé. Un Déclencheur de type « Email » fournira l’objet de l’e-mail (par exemple) tandis qu’un Déclencheur de type « Directory Watch » (Surveillance de dossier) fournira un nom de fichier et un chemin d’accès.

Les paramètres d’une Action externe peuvent également recevoir des informations des événements clés :

…ce qui facilite encore une fois la transmission des informations entre les composants sans avoir à recourir au JSON.

Filtres et fusions

Revenons maintenant aux objets d’action, en particulier les actions Filtre et Fusion.

L’action Filtre (Filter) est une version basique du Transformer Tester. Elle vous permet d’effectuer des tests de base :

Comme il a la même capacité d’accès aux variables d’événements, vous pouvez par exemple tester l’adresse « Envoyé à » d’un e-mail entrant et le rediriger en conséquence. Dans l’Automation ci-dessus, un des deux traitements est exécuté sur la base d’une action de filtrage (par exemple sur l’adresse électronique entrante).

L’action Fusionner est évidemment l’inverse :

Quelle est la nécessité d’une fusion ? La raison est qu’un Déclencheur peut lancer plusieurs actions : par exemple, dans l’automatisation ci-dessus, un e-mail entrant déclenche deux traitements différents. Si les deux étaient directement connectés à l’Action externe, alors ils la déclencheraient tous deux. Il y aurait donc deux notifications en sortie.

Mais si l’on souhaite une seule notification, l’action Fusionner peut être utilisée. Non seulement elle fusionne les résultats des traitements, mais elle maintient l’ensemble du processus jusqu’à ce que les deux soient terminés. Considérez cette action comme une combinaison du FeatureJoiner et du FeatureHolder dans le Workbench.

En bref, l’action Fusionner est un moyen de contrôler le flux d’actions dans une Automation.

Événements système

Les types d’entrée d’un Déclencheur sont les tâches programmées, les différents types de notifications et les événements système. Si vous utilisez déjà FME Server, les notifications et les tâches programmées vous sont sûrement familières, mais les événements système sont apparus avec Automations en 2019.

Les événements système sont des notifications qu’une certaine action s’est produite sur le serveur dans son ensemble.

Il s’agira probablement davantage de signalements administratifs que de signalements relatifs au traitement des données. L’Action externe la plus évidente pour ce type d’événement serait un e-mail à l’administrateur du système, par exemple pour lui faire savoir que la licence FME est sur le point d’expirer ou qu’elle a expiré.

Avantages par rapport aux notifications

Les avantages d’Automations par rapport aux notification traditionnelle sont faciles à identifier.

Tout d’abord, l’éventail de choix d’entrées et de sorties est plus large que celui du système traditionnel de publishers et subscribers. Ensuite, la configuration est beaucoup plus facile à mettre en œuvre et à visualiser grâce à l’interface graphique. Enfin, l’ensemble du flux de notifications est grandement simplifié car les topics sont tous traités automatiquement.

Pour les utilisateurs existants, un autre avantage est que les Déclencheurs et les Actions externes peuvent être des topics. Vous pouvez donc utiliser une nouvelle automatisation et la relier aux configurations de notification existantes. Et bien sûr, la configuration des notifications existe toujours au cas où vous souhaiteriez l’utiliser.

Une autre fonctionnalité, moins évidente, est le fonctionnement en parallèle. Si un e-mail déclencheur unique (par exemple) démarre quatre traitements distincts…

…alors FME assigne chaque traitement à un moteur différent. Automations soumet les traitements et attend qu’ils soient terminés (à l’aide de l’action Fusionner).

De plus (en poursuivant cet exemple), si quatre e-mails arrivent simultanément, cela déclenche quatre automatisations distinctes. Chacune d’entre elles exécute quatre tâches sur (potentiellement) seize moteurs différents. Vous n’avez donc pas nécessairement une file d’attente de traitements et obtenez autant de traitements que vous avez de moteurs disponibles.

Oh… encore une chose : les automatisations réalisées avec Automations peuvent être sauvegardées dans les Projets FME Server pour être facilement partagées avec d’autres utilisateurs. Ce n’est pas particulièrement nouveau, parce que vous pouviez déjà le faire avec les notifications. Cependant, ce qui est nouveau, c’est que le support pour les projets FME Server est désormais disponible sur FME Hub pour partager vos créations FME avec d’autres utilisateurs !

Les nouveautés de FME Server 2020

Parmi les nouveautés FME Server 2020, le mode Automation bénéficie de deux nouvelles fonctionnalités majeures : la personnalisation des ports de sortie et la fonction de boucle.

Du côté des ports de sortie personnalisés, FME Desktop dispose maintenant d’un Writer FME Server Automations :

Ces Writers apparaissent sous forme de ports de sortie d’une action « Exécuter un traitement », permettant de ne pas se limiter à des ports liés à la réussite ou l’échec du traitement. Notez au passage qu’à l’heure actuelle ces nouveaux ports de sortie apparaissent par ordre alphabétique sur Automations.

Du côté des boucles, cette fonctionnalité s’active dans le menu supérieur gauche d’Automations. Une fois activée, les connexions retournant en arrière seront possibles et apparaîtront en pointillés. Attention bien sûr à ne pas créer de boucles infinies !

Ci-dessous, un exemple d’une boucle permettant un traitement récursif dans une arborescence de dossier : pour chaque répertoire atteint dans un dépôt, le projet .fmw traite les fichiers et les envoie sur un serveur FTP. S’il tombe sur un répertoire, il retourne en arrière pour que son contenu soit traité de la même manière.

Pour un aperçu détaillé de ces nouveautés, nous vous invitons à consulter la vidéo de l’intervention d’Alexandre Bizien, expert FME à Veremes, durant la Conférence FME 2020 – Web Edition.

Mise à jour FME Server 2020.2

Les déclencheurs ont un nouveau port de sortie dédié à gérer les éventuels échecs

Deux nouvelles options viennent s’ajouter au menu latéral : vous pouvez créer des signets (les actions englobées se déplaceront automatiquement avec) ainsi que des commentaires.

En dehors des dimensions, les options de personnalisation sont -pour le moment- limitées.

En résumé

Lorsque l’auteur de l’article original, Mark Ireland (alias FME Evangelist) a essayé pour la première fois Automations, il a rapidement créé un workflow pour envoyer un rapport quotidien sur les mises à jour des cours de formation. Il gère un traitement selon une planification journalière, écrit en sortie sur Slack (via le Transformer SlackConnector) et envoie une notification par courrier électronique. Il était rapide et intuitif de le configurer de cette façon, sans avoir à s’occuper des topics de notification.

Combinez cela avec le nouveau Workspace Viewer également dans FME Server, et l’interface semble de plus en plus hors de ce monde ! Le mode Automations est un pas en avant aussi imposant qu’important qui préfigure le type d’interface que nous verrons de plus en plus dans un avenir proche.

Comme l’a indiqué Dale Lutz, co-fondateur de Safe Software, lors de l’annonce d’Automations : il s’agit du plus grand changement apporté à FME depuis FME Workbench au début des années 2000.

Si vous voulez voir quelques exemples d’Automations en action, jetez un coup d’œil à ce webinaire de Safe Software (en anglais). En outre, n’hésitez pas à suggérer à Safe Software des idées d’automatisations particulières que vous aimeriez voir. Safe Software dispose d’experts dédiés à la conception de scénarios de démonstration qui seront heureux de mettre vos idées en pratique.

Enfin, vous pouvez aussi visionner l’intervention « Développer une chaîne de contrôle de données avec le mode Automations de FME Server et Qualigéo » de Romain Bommé, expert FME à Veremes, présentant un exemple de cas d’utilisation.