객체 집합 조건
객체 집합 조건은 미리 정의한 집합의 구성원이나 속성, 집계 값이 변할 때 효과를 실행합니다. 변경은 기반 데이터셋, 액션 또는 외부 애플리케이션에서 발생할 수 있습니다. 일반적인 실시간 감지에는 수분이 걸릴 수 있으며, 지원 방식은 평가 주기를 따릅니다.
감시할 집합
동적으로 정의한 집합, 저장한 객체 집합 또는 함수가 반환하는 객체 집합을 사용할 수 있습니다. 동적 정의에서는 객체 유형을 선택하고 필요한 필터를 추가합니다. 필터를 생략하면 해당 유형의 모든 객체를 감시합니다.
예를 들어 Support Ticket에서 Status = Open을 지정하면 열린 티켓 집합을 감시합니다. Preview로 기대한 객체가 포함되는지 확인합니다. 객체 유형과 필터는 실시간 감시 지원 여부에도 영향을 줍니다.
함수가 반환하는 집합
함수는 ObjectSet<T>를 반환해야 합니다. 다음 TypeScript v1 예제는 사용자와 연결된 티켓 집합을 반환합니다. 함수 저장소의 생성 SDK에는 DemoTicket, users() 검색과 searchAroundSupportTickets() 링크가 있어야 합니다.
TypeScript v1 함수는 내보낸 클래스 안에 정의합니다. 아래 두 예제의 클래스는 functions-typescript/src/index.ts에 두거나, 별도 파일에 작성한 뒤 그 index.ts에서 내보냅니다.
import { Function } from "@foundry/functions-api";
import { Objects, ObjectSet, DemoTicket } from "@foundry/ontology-api";
export class TicketConditions {
@Function()
public getSupportTicketsLinkedToUsers(): ObjectSet<DemoTicket> {
return Objects.search().users().searchAroundSupportTickets();
}
}
이 집합을 Objects added 조건에 사용하면 새 티켓이 집합에 들어왔을 때 효과를 실행합니다. 조건 평가 때 함수는 시스템을 위해 한 번, 각 구독자를 위해 한 번씩 실행됩니다. 함수 생성 집합은 실시간 감시를 지원하지 않습니다.
집합에 추가
Objects added to set은 객체가 집합의 새 구성원이 될 때 발동합니다. Status = Open 집합이라면 Open 상태의 새 티켓 생성과 기존 티켓이 Open으로 바뀌는 경우가 모두 해당합니다.
필터가 없으면 해당 유형 전체를 감시하므로 온톨로지에 새 객체가 생성되는 경우에 발동합니다.
효과 입력으로 단일 Added object, 집합 Added objects 또는 추가된 객체의 속성을 사용할 수 있습니다. 실시간, 스케줄과 부모 자동화 의존 평가를 지원하되, 스트림 기반 객체의 추가 조건은 실시간 감시를 지원하지 않습니다.
집합에서 제거
Objects removed from set은 객체가 필터 조건을 더 이상 충족하지 않아 집합에서 빠질 때 발동합니다. Open 티켓 집합에서는 상태가 다른 값으로 바뀐 경우가 해당합니다. 온톨로지에서 객체 자체가 삭제된 경우에는 발동하지 않습니다.
효과에는 Removed object 또는 Removed objects를 전달할 수 있습니다. 평가 방식의 지원 범위는 추가 조건과 같으며, 스트림 기반 객체의 제거 조건도 실시간 감시를 지원하지 않습니다.
집합 안의 수정
Objects modified in set은 집합에서 객체 속성이 변경될 때 발동합니다. 감시할 속성을 선택할 수 있으며, 선택하지 않으면 어떤 속성의 변경이든 대상이 됩니다. 특정 값으로 바뀌는 경우만 감시하려면 그 값으로 필터링한 집합의 추가 조건을 사용할 수 있습니다.
Include objects added와 Include objects removed는 변경으로 집합에 들어오거나 집합에서 빠지는 객체도 수정으로 취급할지 정합니다. 둘 다 끄면 변경 전후 모두 집합 안에 남아 있는 객체만 대상입니다.
위치가 USA인 티켓 집합에서 added를 켜고 removed를 끈 예는 다음과 같습니다.
- 위치가 UK에서 USA로 바뀌거나 USA의 새 티켓이 생성되면 발동합니다.
- 상태가 Open에서 Closed로 바뀌면서 위치도 USA에서 UK로 바뀌면 집합을 떠났으므로 발동하지 않습니다.
- 온톨로지에서 삭제한 티켓도 발동시키지 않습니다.
효과 입력은 Modified object 또는 Modified objects입니다. 이 조건은 실시간 평가만 지원합니다. 스트림 기반 객체에서는 특정 속성을 선택할 수 없다는 스트리밍 조건도 적용됩니다.
전체 객체에서 실행
Run on all objects는 평가할 때마다 지정한 집합의 모든 객체에 효과를 실행합니다. 일정과 결합하거나 부모 자동화가 완료된 뒤 평가하도록 구성할 수 있습니다. 실시간 감시는 지원하지 않습니다.
영향받은 객체 입력을 효과에 연결하고 배치 크기와 병렬성 설정을 적용합니다. 큰 집합을 배치로 나누면 한 함수나 액션에 모든 객체를 전달하는 일을 피할 수 있습니다. 입력 집합과 객체별 실행에는 서로 다른 한도가 있습니다.
임계값 통과
Threshold crossed는 여러 검사의 논리 결과로 조건 상태를 판단합니다. 정의한 검사가 모두 true여야 조건 상태가 true입니다. 상태가 양방향으로 임계값을 통과하면 효과를 실행하고 활동을 기록합니다. false에서 true는 Automation triggered, true에서 false는 Automation recovered로 기록합니다.
Automate 화면에서 정의한 로직과 Boolean 반환 함수를 조합할 수 있습니다. 평가는 스케줄 방식입니다.
화면에서 정의
- Condition composition에서 Add condition을 선택합니다.
- Condition type을 Condition으로 선택합니다.
- 지표 입력으로 저장한 객체 집합을 지정합니다.
- Select a metric에서 비교할 속성이나 지표를 선택합니다.
- 비교 연산자를 선택합니다.
- 비교할 다른 지표 또는 정적 값을 지정합니다.
다음 예는 New York의 대기질 센서 집합에서 최댓값이 0.05보다 작은지 확인합니다.
함수로 정의
Boolean을 반환하는 함수를 게시하여 화면에서 표현하기 어려운 조건을 구성할 수 있습니다. 함수는 평가 때 호출하며 상태가 바뀌면 이벤트를 기록합니다.
다음 TypeScript v1 예제는 일산화탄소 속성 값이 0.05를 초과한 센서를 unhealthy로 분류하고, 그 비율이 50%보다 큰지 확인합니다. 생성 SDK의 센서 유형과 carbonMonoxide 속성이 필요합니다. 입력 센서가 없을 때는 false입니다.
import { Function } from "@foundry/functions-api";
import { ObjectSet, automateExampleAirQualitySensor } from "@foundry/ontology-api";
export class SensorConditions {
@Function()
public async areMoreThanFiftyPercentOfSensorsUnhealthy(
airQualitySensors: ObjectSet<automateExampleAirQualitySensor>,
): Promise<boolean> {
const totalSensorCount = await airQualitySensors.count();
if (totalSensorCount == null || totalSensorCount === 0) return false;
const unhealthySensorCount = await airQualitySensors
.filter(sensor => sensor.carbonMonoxide.range().gt(0.05))
.count();
return ((unhealthySensorCount ?? 0) / totalSensorCount) > 0.5;
}
}
지표 변경: Sunset
Metric changed는 지원 종료를 준비하는 Sunset 단계입니다. 기존 자동화의 편집과 지원은 계속 제공하며, 새 설계에서는 Objects modified in set을 권장합니다.
감시할 지표는 집합의 전체 객체 수 또는 숫자 속성의 평균, 최댓값, 최솟값, 합계입니다. Change type에서 Increases 또는 Decreases를 선택합니다. 예를 들어 New York 대기질 센서의 평균 일산화탄소 값이 증가할 때 발동하도록 구성할 수 있습니다.
Metric changed는 스케줄 평가만 지원합니다.