Creazione ed eliminazione di entità fantasma
Entità fantasma
Le entità fantasma sono rappresentazioni in memoria di entità che non è stato possibile creare a causa di un errore.
Le entità fantasma vengono mantenute solo fino al successivo riavvio di ThingWorx.
Le entità non riuscite non vengono salvate nel database.
In genere, le entità fantasma sono il risultato di una gestione delle eccezioni non corretta in un servizio che chiama un servizio Create<Entity> a livello di programmazione (ad esempio, CreateUser o CreateThing).
Se durante l'esecuzione di un servizio di ThingWorx personalizzato viene generata un'eccezione, tutte le entità create non vengono salvate nel database.
Quando esiste un'entità fantasma, non è possibile creare entità dello stesso tipo (Oggetto, Utente, Gruppo e così via) e con lo stesso nome.
Non è possibile eseguire ricerche di entità fantasma utilizzando la ricerca Spotlight in Composer.
È possibile trovare le entità fantasma solo mediante l'utilizzo di servizi ThingWorx specifici.
Non è possibile interagire con le entità fantasma tramite Composer, se non attraverso alcuni servizi ThingWorx specifici.
Esempio di entità fantasma
Le entità fantasma sono entità all'interno di ThingWorx che esistono nella memoria della piattaforma, ma non nel database. Non vengono visualizzate in Composer ma, se si tenta di creare una nuova entità con lo stesso nome e tipo, viene visualizzato un errore che segnala che l'entità esiste già. Una volta riavviata la piattaforma, le entità fantasma scompaiono.
Le entità fantasma vengono create quando si creano entità in un servizio e il servizio genera un'eccezione. Quando si verifica l'eccezione, viene eseguito il rollback della transazione di database che ha salvato le entità, ma le entità non vengono rimosse dalla memoria della piattaforma. Di seguito è riportato un servizio di esempio che può creare un'entità fantasma:
var params = {
name: "GhostThing" /* STRING */,
description: "Ghost" /* STRING */,
thingTemplateName: "GenericThing" /* THINGTEMPLATENAME */
};
Resources["EntityServices"].CreateThing(params); var makeError;
makeError.notThere = 1
Nell'esempio precedente viene generata un'eccezione e viene eseguito il rollback della transazione che ha creato GhostThing perché l'ultima riga fa riferimento a una proprietà in ‘makeError’ che non esiste. Tuttavia, GhostThing esiste ancora nella memoria e, se si prova a creare una nuova entità denominata "GhostThing" si verifica un errore perché alla piattaforma risulta che esiste già.
* 
GhostThing non viene visualizzato in Composer.
Per impedire la creazione di entità fantasma, inserire un'istruzione try/catch intorno al codice che può potenzialmente generare un'eccezione e annullare tutto ciò che potrebbe essere stato creato. È possibile aggiornare come segue il codice riportato sopra per impedire la creazione dell'entità fantasma:
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);
}
Servizi entità fantasma
Nel sottosistema piattaforma sono disponibili i servizi riportati di seguito per gestire le entità fantasma.
DeleteGhostEntities - Elimina tutte le entità che non sono state rese persistenti. Impostare il parametro deleteGhostEntitiesInAllInstances su false per eliminare le entità fantasma nell'istanza corrente di ThingWorx oppure su true per eliminarle in tutte le istanze.
GetGhostEntities - Restituisce un elenco di nomi di entità fantasma che non sono stati resi persistenti nell'istanza corrente di ThingWorx. Per identificare le entità, l'endpoint esegue una ricerca Spotlight e seleziona le entità prive di ID.
È stato utile?