고스트 엔티티 생성 및 삭제
고스트 엔티티 정보
고스트 엔티티는 오류로 인해 생성하지 못한 엔티티의 메모리 내 표현입니다.
고스트 엔티티는 다음 ThingWorx를 다시 시작할 때까지만 지속됩니다.
실패한 엔티티는 데이터베이스에 커밋되지 않습니다.
일반적으로 고스트 엔티티는 Create<Entity> 서비스를 프로그래밍 방식으로 호출하는 서비스의 부적절한 예외 처리의 결과입니다(예: CreateUser 또는 CreateThing).
사용자 정의 ThingWorx 서비스 실행 중에 예외가 발생하면 생성된 엔티티가 데이터베이스에 커밋되지 않습니다.
고스트 엔티티가 있는 경우 동일한 유형(사물, 사용자, 그룹 등) 및 이름의 엔티티를 생성할 수 없습니다.
Composer에서 스폿 라이트 검색을 사용하여 고스트 엔티티를 검색할 수 없습니다.
고스트 엔티티는 특정 ThingWorx 서비스를 사용해야만 찾을 수 있습니다.
고스트 엔티티는 몇 가지 특정 ThingWorx 서비스를 제외하고는 Composer를 통해 상호 작용할 수 없습니다.
고스트 엔티티의 예
고스트 엔티티는 플랫폼의 메모리에 있지만 데이터베이스에는 없는 ThingWorx 내의 엔티티입니다. 이러한 엔티티는 Composer에는 나타나지 않지만 이름과 유형이 동일한 새 엔티티를 생성하려고 하면 해당 엔티티가 이미 존재한다는 오류가 표시됩니다. 플랫폼이 다시 시작되면 고스트 엔티티가 사라집니다.
고스트 엔티티는 서비스에서 엔티티가 생성될 때 생성되며 서비스에서 예외가 발생합니다. 예외가 발생하면 엔티티를 저장한 데이터베이스 트랜잭션이 롤백되지만 플랫폼의 메모리에서 엔티티는 제거되지 않습니다. 다음은 고스트 엔티티를 생성할 수 있는 서비스의 예입니다.
var params = {
name: "GhostThing" /* STRING */,
description: "Ghost" /* STRING */,
thingTemplateName: "GenericThing" /* THINGTEMPLATENAME */
};
Resources["EntityServices"].CreateThing(params); var makeError;
makeError.notThere = 1
위 예에서는 마지막 줄이 존재하지 않는 'makeError'의 속성을 참조하기 때문에 예외가 발생하고 GhostThing을 생성한 트랜잭션이 롤백됩니다. 그러나 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 인스턴스에 지속되지 않은 고스트 엔티티 이름 목록을 반환합니다. 엔티티를 식별하기 위해 끝점은 스폿 라이트 검색을 수행하고 ID가 없는 엔티티를 선택합니다.
도움이 되셨나요?