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