Utilizzo del servizio QueryImplementingThings
Se si esegue il clustering a disponibilità elevata di ThingWorx, è necessario che alcuni stati che normalmente si trovavano in un processo in memoria (ad esempio i valori delle proprietà, lo stato dell'oggetto e lo stato della connessione) siano condivisi nel cluster. Di conseguenza, le proprietà dell'oggetto vengono ora memorizzate in una cache Apache Ignite in memoria, tuttavia questo non ha effetti significativi sulle prestazioni e sull'inserimento delle proprietà.
Sono stati apportati miglioramenti per minimizzare gli effetti della latenza sulle interrogazioni. Sono stati modificati i servizi in modo che restituiscano solo i valori delle proprietà che si trovano nella thing shape o nel modello di oggetto associati. È comunque possibile filtrare le proprietà che si trovano negli oggetti di implementazione ma, per restituire i dati relativi a tali oggetti, è necessario utilizzare la nuova API GetThingPropertyValues.
* 
Con ThingWorx 9.4.0 viene aggiunto un nuovo parametro booleano isSortFirst al servizio QueryImplementingThings. Il valore di default del parametro isSortFirst è false e il servizio continua a funzionare come prima. Se il parametro isSortFirst è impostato su true, il servizio QueryImplementingThings ordina prima l'insieme di risultati e quindi applica il limite.
* 
Limitare i filtri e ordinare solo le proprietà definite per la thing shape o il modello di oggetto. Evitare il filtraggio o l'ordinamento delle proprietà che si trovano negli oggetti di implementazione. È possibile spostare le proprietà dagli oggetti e inserirle nella thing shape o nel modello di oggetto implementati.
GetThingPropertyValues
GetThingPropertyValues è una nuova API che recupera i valori delle proprietà in blocco per limitare il numero di chiamate alla cache necessarie per completare l'insieme di dati restituiti. Gli input sono thingRefrence, ovvero una infotable di tipi e nomi di oggetto, e dataShapeName, ovvero una stringa che identifica la data shape delle proprietà obbligatorie. GetThingPropertyValues restituisce una infotable di valori di proprietà per ciascun oggetto identificato nell'input thingReference.
Ad esempio, per utilizzare questa API, è possibile eseguire le operazioni descritte di seguito.
1. Eseguire QueryImplementingThings o QueryImplementingThingsWithData su una thing shape o un modello di oggetto.
Per prestazioni ottimali, utilizzare QueryImplementingThings, che produce i nomi di oggetto con i campi di base.
2. Raccogliere tutti i nomi di oggetto da QueryImplementingThings.
3. Creare una data shape che includa tutte le diverse proprietà di tutti gli oggetti diversi.
4. Chiamare getThingPropertyValues con le raccolte di nomi di oggetto del passo 2 e il nome della data shape del passo 3.
Il codice JavaScript per questo esempio è:
var result = ThingShapes["testThingShapeOneForQITService<>626037"].QueryImplementingThings({
maxItems: undefined /* NUMBER */,
nameMask: undefined /* STRING */,
query: undefined /* QUERY */,
tags: undefined /* TAGS */
});
var resultQIT = result;
var params = {
infoTableName : "InfoTable",
dataShapeName : "ThingRefDataShape"
};
// CreateInfoTableFromDataShape(infoTableName:STRING("InfoTable"), dataShapeName:STRING):INFOTABLE(ThingRefDataShape)
result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);
var thingRef = result;
for(var x=0 ; x<resultQIT.length ; x++){
var thingName = resultQIT[x].name;
var newEntry = new Object();
newEntry.name = thingName; // STRING
newEntry.type = "Thing"; // STRING
thingRef.AddRow(newEntry);
}
// result: INFOTABLE dataShape: "RootEntityList"
result = Resources["EntityServices"].GetThingPropertyValues({
thingReferences: thingRef /* INFOTABLE */,
dataShapeName: "QITDataShape<>392587" /* DATASHAPENAME */
});
È stato utile?