1
votes

Invoquer autoscript (a le point de lancement de l'objet WO) lorsque l'adresse du service est mise à jour?

J'ai un WO dans Maximo 7.6.1.1.

Lorsqu'un utilisateur met à jour l'adresse du service, je souhaite appeler un autoscript qui a un point de lancement d'objet sur l'objet WORKORDER .

 entrez la description de l'image ici


 entrez la description de l'image ici


Existe-t-il un moyen d'invoquer un autoscript (qui a un point de lancement d'objet sur l'objet WORKORDER) lorsque l'adresse de service est mise à jour?


2 commentaires

Cette question concerne-t-elle la réutilisation d'un script d'automatisation existant lorsqu'il est déclenché, ou l'exécution sur / l'utilisation de l'objet d'ordre de travail lorsqu'il est déclenché?


@Dex: Le premier, même si j'avoue que je n'ai pas encore complètement saisi ce sujet.


4 Réponses :


1
votes

Je ne crois pas que vous le puissiez. Un point de lancement d'objet consiste à indiquer à Maximo quel objet surveiller pour le ou les événements suivants, pas exactement sur quel objet lancer le script (bien que, pour diverses raisons, ces deux soient nécessairement liés).

Ce que vous pouvez faire, cependant, c'est mettre votre point de lancement sur l'adresse du service comme vous le souhaitez vraiment, mais ensuite, dans votre script, récupérez le bon de travail à l'écran / en mémoire avec lequel vous voulez faire quelque chose et faites cette. Cela se fait via l'appel de la méthode getOwner () ou la référence de relation spéciale ": owner" (peut-être avec les esperluettes, je ne me souviens pas).


0 commentaires

2
votes

Vous devriez voir si mbo.getOwner () renvoie quelque chose et si ce something.getName () est WORKORDER et, en outre, le bon de travail que vous attendez. Sous réserve de tout cela, vous pouvez invoquer cet autre autoscript avec un code comme celui-ci:

from java.util import HashMap
lpVars = HashMap()
lpVars.put("mbo",mbo.getOwner())
#repeat the last line for any other implicit/explicit variables your target
#script is going to use / expect to be defined
service.invokeScript("YOURSCRIPTNAME", lpVars)
someVar = lpVars.get("someVarDefinedInYOURSCRIPTNAMEWhenItEnded")

Notez le travail avec la variable lpVars . Je l'utilise pour stocker les variables "implicites" / "explicites" (par exemple "mbo") que le script que j'appelle s'attend à être défini. En gros, je fais la configuration qu'un point de lancement fait normalement, puisque mon code est le point de lancement. Ensuite, puisque je suis le point de lancement, j'ai accès à toutes les variables qui ont été définies lorsque le script s'est terminé par Maximo les ajoutant / les mettant à jour dans lpVars.


0 commentaires

2
votes

Vous pouvez créer des scripts de "bibliothèque" réutilisables que vous pouvez appeler directement comme Preacher l'a expliqué. Voir l'exemple IBM ici: https : //www.ibm.com/support/knowledgecenter/SSFGJ4_7.6.0/com.ibm.mbs.doc/autoscript/c_example_reuse.html

Ainsi, votre point de lancement d'objet WO pourrait appeler le script de bibliothèque et votre point de lancement d'objet SA l'appelant. Il vous suffit ensuite de modifier un script si nécessaire et c'est génial.


0 commentaires

0
votes

Voici la solution que j'ai trouvée:

mboName=mbo.getName()

if mboName == 'WOSERVICEADDRESS':
  mboWO = mbo.getOwner()
elif mboName == 'WORKORDER':
  mboWO=mbo

sax = mboWO.getDouble("SERVICEADDRESS.LONGITUDEX")
say = mboWO.getDouble("SERVICEADDRESS.LATITUDEY")

if sax and say:
    mboWO.setValue("longitudex", sax)
    mboWO.setValue("latitudey", say)

elif mboWO.getString("ASSETNUM") and mboWO.getBoolean("ASSET.PLUSSISGIS") == 1:
    mboWO.setValue("longitudex", mboWO.getDouble("ASSET.longitudex"))
    mboWO.setValue("latitudey", mboWO.getDouble("ASSET.latitudey"))

elif mboWO.getString("LOCATION") and mboWO.getBoolean("LOCATION.PLUSSISGIS") == 1:
    mboWO.setValue("longitudex", mboWO.getDouble("LOCATION.longitudex"))
    mboWO.setValue("latitudey", mboWO.getDouble("LOCATION.latitudey"))
else:
    mboWO.setValue("longitudex", None)
    mboWO.setValue("latitudey", None)

Le script a des points de lancement sur plusieurs objets:

 entrez la description de l'image ici


0 commentaires