Requête de structure d'objet
Lors de l'extraction de données, l'infrastructure d'API REST fournit plusieurs façons de filtrer les données renvoyées. Lorsque les options existantes sont insuffisantes, vous pouvez utiliser un script d'automatisation de requête de structure d'objet.
historyflag=0 and istask=0 and status='INPRG' and (location='BR430' or assetnum='11430')La variable implicite mboset est MboSet pour l'objet principal de votre structure d'objet. Vous utilisez cette variable pour définir la clause where qui est appliquée.
Dans l'application Scripts d'automatisation, cliquez sur . Cliquez sur Structure d'objet , puis sélectionnez la structure d'objet. Cliquez sur Clause de requête , puis entrez un nom de requête unique.
Dans le tableau Variables, cliquez sur Nouvelle ligne pour ajouter des variables au script que vous souhaitez fournir en tant que paramètres de requête (sqp:variable). Ces variables doivent être définies en tant que variables littérales. Si le paramètre de requête n'est pas fourni dans l' URL de l'appel REST, la valeur littérale définie dans le script est utilisée.
script , sélectionnez le nom du script et fournissez une description. Dans l'application Structures d'objet, accédez à la structure d'objet souhaitée, par exemple, mxapiwo. Sous Requêtes disponibles, sélectionnez Définition de requête. Sélectionnez Nouvelle ligne. Pour Type de requête, sélectionnez script. L'exemple de script suivant définit un filtre pour MboSet.def isSet(variable):
return variable and variable!='*'
from psdi.mbo import SqlFormat
query="historyflag=0 and istask=0 "
if isSet(assetnum) and isSet(location):
query+=" and (assetnum=:1 or location=:2) "
elif isSet(assetnum):
query+=" and assetnum=:1 "
elif isSet(location):
query+=" and location=:2 "
if isSet(status):
query+= " and status=:3 "
sqf=SqlFormat(query)
# Check that values are set before calling setObject or it fails
if isSet(assetnum):
sqf.setObject(1,"WORKORDER","ASSETNUM",assetnum)
if isSet(location):
sqf.setObject(2,"WORKORDER","LOCATION",location)
if isSet(status):
sqf.setObject(3,"WORKORDER","STATUS",status)
mboset.setWhere(sqf.format())Appelez le script avec une API REST comme dans l'exemple suivant:GET https://myurl.com/maximo/oslc/os/mxapiwodetail?lean=1&oslc.select=wonum,
description,siteid&oslc.pageSize=40&savedQuery=OSQUERY.MXAPIWODETAIL.EMXWOFILTER&sqp:
assetnum=11430&sqp:location=BR430