Objektbeziehungsscripts

Ein Objektbeziehungsscript ist ein Automationsscript ohne Startpunkt. Mit diesem Script werden intelligente Beziehungen definiert, bei denen es sich um Beziehungen handelt, die bedingtes SQL in der WHERE-Klausel verwenden.

Die folgenden Szenarios zeigen, wann ein Objektbeziehungsscript nützlich sein kann:

  • Um eine komplexe SQL-WHERE-Klausel in einfachere bedingte Blöcke aufzuteilen, die die Leistung in bestimmten Fällen verbessern können.
  • Zum Verarbeiten eines Datenbankabrufs, der vom Status der Anwendung oder von Benutzereingaben abhängt. Diese Fälle sind keine Fälle für parametrisiertes SQL, sondern Fälle, in denen sich die Struktur des SQL abhängig von den Bedingungen drastisch ändert.

Wenn das MBO-Framework (Maximo ® Business Object) eine Beziehung auswertet, z. B. mbo.getMboSet("relation"), bestimmt es, ob die WHERE-Klausel der Beziehung von einem Automationsscript basierend auf der Registrierung der Beziehung in der Tabelle MAXRELATIONSHIP implementiert wird. Die Where-Klausel der Beziehung muss den Ausdruck script:script_name enthalten, damit das Framework das Script ausführen kann.

Die folgende Tabelle zeigt die impliziten Variablen für Objektbeziehungsscripts.
Tabelle 1. Implizite Variablen für Objektbeziehungsscripts
Variablenname Beschreibung
MBO Der Quellen-MBO-Datensatz, der in das Script eingegeben wird.
MBOSet Die MboSet -Antwortinstanz, die das Ziel oder die Beziehung ist. Das Script soll dieses MboSeterstellen.
Das folgende Script ist ein Beispiel für ein Objektbeziehungsscript.
if mbo.isNull("priority")==False:
 mboset = mbo.getMboSet("openwo")
else:
 mboset = mbo.getMboSet("allwo")

Ein weiterer erweiterter Anwendungsfall ist die Übergabe bestimmter Kontextinformationen von einer Anwendung an das Maximo-Geschäftsobjekt über einen API-Aufruf. Der folgende Aufruf ist ein Beispiel für einen REST-Aufruf.

GET /api/os/mxapiwo?oslc.select=rel.asset{assetnum,rel.assetmeter{lastreading}}&ctx=param1=value1

Wenn Sie beispielsweise eine intelligente Filterung für die Assetmeter-Beziehung einführen möchten, können Sie diese Beziehung in URL durch eine benutzerdefinierte ersetzen.

GET /api/os/mxapiwo?oslc.select=rel.asset{assetnum,rel.custassetmeter{lastreading}}&ctx=param1=value1

Jetzt kann custassetmeter durch ein Beziehungsscript gesichert werden, das die Informationen verwenden kann, die im ctx aus dem Script übergeben werden, und eine intelligente Where-Klausel generieren kann.

Das folgende Script ist ein Beispiel für ein Objektbeziehungsscript.
from psdi.iface.mic import IntegrationContext
if IntegrationContext.getCurrentContext() is not None and IntegrationContext.getCurrentContext().isAPICall(): 
  val1 = IntegrationContext.getCurrentContext().getParameter("param1")
  #create a filter clause based on the val1 and set the mboset
else:
  mboset = mbo.getMboSet("assetmeter")