Utilización del servicio QueryImplementingThings
Si se ejecuta una agrupación de alta disponibilidad de ThingWorx, se deben compartir en el clúster determinados estados que solían ser un proceso en la memoria (como valores de propiedad, estados de cosa y estados de conexión). Por lo tanto, las propiedades de cosa ahora se almacenan en una caché de Apache Ignite en la memoria que no tiene un efecto significativo en el rendimiento o la ingesta de propiedades.
Se han realizado mejoras para minimizar los efectos de la latencia en las consultas. Los servicios se han cambiado para que solo devuelvan valores de las propiedades que residen en la definición de cosa o plantilla de cosa asociada. Aún se pueden filtrar las propiedades que residen en la implementación de cosas. Sin embargo, se debe utilizar la nueva API de GetThingPropertyValues para devolver datos sobre la implementación de cosas.
* 
A partir de ThingWorx 9.4.0, se ha añadido un nuevo parámetro booleano (isSortFirst) al servicio QueryImplementingThings. El valor por defecto del parámetro isSortFirst es false, y el servicio seguirá funcionando como antes. Si isSortFirst se define en true, el servicio QueryImplementingThings ordenará primero el conjunto de resultados y, a continuación, aplicará el límite.
* 
Limite los filtros y clasifique solo las propiedades definidas en la definición de cosa o la plantilla de cosa. Evite filtrar o clasificar las propiedades que residen en cosas de implementación. Se puede considerar la posibilidad de mover las propiedades de las cosas y colocarlas en la definición de cosa o la plantilla de cosa implementada.
GetThingPropertyValues
GetThingPropertyValues es una nueva API que permite recuperar valores de propiedad en bloque y limitar el número de llamadas de caché necesarias para rellenar el conjunto de datos de retorno. Las entradas son thingRefrence, que es una infotable de nombres y tipos de cosa, y dataShapeName, que es una cadena que permite identificar la definición de datos de las propiedades necesarias. GetThingPropertyValues permite devolver una infotable de valores de propiedad para cada cosa identificada en la entrada thingReference.
Por ejemplo, para utilizar esta API, se puede realizar lo siguiente:
1. Ejecute QueryImplementingThings o QueryImplementingThingsWithData en una definición de cosa o plantilla de cosa.
Para obtener el máximo rendimiento, utilice QueryImplementingThings, que proporciona nombres de cosa con campos base.
2. Recopile todos los nombres de cosa de QueryImplementingThings.
3. Cree una definición de datos que incluya todas las propiedades diferentes de todas las cosas diferentes.
4. Llame a getThingPropertyValues con recopilaciones de nombres del paso 2 y el nombre de definición de datos del paso 3.
El JavaScript de este ejemplo es:
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 */
});
¿Fue esto útil?