Chapter 3 · leçon 8 sur 12
Connectez-vous pour suivre votre progression
Questions de cette leçonLes Automation Scripts représentent une pierre angulaire de la personnalisation de Maximo Manage, offrant une flexibilité considérable sans les contraintes du développement Java traditionnel. Ils s'insèrent directement dans l'architecture applicative de Maximo, permettant d'intercepter et de modifier le comportement du système à des points précis de son exécution.
Leur intégration est profonde : le code et la configuration des scripts sont stockés dans la base de données Maximo. Lors de l'exécution, les scripts compilés sont mis en cache, garantissant des performances optimales. Cette approche élimine le besoin de recompilation de fichiers ou de redémarrage du serveur d'applications, ce qui accélère considérablement le cycle de développement et de déploiement des personnalisations.
Historiquement, les personnalisations complexes dans Maximo nécessitaient des développements Java. L'introduction des Automation Scripts a offert une alternative puissante, réduisant la complexité et les coûts associés à la maintenance et aux mises à niveau. Cette section compare les deux approches.
Les Automation Scripts sont particulièrement avantageux pour les modifications de logique métier qui ne nécessitent pas de changements profonds dans l'architecture du système ou l'ajout de nouvelles fonctionnalités d'interface utilisateur complexes. Ils sont idéaux pour les validations, les calculs automatiques, et l'intégration légère.
| Caractéristique | Automation Scripts | Développement Java Personnalisé |
|---|---|---|
| Complexité de développement | Faible à modérée (Jython/JavaScript) | Élevée (Java, API Maximo, IDE) |
| Déploiement | Stocké en DB, pas de compilation/redémarrage serveur | Fichiers JAR, compilation, redémarrage serveur requis |
| Maintenance | Plus simple, modifications en direct via l'UI | Plus complexe, nécessite des compétences Java, gestion des versions |
| Impact sur les mises à niveau | Moins d'impact, souvent compatibles | Risque élevé de conflits, nécessite des tests approfondis |
| Performance | Bonne, scripts mis en cache à l'exécution | Très bonne, code compilé natif |
| Cas d'usage typiques | Validations de champs, calculs, règles métier simples, intégration MIF, actions de workflow/escalade | Nouvelles applications, modifications profondes de l'UI, intégrations complexes avec des systèmes externes |
| Compétences requises | Connaissance Jython/JavaScript, API Maximo | Connaissance Java approfondie, API Maximo, architecture J2EE |
| Coût total de possession | Généralement inférieur | Généralement supérieur |
La configuration des Automation Scripts dans Maximo se fait principalement via l'application `Automation Scripts`. Cette application permet de créer, éditer, activer et gérer les scripts. Chaque script est défini par un nom, une description, le langage de scripting (Jython ou JavaScript) et, surtout, un ou plusieurs points de lancement.
Les points de lancement (launch points) sont cruciaux car ils déterminent quand et où le script sera exécuté. Ils peuvent être associés à des objets métier, des attributs, des actions, des workflows, des escalades ou même des messages d'intégration. Par exemple, un script peut être configuré pour s'exécuter avant la sauvegarde d'un enregistrement `WORKORDER` pour valider certaines données, ou après la modification d'un `ASSETNUM` pour mettre à jour des informations connexes.
Un exemple concret pourrait être un script qui, lors de la création d'une nouvelle `WORKORDER` (Object Launch Point sur `WORKORDER`, événement "Add"), vérifie si le `ASSETNUM` est un équipement critique. Si c'est le cas, il pourrait automatiquement définir la priorité de la `WORKORDER` à "Urgent" et ajouter une description spécifique, sans aucune intervention manuelle de l'utilisateur.
Le cycle de vie d'un Automation Script dans Maximo est relativement simple et direct, reflétant sa nature de personnalisation légère. Il commence par la conception de la logique métier et se termine par son déploiement et sa maintenance. L'avantage majeur est la rapidité de mise en œuvre et la facilité d'ajustement.
Contrairement aux développements Java qui suivent un cycle de développement logiciel plus lourd (codage, compilation, déploiement WAR/EAR, redémarrage), les Automation Scripts sont gérés directement via l'interface utilisateur de Maximo, ce qui les rend très agiles pour les administrateurs et les consultants fonctionnels.
Les Automation Scripts peuvent être déclenchés par de nombreux événements. Un piège courant est de ne pas anticiper l'ordre d'exécution des scripts ou les effets secondaires qu'un script pourrait avoir sur d'autres processus métier ou scripts. Par exemple, un script `beforeMboData` qui modifie une valeur pourrait affecter la logique d'un autre script `afterMboData` ou d'une validation standard de Maximo. Il est crucial de bien comprendre le cycle de vie des objets et les points d'extension pour éviter des comportements inattendus ou des boucles infinies.
Bien que les Automation Scripts soient plus simples que le Java, le débogage peut être délicat. Les erreurs non gérées dans un script peuvent entraîner des blocages ou des messages d'erreur génériques pour l'utilisateur, sans indication claire de la cause. Sans une bonne gestion des exceptions (`try-except` en Jython, `try-catch` en JavaScript) et une journalisation adéquate (utilisation des fonctions de log de Maximo), identifier la source d'un problème peut être chronophage. Il est essentiel d'implémenter une journalisation robuste et de tester les scripts dans des environnements de développement avant le déploiement en production.
Bien que les Automation Scripts soient performants grâce à la mise en cache, un script trop complexe ou mal optimisé peut dégrader les performances du système. Par exemple, un script qui effectue des requêtes lourdes en base de données ou des boucles itératives sur de grands ensembles de données à chaque événement d'objet peut ralentir considérablement l'application. Il est important de garder les scripts concis, ciblés et d'optimiser les accès aux données. Pour des logiques très complexes ou des traitements de masse, d'autres mécanismes comme les `CRONTASK` ou les développements Java pourraient être plus appropriés.
Les Automation Scripts offrent une plus grande agilité, ne nécessitent pas de recompilation ou de redémarrage du serveur, sont stockés directement en base de données, et sont généralement plus faciles à maintenir et à mettre à niveau. Ils réduisent le coût total de possession pour de nombreuses personnalisations métier.
1. Object Launch Point : Exécuter un script avant la sauvegarde d'un `WORKORDER` pour valider des champs obligatoires. 2. Attribute Launch Point : Déclencher un script lorsque le `STATUS` d'un `ASSET` change pour mettre à jour un champ connexe. 3. Action Launch Point : Associer un script à un bouton personnalisé dans l'UI pour exécuter une logique métier spécifique.
À partir de Maximo 7.6, les langages de scripting nativement supportés pour les Automation Scripts sont Jython (une implémentation de Python) et JavaScript.
Le code et la configuration des Automation Scripts sont stockés directement dans la base de données Maximo. Cela signifie qu'aucune compilation externe n'est requise et que les scripts prennent effet immédiatement après activation, sans nécessiter de redémarrage du serveur d'applications.