QueryImplementingThings-Dienst verwenden
Wenn Sie ThingWorx High Availability Clustering ausführen, müssen bestimmte Status, bei denen es sich vorher um einen Prozess im Arbeitsspeicher handelte (wie Eigenschaftswerte, Dingstatus und Verbindungsstatus), im Cluster geteilt werden. Daher werden Dingeigenschaften jetzt in einem Apache Ignite-Cache im Arbeitsspeicher gespeichert, der keine erheblichen Auswirkungen auf die Leistung oder Eigenschaftsaufnahme hat.
Es wurden Verbesserungen vorgenommen, um die Auswirkungen der Latenz auf die Abfragen zu minimieren. Die Dienste wurden geändert, sodass sie nur Werte von Eigenschaften zurückgeben, die sich in der zugeordneten Dingform oder Dingvorlage befinden. Sie können weiterhin nach Eigenschaften für implementierende Dinge filtern. Sie müssen jedoch die neue GetThingPropertyValues-API verwenden, um Daten für implementierende Dinge zurückzugeben.
* 
Ab ThingWorx 9.4.0 wird ein neuer boolescher Parameter isSortFirst zum Dienst QueryImplementingThings hinzugefügt. Der Standardwert für den Parameter isSortFirst ist false und der Dienst funktioniert weiterhin wie zuvor. Wenn isSortFirst auf true festgelegt ist, so sortiert der Dienst QueryImplementingThings zuerst den Ergebnissatz und wendet dann den Grenzwert an.
* 
Begrenzen Sie Filter, und sortieren Sie nur die Eigenschaften, die in der Dingform oder Dingvorlage definiert sind. Vermeiden Sie das Filtern oder Sortieren von Eigenschaften in implementierenden Dingen. Sie können in Erwägung ziehen, Eigenschaften aus Dingen in die implementierte Dingform oder Dingvorlage zu verschieben.
GetThingPropertyValues
GetThingPropertyValues ist eine neue API, die Eigenschaftswerte in Massen abruft. Sie begrenzt die Anzahl der Cache-Aufrufe, die für das Füllen des Rückgabedatensatzes erforderlich sind. Eingaben sind thingRefrence, eine Infotable mit Dingnamen und Dingtyp, und dataShapeName, eine Zeichenfolge, die den Data Shape der erforderlichen Eigenschaften identifiziert. GetThingPropertyValues gibt eine Infotable der Eigenschaftswerte für jedes in der thingReference-Eingabe identifizierte Ding zurück.
Um diese API zu verwenden, können Sie beispielsweise Folgendes tun:
1. Führen Sie QueryImplementingThings oder QueryImplementingThingsWithData für eine Dingform oder Dingvorlage aus.
Verwenden Sie für optimale Leistung QueryImplementingThings, das Dingnamen mit Basisfeldern zurückgibt.
2. Sammeln Sie alle Dingnamen aus QueryImplementingThings.
3. Erstellen Sie einen Data Shape, der alle Eigenschaften aus allen Dingen enthält.
4. Rufen Sie getThingPropertyValues mit Dingnamen-Sammlungen aus Schritt 2 und dem Data Shape-Namen aus Schritt 3 auf.
Das JavaScript für dieses Beispiel lautet:
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 */
});
War dies hilfreich?