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.
| 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. |
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.
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")