Maximo Automation Scripting | Einführung in Automation Scripting
Steven Shull
March 26, 2019


Dies wird der erste in einer Reihe von Blogbeiträgen sein, in denen das Automatisierungsskripting in Maximo erklärt wird. In diesem Beitrag werde ich erläutern, was das ist und warum es dem Produkt hinzugefügt wurde. In zukünftigen Beiträgen werde ich mich hauptsächlich darauf konzentrieren, wie sie zur Erfüllung verschiedener Arten von Anpassungsanforderungen verwendet werden können. Ich werde aber auch einige relativ unbekannte Funktionen behandeln, die in Automatisierungsskripten enthalten sind, die Vor- und Nachteile der Anpassungsoptionen hervorheben (einschließlich Optionen, die nicht aus Automatisierungsskripten stammen) und einige unserer bewährten Methoden beim Erstellen von Skripten erörtern. Etwas Programmiererfahrung wird von Vorteil sein, aber ich werde versuchen, den Großteil des Codes zu erklären, damit Sie verstehen, warum ich das tue, was ich tue. Und wenn Sie Fragen haben, können Sie diese gerne im Maximo-Forum posten, damit auch andere von der Antwort profitieren können.
Maximo ist ein hochgradig konfigurierbares Produkt (schauen Sie sich unsere an Lösungen Seite für unsere Angebote). Mit minimalen technischen Kenntnissen können Benutzer in Maximo neue Felder hinzufügen, Bildschirmänderungen vornehmen oder die Werte von Attributen einschränken. Aber sobald Sie anfangen, über diese Funktionen hinauszugehen, beginnen die Leute, Fragen zu Automatisierungsskripts/Java-Anpassungen zu stellen. Und wenn es etwas ist, das Sie noch nie gemacht haben, kann es zunächst ziemlich einschüchternd sein. Hoffentlich hilft Ihnen diese Blog-Serie dabei, den größten Teil der Einschüchterung zu beseitigen und Ihre Geschäftsziele schneller zu erreichen.
Lassen Sie uns anfangen, darüber zu sprechen, was Automatisierungsskripte in Maximo sind. Für diejenigen, die sich dessen nicht bewusst sind, handelt es sich bei Automatisierungsskripten um benutzerdefinierten Code. Dies können kleine Skripte sein (wir haben einige, die nur aus einer einzigen Zeile bestehen) oder sehr große Skripte (wir haben einige, die fast tausend Codezeilen umfassen). Diese Skripte sind normalerweise in Python oder JavaScript geschrieben, da dies die beiden Sprachen sind, die in Maximo standardmäßig unterstützt werden. Es kann jedoch jede JSR 223-Sprache verwendet werden, wenn Sie sie konfigurieren. Automatisierungsskripte wurden in Maximo 7.5 hinzugefügt (ein Vorläufer existierte in früheren IT-Versionen von Maximo) und wurden in Maximo 7.6 erheblich verbessert. IBM hat seit der Veröffentlichung von 7.6 die Automatisierungsskripte in verschiedenen Funktionspaketen kontinuierlich verbessert, sodass jemand, der die neueste Version von Maximo 7.6 (derzeit 7.6.0.9) verwendet, einige Funktionen nutzen kann, die in früheren Versionen nicht vorhanden waren. Wenn das in unseren Beispielen vorkommt, werde ich versuchen, klarzustellen, welche Version das zuerst unterstützt hat, und wenn möglich alternative Optionen erwähnen.
Automatisierungsskripte sind in der Regel mithilfe eines Startpunkts an ein Ereignis in Maximo gebunden. Für einige der neueren Funktionen (wie Integrationen) ist kein eigentlicher Startpunkt definiert, sondern sie werden stattdessen mithilfe einer speziellen Benennungsstruktur im Skript aufgerufen. Das Verständnis dieser Launch Point-Optionen ist für die Entwicklung in Maximo von entscheidender Bedeutung (in dieser Blogserie werden wir alle Launch Points ausführlich behandeln). Diese Flexibilität der Event-Optionen ermöglicht es Ihnen, Ihren Code zum geeignetsten Zeitpunkt auszuführen. Dadurch wird Ihr Skript weniger häufig aufgerufen, was die Leistung in Maximo bei komplizierteren Skripten erheblich verbessern kann.
Wann sollten Sie Automatisierungsskripte verwenden? Wenn Sie erst einmal die Leistungsfähigkeit von Automatisierungsskripten kennengelernt haben, ist es oft verlockend, sie für all Ihre Anpassungsanforderungen zu nutzen. Ich bin der festen Überzeugung, dass Skripte nur verwendet werden sollten, wenn das Maximo-Framework nicht bereits unterstützt, was Sie tun müssen. Ein häufiges Beispiel, das ich gesehen habe, wo Automatisierungsskripte missbraucht werden, ist die Verwendung eines Automatisierungsskripts, um einen Wert von einem Objekt zum anderen zu übertragen. Wenn es keine Transformation gibt, ist es besser, eine Crossover-Domain zu verwenden. Diese werden zuverlässig ausgelöst (Ereignisse können unterdrückt werden, wodurch verhindert wird, dass Ihr Skript ausgelöst wird, oder die Anwendung könnte sich im Admin-Modus befinden, der verhindert, dass alle Skripte ausgelöst werden) und funktionieren ehrlich gesagt einfach.
Ein anderes Beispiel, das ich für missbraucht halte, ist die Verwendung eines Automatisierungsskripts, um Felder als schreibgeschützt anzufordern oder zu kennzeichnen. Es gibt einige Szenarien, in denen dies sinnvoll ist, aber in den meisten Fällen wird dies durch die Verwendung einer globalen Datenbeschränkung auf viel bessere und zuverlässigere Weise erreicht. Wie zuvor gilt: Wenn Ihr Skript nicht ausgelöst wird (entweder ist das Ereignis unterdrückt oder im Admin-Modus), dann ist etwas, das Sie für einen Geschäftsprozess einschränken/fordern möchten, möglicherweise nicht eingerichtet. Und wenn Sie versuchen, die meisten Feldanforderungen an einem einzigen Ort zu konsolidieren, können Sie es leicht finden, wenn Sie herausfinden möchten, wo und unter welchen Bedingungen es erforderlich ist.
Was sind die Vor- und Nachteile von Automatisierungsskripten im Vergleich zur Java-Anpassung? Der größte Vorteil von Automation Scripting ist der Bereitstellungsprozess. Im Gegensatz zur Java-Anpassung können Automationsskripte ohne Ausfallzeiten hinzugefügt, geändert oder deaktiviert werden. Das allein macht es für die meisten Unternehmen schwer zu übertreffen. Die Implementierung von Java-Anpassungen kann Stunden in Anspruch nehmen, wenn Sie in einem Cluster arbeiten. Dadurch dauern Entwicklung und Tests erheblich länger. Hinzu kommen die geschäftlichen Auswirkungen, die sich durch den Verlust von Maximo Access ergeben. Ich höre oft von einigen Entwicklern, dass dies kein Problem ist, da das Unternehmen Ausfallzeiten für die Implementierung dieser Änderungen eingeplant hat. Aber was passiert, wenn Ihr Code einen Fehler hat? Probleme werden häufig während der Geschäftszeiten festgestellt und Java-Anpassungen können nicht ohne Ausfall deaktiviert oder geändert werden.
Ein weiterer Vorteil ist, dass Sie Ihr Automatisierungsskript problemlos mit mehreren Ereignissen in Maximo auslösen können. Wenn Sie beispielsweise möchten, dass ein Skript ausgelöst wird, wenn sich die Assetnum- oder Standortattribute ändern, können Sie dies mit einem Automatisierungsskript und zwei Startpunkten tun. Sie können denselben Code mit Java-Anpassungen aufrufen, aber Sie müssen die Feldklasse für jedes der Attribute erweitern (oder schreiben), was die Pflege von mehr Code erfordert, als nur diesen gemeinsamen Teil zu schreiben.
Einer meiner Lieblingsvorteile ist die Verwendung von Automatisierungsskripten, mit denen Sie beide Sprachen nutzen können. Skripte sind im Allgemeinen einfacher als derselbe Code in Java. Aber das spart wirklich Zeit, wenn es in Jython eine wirklich großartige Möglichkeit gibt, etwas zu tun, das in Java schwieriger oder ausführlicher ist. Ein einfaches Beispiel ist die Überprüfung, ob ein Attribut in Maximo gesetzt ist. Manchmal, wenn Sie getString („ATTRIBUTENAME“) aufrufen, erhalten Sie einen NULL-Wert zurück, manchmal erhalten Sie eine leere Zeichenfolge. In Java muss man beide Checks schreiben wie getString („ATTRIBUTENAME“)! =null und getString („ATTRIBUTENAME“)! =““. In Jython kann ich einfach sagen, ob mbo.getString („ATTRIBUTENAME“) und es wird beide Szenarien behandeln. Mach dir keine Gedanken über das Beispiel (wir werden das in unserem nächsten Blogbeitrag behandeln), ich fand es einfach am einfachsten, das Beispiel hervorzuheben.
Die Verwendung von Automatisierungsskripten zur Anpassung hat einige Nachteile. Die erste ist, dass Sie Java-Code schreiben müssen, wenn dies im Admin-Modus erledigt werden muss. Wir halten das nicht für einen häufigen Anwendungsfall, da die meisten unserer Anpassungen geschäftsorientiert sind und Geschäftstransaktionen aus anderen Gründen als nur der Skripterstellung nicht im Admin-Modus stattfinden sollten.
Ein weiteres Beispiel, bei dem Java-Anpassungen besser sind, ist, wenn Sie eine Methode überschreiben müssen, um Logik zu unterdrücken. Nehmen wir zum Beispiel an, IBM macht etwas in einer ihrer Klassendateien, das Sie nicht möchten. Sie können versuchen, das, was sie in dieser Methode tun, in einem Skript rückgängig zu machen, aber wenn Sie eine Java-Klasse schreiben, können Sie einfach verhindern, dass der Code ausgeführt wird, und einfach Ihren benutzerdefinierten Code ausführen. Auch dies ist bei uns nicht üblich, denn wenn IBM etwas tut, sollte es wahrscheinlich in Ruhe gelassen werden, sonst riskieren Sie, später andere Probleme zu verursachen.
Schließlich gibt es Zeiten, in denen ein Automatisierungsskript nicht möglich ist. IBM hat kontinuierlich zusätzliche Ereignisse für Automatisierungsskripte zum Abhören hinzugefügt und die Funktionalität verbessert (wie Dialoge mit Ja/Nein/Abbrechen), aber es wird Zeiten geben, in denen Sie etwas tun müssen, das mit dem aktuellen Framework einfach nicht möglich ist. Einige werden sich in zukünftigen Versionen verbessern (wie zum Beispiel die Möglichkeit, einen Dialog zu schließen!) , und manche schaffen es vielleicht nie. Automatisierungsskripte werden niemals eine 100-prozentige Abdeckung haben, aber sie werden dem durchschnittlichen Administrator von Maximo helfen, einige erstaunliche Dinge zu erreichen.
Erfahren Sie alles, was Sie wissen müssen, um Ihre Vermögensverwaltungsstrategie zu modernisieren.
Darin erfährst du:

ActiveG, BPD Zenith, EAM Swiss, InterPro Solutions, Lexco, Peacock Engineering, Projetech, Sharptree, and ZNAPZ have united under one brand: Naviam.
You’ll be redirected to the most relevant page at Naviam.io in a few seconds — or you can
go now.