Ghost-Entitäten erstellen und löschen
Ghost-Entitäten
Ghost-Entitäten sind im Arbeitsspeicher vorhandene Darstellungen von Entitäten, die aufgrund eines Fehlers nicht erstellt werden konnten.
Ghost-Entitäten bleiben nur bis zum nächsten ThingWorx Neustart erhalten.
Fehlgeschlagene Entitäten werden nicht in die Datenbank übernommen.
Im Allgemeinen sind Ghost-Entitäten das Ergebnis einer nicht ordnungsgemäßen Ausnahmebehandlung in einem Dienst, der einen Create<Entity>-Dienst programmgesteuert aufruft (z.B. CreateUser oder CreateThing).
Wenn während der Ausführung eines benutzerdefinierten ThingWorx Diensts eine Ausnahme ausgelöst wird, werden erstellte Entitäten nicht in die Datenbank übernommen.
Wenn eine Ghost-Entität vorhanden ist, können keine gleichnamigen Entitäten desselben Typs (Ding, Benutzer, Gruppe usw.) erstellt werden.
Ghost-Entitäten können nicht mit der Spotlight-Suche in Composer durchsucht werden.
Ghost-Entitäten können nur mit bestimmten ThingWorx Diensten gefunden werden.
Die Interaktion mit Ghost-Entitäten über Composer ist nicht möglich, ausgenommen über einige bestimmte ThingWorx Dienste.
Beispiel für Ghost-Entitäten
Ghost-Entitäten sind Entitäten innerhalb von ThingWorx, die im Arbeitsspeicher der Plattform vorhanden sind, jedoch nicht in der Datenbank. Sie werden nicht in Composer angezeigt. Wenn Sie jedoch versuchen, eine neue Entität mit dem gleichen Namen und Typ zu erstellen, zeigt Composer die Fehlermeldung an, dass die Entität bereits vorhanden ist. Nachdem die Plattform neu gestartet wurde, sind die Ghost-Entitäten nicht mehr vorhanden.
Ghost-Entitäten werden erzeugt, wenn Entitäten in einem Dienst erstellt werden und der Dienst eine Ausnahme auslöst. Wenn die Ausnahme auftritt, wird die Datenbanktransaktion zum Speichern der Entitäten rückgängig gemacht, die Entitäten werden jedoch nicht aus dem Arbeitsspeicher der Plattform entfernt. Im Folgenden finden Sie einen Beispieldienst, der möglicherweise eine Ghost-Entität erstellt:
var params = {
name: "GhostThing" /* STRING */,
description: "Ghost" /* STRING */,
thingTemplateName: "GenericThing" /* THINGTEMPLATENAME */
};
Resources["EntityServices"].CreateThing(params); var makeError;
makeError.notThere = 1
Im obigen Beispiel tritt eine Ausnahme auf, und die Transaktion, die GhostThing erstellt hat, wird rückgängig gemacht, da die letzte Zeile auf eine Eigenschaft in "makeError" verweist, die nicht vorhanden ist. Das GhostThing ist jedoch weiterhin im Arbeitsspeicher vorhanden, und es tritt ein Fehler auf, wenn Sie versuchen, eine neue Entität mit dem Namen "GhostThing" zu erstellen, da sie für die Plattform bereits vorhanden ist.
* 
GhostThing wird nicht in Composer angezeigt.
Um die Erstellung von Ghost-Entitäten zu verhindern, platzieren Sie eine try/catch-Anweisung um Code, der möglicherweise eine Ausnahme auslöst, und setzen Sie alle Elemente zurück, die möglicherweise erstellt wurden. Der obige Code kann wie folgt aktualisiert werden, um die Erstellung der Ghost-Entität zu verhindern:
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);
}
Ghost-Entitätsdienste
Die folgenden Dienste stehen im Plattform-Subsystem zur Verarbeitung von Ghost-Entitäten zur Verfügung:
DeleteGhostEntities – Löscht alle Entitäten, die nicht persistent gemacht wurden. Legen Sie den Parameter deleteGhostEntitiesInAllInstances auf "false" fest, um Ghost-Entitäten in der aktuellen ThingWorx Instanz zu löschen, oder auf "true", um Ghost-Entitäten in allen Instanzen zu löschen.
GetGhostEntities – Gibt eine Liste von Ghost-Entitätsnamen zurück, die in der aktuellen ThingWorx Instanz nicht persistent gemacht wurden. Zum Identifizieren der Entitäten führt der Endpunkt eine Spotlight-Suche durch und wählt Entitäten aus, die keine ID besitzen.
War dies hilfreich?