사물 구독
구독은
이벤트를 수신하고 이에 응답하는 서비스입니다. 구독은 일반적으로
사물인 소스를 포함합니다. 사물에는 작업에 응답하는 이벤트에 대한 구독이 있을 수 있습니다. 예를 들어, 엔티티에서
모터가 과열됨 이벤트가 개시되는 경우
모터 끄기 구독을 트리거하여 해당 이벤트를 구독할 수 있습니다. 사물은 사용하는
사물 템플릿 및
사물 형태에서 구독을 상속할 수 있습니다.
구독은 표준 서비스와 비슷하지만 이벤트에 명시적으로 연결됩니다. 이를 통해 이벤트를 이벤트에 응답하는 코드에서 분리시킬 수 있습니다. 서비스와 마찬가지로 사용자 정의 비즈니스 로직을 구현하여 이벤트에 반응할 수 있습니다. 메일 서버 사물을 통해 이메일을 전송하거나, 데이터베이스에 작성하거나, 플랫폼에서 사용 가능한 서비스를 호출하여 모델의 기능을 활용할 수 있습니다. 구독에는 서비스와 같은 명시적인 반환 출력이 없습니다. 그러나 구독은 스레드 보안 컨텍스트에서 액세스할 수 있는 모델의 다른 서비스를 호출할 수 있습니다. 구독의 스레드 보안 컨텍스트는 발생한 이벤트의 동일한 스레드 보안 컨텍스트로 설정됩니다. 서비스를 구현하는 데 사용되는 동일한 JavaScript 편집 환경을 사용할 수 있습니다.
구독에는 이벤트에 의해 발급되고 이벤트 데이터라고 하는 데이터 패킷인 정의된 입력이 있습니다. 엔티티가 정의된 이벤트를 구독하는 경우 이벤트 데이터가 구독 함수에 전달됩니다. 이벤트 데이터는 이벤트
데이터 셰이프로 설명됩니다. 구독 구현 내에서 이벤트에서 전달된 데이터는 스크립트 함수에 대한 입력으로 작동합니다. 예를 들어, 엔티티가 사물 속성 데이터 변경 이벤트를 구독하는 경우 구독 스크립트 함수가 호출됩니다. 결과적으로 이벤트의 다른 관련 데이터와 함께 사물 속성 값이 이벤트 데이터의 일부로 함수에 전달됩니다.
여러 엔티티가 동일한 이벤트를 구독할 수 있습니다. 각 엔티티는 전달된 이벤트 데이터로 구독에 대한 호출을 받습니다. 엔티티는 구독 스크립트에서 솔루션 요구사항을 충족하는 데 필요한 작업을 수행할 수 있습니다.
이 방법을 사용하면 다른 서비스에서 호출되는 서비스를 사용하는 것에 비해 다음과 같은 이점이 있습니다.
• 하나 또는 여러 구독에서 이벤트를 구독할 수 있습니다.
• 이벤트가 시스템 활동을 기반으로 호출되며 사용자 상호 작용이 필요하지 않습니다.
• 둘 이상의 사물이 이벤트를 구독하는 경우 여러 서비스를 연결하는 대신 구독을 사용할 수 있습니다.
|
동일한 사물에 정의된 동일한 이벤트에 대한 여러 구독(또는 중복 구독)은 ThingWorx 버전 8.4.0 이상에서 지원됩니다.
|
|
이벤트 트리거 및 구독은 비동기적으로 실행됩니다. 예를 들어, 속성 업데이트 작업이 완료되면 속성 업데이트 API 요청이 즉시 응답을 받습니다. 데이터 변경 이벤트에 응답하는 후속 구독이 완료될 때까지 기다리지 않습니다.
|
여러 구독
사용자 정의 이름의 구독을 고유 식별자로 사용합니다. 엔티티에는 사물의 이벤트에 대한 여러 개의 구독이 있을 수 있습니다. 예를 들어, 엔티티에서 모터가 과열됨 이벤트가 개시되는 경우 모터 끄기 구독과 작업 요청서 만들기 구독 모두를 이벤트와 함께 사용하여 엔진에 대해 유지 관리를 점검할 수 있습니다. 해당 이벤트에 대해 임의 개수의 다른 구독을 만들 수도 있습니다.
사물 템플릿 또는 사물 형태가 이벤트에 대한 구독을 구현하는 경우 해당 사물 템플릿 또는 사물 형태를 사용하는 사물은 동일한 이벤트에 대한 구독을 만들 수도 있으며, 이러한 이벤트가 개시될 때 추가 작업을 수행하기 위한 해결책이 필요하지 않습니다.
배포 구독
|
배포 구독 기능은 ThingWorx 9.4 이상의 고가용성 환경에서만 사용할 수 있습니다.
|
배포 구독을 사용하면 이벤트가 여러 구독 인스턴스를 트리거할 때 모든 ThingWorx 노드에서 구독 실행을 배포할 수 있습니다. 예를 들어, 동일한 타이머 또는 스케줄러 이벤트를 구독하는 사물이 많이 있습니다. 이렇게 하면 고가용성 환경의 모든 ThingWorx 노드에서 타이머/스케줄러 기반 구독 실행을 수평적으로 확장하여 리소스 사용률과 성능을 향상시킬 수 있습니다. 구독 탭 아래의 배포됨 확인란을 사용하면 이 동작이 활성화됩니다. 배포됨 확인란의 선택을 취소하면 타이머 또는 스케줄러 이벤트가 생성되는 동일한 노드에서 타이머 및 스케줄러에 대한 구독이 실행됩니다. 관련 구성에 대한 자세한 내용은 다음을 참조하십시오.