Script di relazione oggetto

Uno script di relazione dell'oggetto è uno script di automazione senza punto di avvio. Questo script viene utilizzato per definire relazioni smart, che sono relazioni che utilizzano SQL condizionale nella clausola where.

I seguenti scenari mostrano quando uno script di relazione oggetto può essere utile:

  • Per suddividere una clausola SQL where complessa in blocchi condizionali più semplici, che potrebbero migliorare le prestazioni in determinati casi.
  • Per gestire un richiamo del database che dipende dallo stato dell'applicazione o dall'input dell'utente. Questi casi non sono casi per SQL parametrizzato, ma casi in cui la struttura dell'SQL cambia drasticamente a seconda delle condizioni.

Quando il framework MBO (Maximo ® business object) valuta una relazione, come ad esempio mbo.getMboSet("relation"), determina se la clausola where della relazione è implementata da uno script di automazione basato sulla registrazione della relazione nella tabella MAXRELATIONSHIP. La clausola where della relazione deve contenere l'espressione script:script_name per il framework per eseguire lo script.

La seguente tabella mostra le variabili implicite per gli script di relazione oggetto.
Tabella 1. Variabili implicite per script di relazione oggetto
Nome variabile Descrizione
MBO Il record MBO di origine immesso nello script.
MBOSet L'istanza MboSet di risposta che è la destinazione o la relazione. Lo script dovrebbe creare questo MboSet.
Il seguente script è un esempio di uno script di relazione oggetto.
if mbo.isNull("priority")==False:
 mboset = mbo.getMboSet("openwo")
else:
 mboset = mbo.getMboSet("allwo")

Un altro caso di utilizzo avanzato consiste nel trasmettere determinate informazioni contestuali da una applicazione all'oggetto di business Maximo utilizzando una chiamata API. La seguente chiamata è una chiamata REST di esempio.

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

Ad esempio, se si vuole introdurre un filtraggio intelligente sulla relazione assetmeter, è possibile sostituire questa relazione nell' URL con una personalizzata.

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

Ora, custassetmeter può essere supportato da uno script di relazione che può utilizzare le informazioni trasmesse in ctx dallo script e può generare una clausola smart where.

Il seguente script è un esempio di uno script di relazione oggetto.
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")