開發解決方案的最佳作法 > HA 應用程式的最佳作法 > 使用 QueryImplementingThings 服務
使用 QueryImplementingThings 服務
如果您正在執行 ThingWorx 高可用性叢集,必須跨叢集共用用來作為記憶體內部程序的某些狀態 (例如內容值、物狀態與連線狀況)。因此,物件內容現在儲存在記憶體內部 Apache Ignite 快取中,這不會對效能或內容內嵌造成顯著影響。
我們已進行一些改善,來使對查詢延遲的影響降到最低。此外,也變更了服務,現在,服務只會傳回位於相關聯「物形式」或「物範本」中的內容值。您仍可篩選位於實行物件中的內容;不過,您必須使用新 GetThingPropertyValues API 來傳回有關實行物件的資料。
* 
自 ThingWorx 9.4.0 起,QueryImplementingThings 服務新增了新布林參數 isSortFirstisSortFirst 參數的預設值為 false,服務的工作方式繼續同之前保持一致。如果將 isSortFirst 設定為 true,則 QueryImplementingThings 服務會先排序結果集,然後套用限制。
* 
請限制篩選器,並僅排序在物形式或物範本中定義的內容。請避免篩選或排序位於實行物件中的內容。您可以考慮將內容移出物件,並將其置於已實行的物形式或物範本中。
GetThingPropertyValues
GetThingPropertyValues 是一個新的 API,它會大量擷取內容值,以限制填入傳回資料集所需的快取呼叫數。輸入為 thingRefrence (它是物件名稱與類型的資料負載) 與 dataShapeName (它是識別所需內容之資料形式的字串)。GetThingPropertyValues 會傳回在 thingReference 輸入中所識別之每個物件內容值的資料負載。
例如,欲使用此 API,您可以執行下列操作:
1. 針對物形式或物範本執行 QueryImplementingThingsQueryImplementingThingsWithData
為獲得最佳效能,請使用 QueryImplementingThings,其會產生具有基礎欄位的物件名稱。
2. QueryImplementingThings 收集所有物件名稱。
3. 建立一個資料形式,使其包括來自所有不同物件的所有不同內容。
4. 使用步驟 2 的物件名稱集合與步驟 3 的資料形式名稱呼叫 getThingPropertyValues
此範例的 JavaScript 為:
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 */
});
這是否有幫助?