QueryImplementingThings 서비스 사용
ThingWorx 고가용성 클러스터링을 실행 중인 경우 메모리 내 프로세스(예: 속성 값, 사물 상태, 연결 상태)로 사용되는 특정 상태를 클러스터 전체에서 공유해야 합니다. 따라서 사물 속성이 이제 메모리 내 Apache Ignite 캐시에 저장되므로 성능 또는 속성 수집에 큰 영향을 주지 않습니다.
지연이 질의에 미치는 영향을 최소화하도록 개선되었습니다. 이 서비스는 연관된 사물 형태 또는 사물 템플릿에 있는 속성 값만 반환하도록 변경되었습니다. 구현 중인 사물에 있는 속성도 필터링할 수 있지만, 구현 중인 사물에 대한 데이터를 반환하려면 새 GetThingPropertyValues API를 사용해야 합니다.
* 
ThingWorx 9.4.0부터 새 부울 매개 변수 isSortFirstQueryImplementingThings 서비스에 추가됩니다. isSortFirst 매개 변수의 기본값은 false이며 이 서비스는 이전과 같이 계속 작동합니다. isSortFirsttrue로 설정된 경우 QueryImplementingThings 서비스는 먼저 결과 집합을 정렬한 다음 제한을 적용합니다.
* 
필터를 제한하고 사물 형태 또는 사물 템플릿에 정의된 해당 속성만 정렬합니다. 구현 중인 사물에 있는 속성에 대해 필터링 또는 정렬하지 마십시오. 속성을 사물에서 이동하여 구현된 사물 형태 또는 사물 템플릿에 배치하는 것을 고려할 수 있습니다.
GetThingPropertyValues
GetThingPropertyValues는 속성 값을 대량으로 검색하여 반환 데이터 집합을 채우는 데 필요한 캐시 호출 수를 제한하는 새 API입니다. 입력은 thingRefrence(사물 이름 및 유형의 인포테이블) 및 dataShapeName(필수 속성의 데이터 셰이프를 식별하는 문자열)입니다. GetThingPropertyValuesthingReference 입력에서 식별된 각 사물에 대한 속성 값의 인포테이블을 반환합니다.
예를 들어, 이 API를 사용하려면 다음을 수행할 수 있습니다.
1. 사물 형태 또는 사물 템플릿에 대해 QueryImplementingThings 또는 QueryImplementingThingsWithData를 실행합니다.
최상의 성능을 얻기 위해 기본 필드를 포함하는 사물 이름을 생성하는 QueryImplementingThings를 사용합니다.
2. QueryImplementingThings에서 모든 사물 이름을 수집합니다.
3. 모든 다른 사물의 모든 다른 속성을 포함하는 데이터 셰이프를 만듭니다.
4. 2단계의 사물 이름 컬렉션과 3단계의 데이터 셰이프 이름을 사용하여 getThingPropertyValues를 호출합니다.
이 예의 JavaScript는 다음과 같습니다.
var result = ThingShapes["testThingShapeOneForQITService<>626037"].QueryImplementingThings({
maxItems: undefined /* NUMBER */,
nameMask: undefined /* STRING */,
query: undefined /* QUERY */,
tags: undefined /* TAGS */
});
var resultQIT = result;
var params = {
infoTableName : "InfoTable",
dataShapeName : "ThingRefDataShape"
};
// CreateInfoTableFromDataShape(infoTableName:STRING("InfoTable"), dataShapeName:STRING):INFOTABLE(ThingRefDataShape)
result = Resources["InfoTableFunctions"].CreateInfoTableFromDataShape(params);
var thingRef = result;
for(var x=0 ; x<resultQIT.length ; x++){
var thingName = resultQIT[x].name;
var newEntry = new Object();
newEntry.name = thingName; // STRING
newEntry.type = "Thing"; // STRING
thingRef.AddRow(newEntry);
}
// result: INFOTABLE dataShape: "RootEntityList"
result = Resources["EntityServices"].GetThingPropertyValues({
thingReferences: thingRef /* INFOTABLE */,
dataShapeName: "QITDataShape<>392587" /* DATASHAPENAME */
});
도움이 되셨나요?