建立及刪除映像實體
關於映像實體
映像實體是記憶體中因錯誤而無法建立的實體表示。
映像實體只會存留到下一次 ThingWorx 重新啟動之前。
不會將失敗的實體提交至資料庫。
一般而言,映像實體是在以程式方式呼叫 Create<Entity> 服務的服務中,因錯誤處理例外而產生的結果 (例如,CreateUserCreateThing)。
如果在自訂 ThingWorx 服務執行期間擲出例外,所建立的任何實體都不會提交至資料庫。
當存在映像實體時,無法建立相同類型 (物件、使用者、群組等) 與相同名稱的實體。
在 Composer 中,無法使用 Spotlight 搜尋來搜尋映像實體。
只能透過使用特定 ThingWorx 服務來尋找映像實體。
除非利用少數幾個特定 ThingWorx 服務,否則無法透過 Composer 與映像實體進行互動。
映像實體範例
映像實體是 ThingWorx 中的實體,這些實體存在於平台記憶體中,而不是在資料庫中。它們不會顯示在 Composer 中,但如果您嘗試使用相同名稱與類型建立新實體,Composer 則會顯示實體已存在的錯誤。重新啟動平台之後,映像實體就會消失。
當在服務中建立實體時,會建立映像實體,且服務會擲出例外。若發生例外,儲存實體的資料庫交易會回復,但不會從平台的記憶體中移除實體。以下是可能會建立映像實體的範例服務:
var params = {
name: "GhostThing" /* STRING */,
description: "Ghost" /* STRING */,
thingTemplateName: "GenericThing" /* THINGTEMPLATENAME */
};
Resources["EntityServices"].CreateThing(params); var makeError;
makeError.notThere = 1
在上述範例中,會發生例外,且已建立 GhostThing 的交易會回復,因為最後一行參照了不存在於 'makeError' 中的內容。但是,GhostThing 仍存在於記憶體中,如果您嘗試建立名為 "GhostThing" 的新實體,就會發生錯誤,因為平台會認為該實體已存在。
* 
GhostThing 不會顯示在 Composer 中。
為了防止建立映像實體,請用 try/catch 陳述式將有可能會擲出例外的程式碼括起來,並從可能已建立的任何項目復原。如果將上述程式碼依照下列方式進行更新,即可防止建立映像實體:
try {
let params = {
name: "GhostThing" /* STRING */,
description: "Ghost" /* STRING */,
thingTemplateName: "GenericThing" /* THINGTEMPLATENAME */
};
Resources["EntityServices"].CreateThing(params);
var makeError;
makeError.notThere = 1;
} catch (err) {
let params = {
name: "GhostThing" /* THINGNAME */
};
Resources["EntityServices"].DeleteThing(params);
}
映像實體服務
平台子系統中可使用下列服務處理映像實體:
DeleteGhostEntities - 可刪除所有尚未存留的實體。將 deleteGhostEntitiesInAllInstances 參數設定為 false 可刪除目前 ThingWorx 實例中的映像實體,設定為 true 可刪除所有實例中的映像實體。
GetGhostEntities - 可傳回在目前 ThingWorx 實例中尚未存留之映像實體名稱的清單。為了識別實體,端點會執行 Spotlight 搜尋並選取沒有 ID 的實體。
這是否有幫助?