Exemples d'utilisation des scripts d'automatisation lors du traitement à l'aide des canaux et services
Le traitement des canaux et services utilise un enregistrement de données du système source comme valeur d'entrée, manipule les données selon les besoins et construit un enregistrement de données pour le système cible. Les exemples de scripts Python interrogent les données d'entrée et fournissent la logique permettant de manipuler les données avant que les données de sortie ne soient construites.
Lorsque Maximo Asset Management démarre une transaction d'intégration, la structure d'objet fournit un élément irData (données d'enregistrement internes) à un canal de publication ou d'appel. Le traitement manipule l'élément irData et construit un élément erData (données d'enregistrement externes) avant de transmettre le message à son destinataire. Les transactions du canal d'appel peuvent nécessiter une réponse du système externe. Le traitement des réponses transmet l'élément erData au canal d'appel, qui manipule les données de réponse et construit l'élément irData.
Lorsqu'un système externe démarre une transaction d'intégration, le message fournit l'élément erData au service d'entreprise. Le traitement manipule l'élément erData et construit un élément irData avant de transmettre le message à la structure d'objet associée. Lorsque les messages nécessitent une réponse, la structure d'objet fournit l'élément irData au service d'entreprise. Le traitement manipule les données et construit l'élément erData qui est transmis au destinataire.
Les exemples sont composés de scripts simples pouvant être utilisés à des fins de test. Vous pouvez utiliser les fonctions d'importation et d'exportation de données de l'application Systèmes externes pour démarrer le test des scripts par les transactions.
Exemple : Script changeant la description des actifs opérationnels sur les transactions sortantes
Dans ce scénario, la structure d'objet MXASSET fournit les données irData au canal de publication MYASSET à des fins de traitement. Un script d'automatisation est configuré pour s'exécuter sur la classe d'exit externe du canal de publication. Le script vérifie le statut de l'actif dans l'élément irData. S'il est en cours de fonctionnement, le script insère une valeur dans la zone de description et consigne un message dans le fichier journal. L'élément erData est ensuite construit et transmis au système externe.
if irData.getCurrentData("STATUS") == 'OPERATING' :
irData.setCurrentData("DESCRIPTION","hello")
print "MYASSET description change"
Exemple : Script changeant la description des actifs opérationnels sur les transactions entrantes
Dans cet exemple, le service d'entreprise MYASSET traite un message entrant pour la structure d'objet MXASSET. Un script d'automatisation insère un script sur la classe d'exit externe du service d'entreprise. Le script vérifie le statut de l'actif dans l'élément erData. S'il est en cours de fonctionnement, le script insère une valeur dans la zone de description et consigne un message dans le fichier journal. L'élément irData est ensuite construit et transmis à la structure d'objet associée à des fins de traitement.
if erData.getCurrentData("STATUS") == 'OPERATING':
erData.setCurrentData("DESCRIPTION","hello inbound")
print "MYASSET inbound description has changed"
Exemple : Script changeant la description des lignes d'un bon de commande à l'aide d'une variable de script d'automatisation
Dans cet exemple, la structure d'objet MXPO fournit l'élément irData au canal de publication MYPO à des fins de traitement. Un script d'automatisation est configuré pour s'exécuter sur la classe d'exit externe du canal de publication. Une valeur littérale, world, est définie comme variable d'entrée sur le script d'automatisation. Le script recherche dans l'élément irData les bons de commande qui contiennent des lignes. Il numérote chaque ligne du bon de commande à l'aide d'une séquence commençant par 1, définit hello comme valeur dans la zone de description et ajoute la variable d'entrée issue du script d'automatisation. Le script met à jour le bon de commande parent avant de construire l'élément erData et de le transmettre au système externe.
lines = irData.getChildrenData("POLINE")
i = 0
if lines is not None:
for value in lines:
++i
irData.setAsCurrent(lines,i);
irData.setCurrentData("DESCRIPTION","hello"+world)
irData.setParentAsCurrent()
Exemple : Script ignorant les transactions en fonction du statut des enregistrements
Dans cet exemple, la structure d'objet MXPO est envoyée au canal de publication MYPO2 à des fins de traitement. Un script d'automatisation est configuré pour s'exécuter sur la classe d'exit utilisateur avant que la classe d'exit externe ne s'exécute. Le script recherche dans l'élément irData les bons de commande dont le statut est ATAPP et ignore le traitement de ces bons de commande.
if irData.getCurrentData("STATUS") == 'ATAPP' :
errorgroup = "iface"
errorkey ="SKIP_TRANSACTION"
Exemple : Script consignant les informations de transaction dans un fichier journal à des fins d'identification et de résolution des problèmes
Dans cet exemple, la structure d'objet MXASSET fournit les données irData au canal de publication MYASSET2 à des fins de traitement. Un script d'automatisation est configuré pour s'exécuter sur la classe d'exit externe. Le script recherche dans l'élément irData les actifs dont le statut est opérationnel, consigne les informations de transaction dans un fichier journal, puis construit l'élément erData sans apporter de modification. Pour pouvoir consigner les informations sur la transaction, la fonction de journalisation doit être définie sur le mode débogage. Dans l'application Journalisation, le consignateur est défini sur les scripts d'automatisation et le niveau de journalisation est défini sur DEBUG. Dans l'application Scripts d'automatisation, le niveau de journalisation du script est défini sur DEBUG.
if irData.getCurrentData("STATUS") == 'OPERATING' :
print "Test script
variable VAR_EXIT_IFACETYPE " + ifaceTypeprint "Test script
variable VAR_EXIT_IFACENAME " + ifaceNameprint "Test script
variable VAR_EXIT_EXTSYSTEM " + extSystemprint "Test script
variable VAR_EXIT_MESSAGETYPE " + messageTypeprint "Test script
variable VAR_EXIT_EXTSYSTEM " + extSystemprint "Test script
variable VAR_EXIT_OSNAME " + osNameprint "Test script
Lorsqu'un actif est exporté, les informations de débogage ci-dessous sont consignées dans un fichier journal :
18 Mar 2014 11:35:06:877 [DEBUG] [MXServer] [CID-MXSCRIPT-2022] execution completed
for cached compiled script PUBLISH.MYASSET.EXTEXIT.OUT for launch point null
Test script variable VAR_EXIT_IFACETYPE MAXIMO
Test script variable VAR_EXIT_IFACENAME MYASSET2
Test script variable VAR_EXIT_EXTSYSTEM MYEXTSYS
Test script variable VAR_EXIT_MESSAGETYPE Publish
Test script variable VAR_EXIT_OSNAME MXASSET