Object Monitor 평가
모니터 조건의 평가와 액션 실행은 구독자별로 각각 수행합니다. 평가 시점의 사용자 데이터 접근 권한과 사용자 속성에 의존하는 액션 제출 조건을 적용합니다.
실시간 평가 조건
다음 조건을 모두 만족해야 실시간으로 계속 평가할 수 있습니다.
- 입력 객체 유형이 Object Storage v2로 이전되어 있습니다.
- 객체 유형 전체의 인스턴스 수가 1,000만 개 미만입니다. 이후 객체 증가로 한도를 넘으면 평가가 실패합니다.
- 입력 집합 정의가 String의 정확한 일치, Number의 범위 또는 Boolean 속성 필터만 사용합니다.
- 입력 집합 정의에 연결 객체의 속성이나 배열 속성이 없습니다.
- 규칙이 입력에 객체가 추가되거나 제거되는 Event 조건입니다.
알림이나 액션은 감지한 변화 이후 대개 몇 분 안에 실행됩니다. 파이프라인 빌드에서 많은 변경이 한꺼번에 동기화되면 평가와 후속 효과가 더 오래 걸릴 수 있습니다.
전체 객체 유형 규모와 별개로 추가/제거 조건의 입력 집합에는 100,000개 한도도 적용됩니다.
파이프라인 변경과 액션 변경
실시간 평가는 파이프라인 빌드에서 들어오는 변경에 적용합니다. 액션으로 바뀐 데이터는 Object Monitors가 감지하기까지 최대 7시간이 걸릴 수 있습니다.
액션 실행 즉시 알림이 필요하면 그 액션에 알림 규칙을 포함합니다.
시간대에 따른 액션 실행 제한
실시간 모니터의 평가 일정을 예약하는 기능은 지원하지 않습니다. 대신 모니터가 사건을 감지했을 때 실행하는 함수 기반 액션에서 현재 시간이나 요일을 검사할 수 있습니다. 이 방식은 모니터를 특정 시각에 실행하는 예약과 다릅니다.
다음 가상 TypeScript v1 액션은 UTC 기준 00:00 이상 12:00 미만에만 SalesOpportunity의 amountRealized를 입력한 값으로 바꿉니다. 생성 API에 해당 객체 유형과 쓰기 가능한 숫자 속성이 있어야 하며, 액션 입력에 객체와 realizedAmount를 연결합니다.
import { Double, Edits, OntologyEditFunction } from "@foundry/functions-api";
import { SalesOpportunity } from "@foundry/ontology-api";
export class TimeWindowActions {
@Edits(SalesOpportunity)
@OntologyEditFunction()
public updateRealizedAmountInWindow(
opportunity: SalesOpportunity,
realizedAmount: Double,
): void {
const currentHour = new Date().getUTCHours();
if (currentHour >= 0 && currentHour < 12) {
opportunity.amountRealized = realizedAmount;
}
}
}
허용 시간 밖에서는 속성을 바꾸지 않습니다. 업무 시간대가 UTC가 아니면 실제 운영 시간대에 맞는 판정 로직을 구성해야 합니다. 알림을 포함한 다른 효과가 필요하면 그 효과의 실행 조건도 별도로 정합니다.
비실시간 평가
실시간 조건을 만족하지 못하는 활성 모니터는 폴링으로 평가합니다. 이전 평가로부터 24시간 안에 다시 평가하도록 보장되며, 부하를 분산하기 때문에 폴링 평가의 정확한 시각은 예약할 수 없습니다.
마지막 평가 시각은 Object Monitors의 모니터 개요 패널에 표시됩니다.
수동 평가
비실시간 모니터는 Object Explorer에서 수동 평가할 수도 있습니다. 설정 과정에서 모니터를 시험하는 용도로 사용합니다.