Personalizzazione di Operator Advisor > Utilizzo di filtri JSON nei servizi di interrogazione
Utilizzo di filtri JSON nei servizi di interrogazione
Operator Advisor supporta l'utilizzo di filtri JSON in servizi di interrogazione. Le sezioni seguenti illustrano come utilizzare i filtri JSON in qualsiasi servizio di Operator Advisor che utilizza il parametro di input filter facoltativo.
Chiavi e operatori supportati
Nei filtri JSON è supportato l'utilizzo delle chiavi e degli operatori che seguono:
select
filters, con i seguenti valori type (operatori logici):
EQ - Uguale a
NE - Diverso da
LT - Minore di
LE - Minore o uguale a
GT - Maggiore di
GE - Maggiore o uguale a
AND - And
OR - Or
IN - In
sorts
isAscending- Ordinamento crescente se true, ordinamento decrescente se false
isCaseSensitive - Ordinamento con distinzione tra maiuscole e minuscole se true
joins, con i seguenti valori type (tipi di join):
INNER
LEFT
RIGHT
FULL
dataShapeName - Nome della data shape in cui risiede la colonna (fieldName)
fieldName - Nome della colonna nella data shape
value o values - Valore o valori di interesse nel database
Chiave select
In una chiave select è possibile selezionare campi specifici di data shape specifiche che si desidera siano restituite dall'interrogazione. Creare una matrice JSON in cui ciascun oggetto specifica il nome dataShapeName e fieldName di un campo che deve essere restituito dall'interrogazione. dataShapeName può essere il nome della data shape principale (la data shape rispetto alla quale è in esecuzione il servizio) o il nome di un'altra data shape inclusa nell'interrogazione da un join.
Ad esempio, la chiave select seguente può essere utilizzata in un filtro JSON per il servizio GetJobOrders per restituire il nome di un requisito di risorse di elaborazione di commessa, il nome e l'ID di una commessa e il nome di una risorsa di elaborazione:
"select": [
{
"dataShapeName": "PTC.SCA.SCO.JobOrderProcessingResourceRequirement",
"fieldName": "Name"
},
{
"dataShapeName": "PTC.SCA.SCO.JobOrder",
"fieldName": "Name"
},
{
"dataShapeName": "PTC.SCA.SCO.JobOrder",
"fieldName": "ID"
},
{
"dataShapeName": "PTC.SCA.SCO.ProcessingResource",
"fieldName": "Name"
}
]
Nell'esempio precedente, i campi Name nelle data shape PTC.SCA.SCO.JobOrderProcessingResourceRequirement e PTC.SCA.SCO.JobOrder sono proprietà supplementari aggiunte alle data shape.
Chiave filters
La chiave filters consente di filtrare i risultati dell'interrogazione per i record corrispondenti a valori specifici. È possibile combinare in stringhe più filtri creando matrici JSON filters, separando i singoli filtri con una virgola e unendoli mediante l'operatore AND o OR. Ogni filtro specifica un dataShapeName, un fieldName, un type e un value o values (per l'operatore IN). I diversi filtri possono quindi essere raggruppati in un'altra chiave filters.
dataShapeName può essere il nome della data shape principale (la data shape rispetto alla quale è in esecuzione il servizio) o il nome di un'altra data shape inclusa nell'interrogazione da un join. Se non si specifica un dataShapeName per il filtro, viene utilizzato il nome della data shape rispetto alla quale viene eseguito il servizio.
Ad esempio, la chiave filters seguente può essere utilizzata in un filtro JSON per il servizio GetHistoricalData per restituire tutti i risultati nella tabella di database dei dati cronologici in cui è stata creata o aggiornata una commessa:
"filters": {
"filters": [
{
"dataShapeName": "PTC.SCA.SCO.HistoricalData",
"fieldName": "DataShapeName",
"type": "EQ",
"value": "PTC.SCA.SCO.JobOrder"
},
{
"dataShapeName": "PTC.SCA.SCO.HistoricalData",
"fieldName": "ReferenceKey",
"type": "IN",
"values": [1,2]
}
],
"type": "AND"
}
Chiave sorts
La chiave sorts consente di ordinare i risultati dell'interrogazione in base a un campo di data shape specifico (dataShapeName e fieldName), in ordine crescente o decrescente (isAscending) e di stabilire se il filtro riconosce la distinzione tra maiuscole e minuscole (isCaseSensitive). È possibile eseguire l'ordinamento su più campi includendo più oggetti di ordinamento nella matrice, separati da virgole.
dataShapeName può essere il nome della data shape principale (la data shape rispetto alla quale è in esecuzione il servizio) o il nome di un'altra data shape inclusa nell'interrogazione da un join. Se non si specifica un dataShapeName, viene utilizzato il nome della data shape rispetto alla quale viene eseguito il servizio.
Ad esempio, la chiave sorts seguente può essere utilizzata in un filtro JSON con il servizio GetJobOrders per ordinare i risultati in base al nome del requisito di risorse di elaborazione di commessa in ordine crescente, quindi in base al nome della commessa in ordine decrescente (presupponendo che il requisito di risorse di elaborazione di commessa sia incluso nell'interrogazione tramite un join).
"sorts":[
{
"dataShapeName": "PTC.SCA.SCO.JobOrderProcessingResourceRequirement",
"fieldName": "Name",
"isAscending": true,
"isCaseSensitive": false
},
{
"dataShapeName": "PTC.SCA.SCO.JobOrder",
"fieldName": "Name",
"isAscending": false,
"isCaseSensitive": false
}
]
Join
Un join viene utilizzato per combinare righe di due o più data shape, in base a un campo correlato tra le data shape. Per utilizzare i campi delle data shape nelle chiavi di selezione, ordinamento o filtro, includere tali data shape (tranne la data shape principale) nell'interrogazione utilizzando un join.
Ogni join è costituito dal tipo di join (type), dalla data shape e dal nome del campo di origine o di sinistra (sourceDataShapeName e sourceFieldName) e dalla data shape e dal nome del campo di destinazione o di destra (targetDataShapeName e targetFieldName). Sono supportati i seguenti tipi di join: INNER, LEFT, RIGHT e FULL.
INNER - Un join interno restituisce tutti i record che hanno valori corrispondenti in entrambe le data shape.
LEFT - Un join di sinistra restituisce tutti i record della data shape di sinistra (origine) e i record corrispondenti della data shape di destra (destinazione). Se non è presente alcuna corrispondenza, il risultato dal lato destro (destinazione) del join è NULL.
RIGHT - Un join di destra restituisce tutti i record della data shape di destra (destinazione) e i record corrispondenti della data shape di sinistra (origine). Se non è presente alcuna corrispondenza, il risultato dal lato sinistro (origine) del join è NULL.
FULL - Un join completo restituisce tutti i record in cui è presente una corrispondenza nella data shape di sinistra (origine) o di destra (destinazione).
Ad esempio, la chiave joins seguente può essere utilizzata in un filtro JSON per il servizio GetJobOrders per restituire tutti i record in cui UID nella commessa corrisponde al campo JobOrderUID nel requisito di risorse di elaborazione di commessa e dove il campo ProcessingResourceUID nel requisito di risorse di elaborazione di commessa corrisponde al campo UID della risorsa di elaborazione.
"joins": [
{
"type": "INNER",
"sourceDataShapeName": "PTC.SCA.SCO.JobOrder",
"sourceFieldName": "UID",
"targetDataShapeName": "PTC.SCA.SCO.JobOrderProcessingResourceRequirement",
"targetFieldName": "JobOrderUID"
},
{
"type": "INNER",
"sourceDataShapeName": "PTC.SCA.SCO.JobOrderProcessingResourceRequirement",
"sourceFieldName": "ProcessingResourceUID",
"targetDataShapeName": "PTC.SCA.SCO.ProcessingResource",
"targetFieldName": "UID"
}
]
Filtri JSON di esempio
L'esempio seguente mostra un filtro utilizzabile con il servizio GetHistoricalData. Il filtro restituisce tutti i risultati nel database dei dati cronologici in cui è stata creata una commessa, quindi ordina i risultati in ordine crescente in base al momento di creazione di ogni commessa.
{
"filters": {
"filters": [
{
"dataShapeName": "PTC.SCA.SCO.HistoricalData",
"fieldName": "DataShapeName",
"type": "EQ",
"value": "PTC.SCA.SCO.JobOrder"
},
{
"dataShapeName": "PTC.SCA.SCO.HistoricalData",
"fieldName": "ReferenceKey",
"type": "EQ",
"value": 1
}
],
"type": "AND"
},
"sorts": [
{
"fieldName": "TimeStamp",
"isAscending": true,
"isCaseSensitive": false
}
]
}
L'esempio seguente mostra un filtro utilizzabile con il servizio GetJobOrders. Con questo filtro:
Per ogni risultato vengono restituiti il Name e l'ID della commessa, il Name della risorsa di elaborazione correlata e il Name del requisito di risorse di elaborazione di commessa.
I risultati vengono filtrati solo per le risorse di elaborazione che hanno come ID un valore di WC1.
I risultati restituiti sono relativi ai record in cui l'UID nella commessa corrisponde al campo JobOrderUID nel requisito di risorse di elaborazione di commessa e dove il campo ProcessingResourceUID nel requisito di risorse di elaborazione di commessa corrisponde al campo UID nella risorsa di elaborazione.
I risultati vengono ordinati in base al Name del requisito di risorse di elaborazione di commessa in ordine crescente, quindi in base al Name della commessa in ordine decrescente.
* 
In questo esempio, i campi Name in PTC.SCA.SCO.JobOrderProcessingResourceRequirement e PTC.SCA.SCO.JobOrder sono proprietà supplementari aggiunte alle data shape. Per utilizzare il filtro nel modo indicato, è necessario aggiungere questi campi alle data shape.
{
"select": [
{
"dataShapeName": "PTC.SCA.SCO.JobOrderProcessingResourceRequirement",
"fieldName": "Name"
},
{
"dataShapeName": "PTC.SCA.SCO.JobOrder",
"fieldName": "Name"
},
{
"dataShapeName": "PTC.SCA.SCO.JobOrder",
"fieldName": "ID"
},
{
"dataShapeName": "PTC.SCA.SCO.ProcessingResource",
"fieldName": "Name"
}
],
"filters": {
"filters": [
{
"dataShapeName": "PTC.SCA.SCO.ProcessingResource",
"fieldName": "ID",
"type": "EQ",
"value": "WC1"
}
],
"type": "AND"
},
"joins": [
{
"type": "INNER",
"sourceDataShapeName": "PTC.SCA.SCO.JobOrder",
"sourceFieldName": "UID",
"targetDataShapeName": "PTC.SCA.SCO.JobOrderProcessingResourceRequirement",
"targetFieldName": "JobOrderUID"
},
{
"type": "INNER",
"sourceDataShapeName": "PTC.SCA.SCO.JobOrderProcessingResourceRequirement",
"sourceFieldName": "ProcessingResourceUID",
"targetDataShapeName": "PTC.SCA.SCO.ProcessingResource",
"targetFieldName": "UID"
}
],
"sorts":[
{
"dataShapeName": "PTC.SCA.SCO.JobOrderProcessingResourceRequirement",
"fieldName": "Name",
"isAscending": true,
"isCaseSensitive": false
},
{
"dataShapeName": "PTC.SCA.SCO.JobOrder",
"fieldName": "Name",
"isAscending": false,
"isCaseSensitive": false
}
]
}
Per ulteriori esempi di utilizzo dei filtri nelle interrogazioni, vedere Parametro di interrogazione per servizi di interrogazione in ThingWorx Help Center. Nota: i filtri Near e NotNear descritti in tale argomento non sono supportati in Operator Advisor.