비주얼 이벤트 핸들러 참조 가이드
개요
최신 실시간 비즈니스 애플리케이션은 본질적으로 서로 연관된 정보를 포함하는 다양한 데이터 스트림의 집합을 갖는 경우가 많습니다. 이러한 데이터는 처리, 필터링 및 비즈니스의 여러 부분을 통해 흐르는 다른 데이터와 결합된 후에야 가치를 창출할 수 있습니다. Vantiq는 이러한 데이터의 흐름을 일련의 "이벤트"로 모델링합니다. 이러한 이벤트는 Vantiq 시스템 외부에서 다양한 프로토콜을 사용하여 수신되거나 Vantiq 플랫폼 내부에서 생성될 수 있습니다.
Vantiq 애플리케이션의 이벤트는 다음에서 수신 및 처리됩니다. 서비스 를 통해 이벤트 핸들러. 이 문서는 다음의 구성을 다룹니다. 시각 이벤트 핸들러(앱 또는 VEH라고도 함). VEH는 App Builder를 사용하여 그래픽 방식으로 구축되며, 사용자는 이를 통해 시스템 전체의 일반적인 데이터 흐름을 레이아웃할 수 있습니다. App Builder를 사용하면 코드를 거의 작성하지 않고도 Vantiq 시스템 내에서 발생하는 이벤트 스트림을 캡처, 변환 및 의사 결정을 내릴 수 있습니다. App Builder는 단순히 데이터를 변환하는 것뿐만 아니라 이벤트 스트림 내에서 중요한 비즈니스 상황을 식별하여 자동으로 협업을 유도함으로써 기존의 ETL 파이프라인을 뛰어넘습니다. Vantiq의 사명은 기업이 실시간 데이터를 감지, 분석 및 활용할 수 있도록 지원하는 것이며, App Builder는 데이터 감지 및 분석에 필요한 코드 양(및 개발 시간)을 획기적으로 줄여 이러한 사명을 달성하는 데 도움을 줍니다.
앱 빌더의 주요 기능은 다음과 같습니다.
- 원시 데이터 스트림을 수집합니다. 데이터는 Kafka 또는 MQTT와 같은 소스의 이벤트, Type의 삽입 또는 업데이트, 토픽 게시 또는 서비스 이벤트 유형에서 발생할 수 있습니다.
- 시각적 인터페이스나 VAIL 절차를 통해 데이터 스트림의 이벤트를 변환합니다.
- 제한된 시간 창 내에서 발생하는 상관관계가 있는 ID나 이벤트와 같은 특정 조건에 따라 여러 이벤트 스트림을 결합합니다.
- 특정 기준에 맞지 않는 이벤트를 필터링합니다.
- 메모리 내 상태 업데이트
- 스트림에서 캡처된 새로운 이벤트에 대한 영구 저장소(유형)를 자동으로 업데이트합니다.
- 디버깅 목적으로 이벤트를 기록합니다.
- 인간과 컴퓨터 간 협업을 시작합니다.
튜토리얼
시각적 이벤트 핸들러를 포함한 첫 번째 서비스를 구축하는 방법을 알아보려면 다음을 확인하세요. 지도 시간.
앱 빌더 개요
App Builder는 시각적 요소를 생성/편집할 때 실행됩니다. 서비스 이벤트 핸들러 이벤트 핸들러 다이어그램을 보여줍니다. 이 다이어그램은 상자로 구성되어 있으며, 작업, 그리고 선을 나타내는 스트림 작업 간에 흐르는 이벤트. 작업은 작업을 수행합니다. 인바운드 이벤트를 발생시킨 다음 방출합니다 배 밖으로 다음 작업이 사용할 이벤트입니다. 이벤트 핸들러의 각 작업은 하나 이상의 인바운드 이벤트 스트림을 사용하고 하나 이상의 아웃바운드 이벤트 스트림을 생성합니다. 아웃바운드 이벤트가 두 개 이상인 작업은 기본 출력을 생성하는 작업과 해당 작업을 소비하는 작업 사이에 있는 선으로 표시합니다. 추가 이벤트는 작업 사이에 삼각형을 사용하여 표시합니다. 모든 핸들러의 이벤트는 루트에서 시작하여 아래로 흐릅니다. 이벤트 스트림 다이어그램 상단의 작업.
VEH는 내부적으로 VAIL에 완벽하게 구현되어 있습니다. VEH가 생성되거나 업데이트되면 각 작업을 구현하기 위한 규칙, 이벤트 스트림 및 절차 모음이 생성됩니다.
시각적 이벤트 핸들러는 미리 정의된 활동 패턴 모음으로 구성됩니다. 현재 세트에는 다음이 포함됩니다.
- 상태 축적 – 기존 상태 객체와 새 이벤트를 가져와 새 상태 객체를 생성하는 프로시저를 호출하여 일련의 이벤트에 대한 상태를 집계합니다.
- 통계 분석 – 스트림의 이벤트에 대한 집계 통계 컬렉션을 계산합니다.
- 답변 질문 – 지정된 것을 사용하여 질문에 답합니다. 의미론적 색인 생성된 답변을 반환합니다.
- 양수인 – 지정된 엔터티 또는 협력자 역할에 인바운드 이벤트를 할당합니다.
- 지사 – 서비스 이벤트 핸들러 흐름에 조건 분기를 만듭니다.
- 경로 구축 및 예측 – 추적된 객체의 움직임과 위치를 기반으로 경로를 구성합니다. 객체가 추적에서 제외될 때의 위치를 예측합니다.
- 캐시된 강화 – 향후 이벤트를 위해 결과를 보강하고 캐시합니다. 캐시된 연결은 설정 가능한 간격으로 새로 고쳐집니다.
- 잡담 – 채팅 메시지를 처리하고 적절하게 반응하기 위해 챗봇을 사용하는 채팅방을 시작합니다.
- 긴밀한 협업 – 현재 협업을 닫고 상태를 '실패' 또는 '완료'로 설정합니다.
- 통계 계산 – 스트림의 이벤트에 대한 집계 통계 컬렉션을 계산합니다.
- 좌표 변환 – 좌표(일반적으로 이미지 분석에서 얻은 좌표)를 다른 좌표 공간으로 변환합니다.
- DBScan – 클러스터가 하나인지 여러 개인지 판별하기 위해 밀도 기반 클러스터링 알고리즘을 적용합니다.
- Delay – 구성 가능한 시간 동안 인바운드 이벤트의 방출을 지연합니다.
- 드웰 – 일정 기간 동안 일관된 상태를 유지하는 일련의 이벤트를 감지합니다.
- 풍부하게하다 – 영구적인 유형의 연관된 데이터로 이벤트를 증강합니다.
- 협력을 구축하다 – roleName으로 지정된 엔터티 역할에 대해 하나의 협업만 생성되도록 보장합니다.
- 이벤트 스트림 – 수신할 이벤트 스트림을 식별하고 이벤트 핸들러에서 루트 작업 역할을 합니다.
- 필터 – 다운스트림 작업으로 전달되는 이벤트를 제한하는 조건을 정의합니다.
- GenAI 흐름 – 내장된 것을 정의합니다 GenAI 흐름 작업을 실행하기 위해.
- 협업을 얻으세요 – 현재 협업을 반환합니다.
- 가입하기 – 두 개의 병렬 스트림에서 이벤트 쌍을 결합합니다.
- K-평균 클러스터 – 데이터에서 지정된 수의 클러스터를 찾기 위해 K-Means 클러스터링 알고리즘을 적용합니다.
- 한도 – 작업을 통한 이벤트 흐름을 구성 가능한 최대 처리량으로 제한합니다.
- 선형 회귀 – 데이터에 선형 회귀를 적용하고 미래 데이터 포인트를 예측하기 위한 예측 절차를 생성합니다.
- 반복하는 동안 – 지정된 조건이 참인 동안 해당 조건의 일부인 작업을 반복합니다. 루프 바디.
- 로그 스트림 – 모든 인바운드 이벤트 기록
- 병합 – 여러 개의 독립적인 스트림을 하나의 스트림으로 결합합니다.
- 누락 – 일정 시간 동안 이벤트가 발생하지 않았음을 감지합니다.
- 알림 – Vantiq 모바일 애플리케이션을 사용하여 Vantiq 사용자에게 알림을 보냅니다.
- 다항식 피팅 – 데이터에 다항식 적합 알고리즘을 적용하고 예측, 미분, 적분 절차를 생성합니다.
- 연령별 경로 예측 – 최근 업데이트되지 않은 경로의 위치를 예측합니다.
- 서비스에 게시 – 서비스의 인바운드 이벤트 유형에 이벤트 보내기
- 소스에 게시 – 소스로 인바운드 데이터를 전송합니다.
- 주제에 게시 – 주제로 인바운드 데이터를 전송합니다.
- 순서 – 프로시저를 실행하고 결과를 내보냅니다.
- 율 – 정기적으로 인바운드 이벤트의 빈도를 내보냅니다.
- 권하다 – 수신 이벤트와 매치 지침을 기반으로 권장 사항 목록을 생성합니다.
- 기록 이벤트 – 이벤트 원장에 이벤트 유형의 인스턴스를 기록합니다.
- 댓글 – 발신자에게 답장을 보냅니다. 이벤트.요청 현재 이벤트(있는 경우)를 촉발하는 역할을 담당합니다.
- 문서에서 TensorFlow 모델 실행 – TensorFlow 모델을 사용하여 Vantiq 문서(일반적으로 이미지)를 분석합니다.
- 이미지에서 TensorFlow 모델 실행 – TensorFlow 모델을 사용하여 Vantiq 이미지를 분석합니다.
- 임시 이미지에서 TensorFlow 모델 실행 – TensorFlow 모델을 사용하여 Vantiq 이미지 분석
- Tensor에서 TensorFlow 모델 실행 – TensorFlow 모델을 사용하여 데이터를 분석합니다.
- 견본 – 다운스트림 작업에 더 적은 이벤트를 생성하기 위해 인바운드 스트림에서 이벤트를 샘플링합니다.
- 유형으로 저장 – 수신 데이터를 유형에 저장합니다.
- 그룹별로 분할 – 그룹 키를 사용하여 업스트림 이벤트를 다운스트림 작업에 대한 하위 스트림으로 분할합니다.
- 프롬프트 제출 – 지정된 프롬프트를 제출합니다. LLM 결과를 반환합니다.
- 임계값 – 연속적인 이벤트에서 임계값을 넘는 것을 감지합니다.
- 시차 – 두 연속된 사건 사이의 시간을 측정합니다.
- 움직임 추적 – 객체의 움직임을 위치에 따라 조립합니다(일반적으로 YOLO 이미지 분석 출력).
- 배송조회 – Vantiq 사용자가 지정된 위치에 도착하거나 협업이 종료될 때까지 한 명 이상의 사용자를 추적하기 시작합니다.
- 변환 – 다운스트림 작업으로 전달되기 전에 스트림의 이벤트를 수정하는 프로시저나 매핑을 정의합니다.
- 풀다 – 이벤트의 배열 속성을 독립적으로 처리할 수 있는 여러 개의 별도 이벤트로 분할합니다.
- 내리다 – 모든 이벤트에 대해 임의의 VAIL 코드 블록을 실행합니다.
- 비전스크립트 – 사용자가 다음을 구축할 수 있습니다. 비전 스크립트 이미지를 조작하기 위해서.
- 창 – 이벤트 일괄 처리를 위해 수신 이벤트를 버퍼링합니다. 겹치는 창과 겹치지 않는 창이 모두 지원됩니다.
- 추적 지역 내 – 특정 추적 지역에 존재하는지 여부를 기준으로 위치를 필터링합니다.
- 문서에서 YOLO – 이미지(문서에 저장된) 분석을 위해 YOLO 모델을 사용합니다.
- 이미지로 보는 YOLO – 이미지 분석을 위해 YOLO 모델을 사용합니다.
- Temp Images의 YOLO – 이미지(임시 이미지로 저장되고 비디오 소스에서 반환됨) 분석을 위해 YOLO 모델을 사용합니다.
이러한 내장된 활동 패턴에서 더 큰 구성 요소 작업 모음을 캡슐화하는 컴포넌트를 개발할 수 있습니다. 그런 다음 컴포넌트를 개발자 간에 공유하고 다른 기본 제공 액티비티 패턴처럼 사용할 수 있습니다.
VEH 생성
새 VEH를 생성할 때 초기 다이어그램은 단일 이벤트 스트림 작업으로 구성됩니다. 기존 작업을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 옵션 중 하나를 선택하여 더 많은 이벤트 스트림과 다운스트림 작업을 추가할 수 있습니다. VEH 다이어그램에 추가된 각 작업은 핸들러가 컴파일되도록 적절하게 구성되어야 합니다. VEH는 저장될 때마다 컴파일되며, 컴파일 중 오류가 발견되지 않으면 VEH는 다음 컬렉션을 생성합니다. 숨겨진 각 작업을 구현하는 VAIL 아티팩트입니다. 앱 컴파일 중 오류가 감지되더라도 앱은 계속 저장됩니다. 이 경우 오류가 감지된 작업은 빨간색으로 강조 표시됩니다.
앱 빌더는 반복적인 개발 프로세스를 용이하게 하도록 설계되었습니다. 예를 들어, 수신되는 원시 이벤트를 확인하기 위해 초기 이벤트 스트림과 로그 스트림 작업으로 시작합니다. 다음으로, 원시 이벤트 스트림에서 아웃바운드 이벤트를 처리하고 변환 출력을 로깅하는 변환 작업을 추가합니다. 그런 다음 변환 출력에 필터를 추가하고 필터링된 이벤트 스트림을 로깅합니다. 필터 및 변환 활동을 조정하여 원하는 출력을 생성한 후, 필터 작업 출력에 알림 작업을 추가하면 전체 핸들러가 빌드됩니다.
신뢰할 수 있는 앱
VEH에 대한 이벤트 소스가 다음과 같이 구성된 경우 신뢰할 수있는Vantiq 플랫폼은 안정성 보장이 VEH 전체로 확장되도록 보장합니다. 즉, 시스템 장애(예: Vantiq 서버 인스턴스 종료)로 인해 VEH가 종료되는 경우, 처리기의 의미가 유지되도록 적절한 시점에 처리가 다시 시작됩니다. 앱 빌더의 로우코드 특성에 따라 이 작업은 자동으로 수행되며 개발자가 이벤트 확인 또는 재전송을 명시적으로 관리할 필요가 없습니다.
완전히 신뢰할 수 있도록 서비스를 절대로 필요한 것 또한 "복제됨"으로 표시될 수 있습니다(이유는 다음 섹션에서 논의합니다).
추적 진행
신뢰할 수 있는 이벤트가 처리될 때 시스템은 이벤트 핸들러를 통해 이벤트 진행 상황을 추적합니다. 이는 이벤트(및 이벤트가 "생성하는" 이벤트)가 다양한 작업에 의해 처리될 때 "체크포인트"를 기록함으로써 수행됩니다. 체크포인트는 소유 서비스의 상태에 저장되며 이벤트 UUID 값을 사용하여 분할됩니다. 따라서 신뢰할 수 있는 이벤트 핸들러가 있는 모든 서비스는 자동으로 상태를 유지합니다. 또한, 완전히 신뢰할 수 있으려면 서비스를 복제해야 합니다. 이렇게 하면 체크포인트 상태도 신뢰할 수 있으며 다양한 시스템 장애에도 견딜 수 있습니다.
작업이 완료되면 체크포인트가 업데이트되어 다음에 트리거될 "자식" 작업을 나타냅니다. 이 작업은 해당 작업의 자식 작업에만 적용됩니다. 일차 이벤트 출력. 보조 이벤트 출력(커넥터에 "삼각형"으로 표시됨)은 신뢰할 수 있는 처리의 일부가 아닙니다. 또한, 율 누락 활동 패턴은 이벤트가 단일 소스 이벤트에 직접적으로 종속되지 않기 때문에 신뢰할 수 있는 처리 측면에서 "최종적"인 것으로 간주됩니다.
더 이상 실행할 자식 작업이 없으면 시작하는 안정적인 이벤트가 확인됩니다.
이벤트 재전달
이벤트가 완전히 처리되기 전에 시스템 장애가 발생하면 ('최소 한 번 전달'의 의미 체계에 따라) 이벤트가 재전송됩니다. 이 경우 VEH는 저장된 체크포인트 정보를 사용하여 처리를 계속할 위치를 결정합니다. 일반적으로 이렇게 하면 이미 완료된 작업을 다시 실행하는 것을 방지할 수 있지만, 한 가지 중요한 주의 사항이 있습니다. 작업 실행 방식 때문에 작업 "작업"이 완료되는 시점과 체크포인트가 업데이트되는 시점 사이에는 약간의 시간 간격이 있습니다. 이 시간 간격 동안 장애가 발생하면 체크포인트는 작업이 아직 완료되지 않았음을 계속 표시합니다. 즉, 이 경우 작업이 반복될 수 있습니다. 이러한 영향은 작업의 활동 패턴에 따라 달라집니다.
서비스 상태에 따라 작동하는 활동 패턴은 이러한 반복이 발생할 경우 상태 변경을 반복하려는 모든 시도가 무시되도록 구현되었습니다. 여기에는 다음과 같은 모든 상태 기반 패턴이 포함됩니다. AccumulateState 드웰 (자세한 내용은 패턴 설명을 참조하세요.) 다른 패턴에 기반한 작업은 완료 여부를 내부적으로 알 수 없기 때문에 반복될 수밖에 없습니다. 따라서 개발자는 이러한 상황이 발생할 수 있음을 인지하고 필요에 따라 완화 조치를 취할 준비를 해야 합니다. 예를 들어, 특정 프로시저가 부작용 없이 여러 번 실행될 수 있도록 보장하면 프로시저 작업의 반복을 방지할 수 있습니다.
오류 처리
달리 지정하지 않는 한 작업 실행 중 발생하는 오류는 "응용 프로그램" 오류로 간주되므로 지원 시작 이벤트의 재전송을 트리거합니다. 이러한 오류는 일반적으로 이벤트 내용에 의해 발생하므로 재전송을 수행해도 동일한 오류가 반복적으로 생성되기 때문입니다. 일시적이지 않은 오류가 발생하면 이벤트 확인이 트리거되고 관련된 모든 체크포인트가 해제됩니다.
이 동작에 대한 예외는 다음과 같습니다.
- "클러스터 간" 통신 장애로 인해 발생하는 것으로 알려진 오류입니다. 이러한 오류는 일반적으로 클러스터의 일시적인 상황(멤버 재시작, 일시적인 네트워크 문제 등)으로 인해 발생합니다.
- 다음 활동 패턴에서 제공하는 핸들러에 의해 일시적인 것으로 표시된 오류:
일시적인 오류는 기록되지만 확인이나 체크포인트 업데이트를 트리거하지 않습니다. 이벤트가 최종적으로 재전송되면 오류 직전 지점부터 처리가 계속됩니다.
협업 관리
다음 활동 패턴은 "협업 인식"이며 서비스를 관리하는 작업을 생성합니다. 협업:
이러한 항목을 VEH에 추가하면 협업 관리가 가능해집니다. 결과적으로, 이벤트가 루트에서 리프까지 경로의 첫 번째 협업 작업에 도달하면 새로운 협업이 시작되고 서비스 상태에 추가됩니다. 첫 번째 협업 작업과 핸들러의 리프 노드 사이에서 이벤트가 처리됨에 따라, 협업은 서비스 상태에서 업데이트되고 관리됩니다.
활동 패턴
VEH의 작업은 미리 정의된 활동 패턴의 구성입니다. 각 활동 패턴은 몇 가지 구성 속성만으로 표현할 수 있는 일반화된 프로세스를 나타냅니다. 활동 패턴과 패턴 구성이 주어지면 앱 빌더에서 해당 작업의 세부 사항을 구현하는 VAIL 코드를 생성할 수 있습니다.
아래는 기존 활동 패턴과 각 패턴에 포함된 구성 속성에 대한 설명입니다. 별도로 지정하지 않는 한, 각 활동 패턴은 단일 아웃바운드 이벤트 스트림을 생성합니다.
상태 축적
Accumulate State를 사용하여 일련의 이벤트에 걸쳐 상태를 추적합니다. 처음에는 상태 값이 null로각 인바운드 이벤트에 대해, 기존 상태 객체를 첫 번째 매개변수로, 새 이벤트를 두 번째 매개변수로 사용하여 구성된 어큐뮬레이터 프로시저(또는 VAIL 블록)를 호출하여 상태 객체를 업데이트합니다. 업데이트된 상태는 무시(권장)하거나, 아웃바운드 이벤트의 속성에 할당하거나, 아웃바운드 이벤트를 완전히 대체할 수 있습니다. 첫 번째 옵션은 훨씬 더 효율적이고 핸들러 서비스에서 상태에 액세스할 수 있기 때문에 권장됩니다.
예를 들어, 온도가 100도 이상과 이하인 이벤트 수를 추적하는 다음의 누적기 절차를 고려해 보세요.
PROCEDURE accumulateHighLowTempCounts(existingState, event)
if (!existingState) {
existingState = {
lowCount: 0,
highCount: 0
}
}
if (event.temp > 100) {
existingState.highCount++
} else {
existingState.lowCount++
}
return existingState
그리고 다음의 세 가지 사건의 순서를 생각해 보세요.
{
"temp": 88,
"sensorId": "XYZ"
}
{
"temp": 111,
"sensorId": "XYZ"
}
{
"temp": 109,
"sensorId": "XYZ"
}
각 이벤트 후 state getter에서 반환되는 내용은 다음과 같습니다.
{
"lowCount": 1,
"highCount": 0
}
{
"lowCount": 1,
"highCount": 1
}
{
"lowCount": 1,
"highCount": 2
}
AccumulateState에는 다음과 같은 선택적 구성 매개변수가 있습니다.
- 순서 – 두 가지 옵션:
- 어큐뮬레이터 절차: 누적된 상태를 업데이트하기 위해 각 이벤트에 대해 호출하는 누적기 프로시저의 이름입니다. 이 프로시저는 위에서 설명한 대로 두 개의 매개변수(두 객체 모두)를 받아야 합니다.
- 베일 블록: 실행할 VAIL 코드 블록
event수정하다state이 경우에는 반환 값을 사용하면 안 됩니다.
프로시저 매개변수가 지정되지 않으면 기본값으로 설정됩니다. state = event이를 통해 AccumulateState는 서비스 상태에서 가장 최근 이벤트를 저장할 수 있습니다.
지정된 코드는
Accumulate State작업은 특정 이벤트에 대해 두 번 이상 실행될 수 있습니다(낙관적 동시성 제어(OCC) 구현에 필요한 재시도 때문입니다). 이러한 경우, 최종 실행 결과만 상태를 업데이트하는 데 사용됩니다. 그러나 이는 코드 블록이 Accumulate 작업에서 관리하는 상태 이외의 상태에 영향을 미치거나 외부 부작용을 발생시켜서는 안 된다는 것을 의미합니다.
- 아웃바운드 동작 – 다음 세 가지 옵션 목록에서 선택:
- 원본 이벤트 내보내기 – 원래의 인바운드 이벤트를 아웃바운드 이벤트로 내보냅니다.
아무 옵션도 선택하지 않으면 이것이 기본 동작입니다. 이 경우 상태 코드는 비동기적으로 실행되므로 후속 앱 작업이 실행될 때까지 완료되지 않을 수 있습니다. 이 방식은 통계만 표시하고 앱의 후속 작업이 이 작업의 정확한 결과에 의존하지 않는 애플리케이션에 적합합니다. - outboundProperty에 상태 값 첨부 – 구성된 outboundProperty에 상태 값을 첨부합니다.
- 아웃바운드 이벤트를 상태 값으로 교체 – 인바운드 이벤트 대신 상태 값을 내보냅니다.
- 원본 이벤트 내보내기 – 원래의 인바운드 이벤트를 아웃바운드 이벤트로 내보냅니다.
- 아웃바운드 부동산 – 이벤트 방출 시 상태를 포함할 속성
Attach state value to outboundProperty선택됩니다. - 수입 – 가져와야 하는 VAIL 블록 프로시저에서 참조하는 리소스 목록입니다.
- 상태속성 – 이 누적기가 업데이트할 상태 속성(전역 또는 분할)의 이름입니다. 지정하지 않으면 고유한 상태 속성이 생성됩니다.
- 재설정 빈도 – 재설정 절차가 자동으로 호출되는 빈도입니다. 이렇게 하면 상태가 null로 재설정되고 재설정 행사.
- 개요 – 아웃바운드 상태 출력의 스키마를 정의하는 유형의 이름입니다. 여기에 스키마를 지정하면 다운스트림 작업 구성이 간소화됩니다.
Accumulate State는 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – outboundBehavior에 따라 발생하는 이벤트입니다. 이는 원래 이벤트, 원래 이벤트 + 상태 또는 상태 값일 수 있습니다.
- 재설정 - 만약 재설정 빈도 지정되면 작업이 자동으로 다음을 내보냅니다. 재설정 상태가 자동으로 null로 재설정되기 직전의 상태 값을 갖는 이벤트입니다.
통계 분석
분석 활동은 다음 통계 작업 중 하나 이상을 계산합니다. 평균, 중앙값, 개수, 최소값, 최대값, 표준 편차, 기하 평균, 분산, 왜도, 첨도.
분석 활동에는 다음과 같은 필수 구성 속성이 포함되어 있습니다.
- 인바운드 속성 – 통계를 계산할 인바운드 이벤트의 속성 이름(예: "속도", "온도" 등) 목록입니다. 각 속성은 숫자여야 합니다.
- 저수지 유형 – 데이터 포인트를 저장하는 데 사용되는 저장소 유형입니다. 이 유형에 따라 집계 통계를 계산하는 데 사용되는 알고리즘과 이전 데이터 포인트를 삭제할 시기가 결정됩니다.
- 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
Real값. 지정된 시간 창 내에 발생한 모든 이벤트는 통계를 계산하는 데 사용됩니다(예: 지난 5분 동안의 모든 이벤트). - 슬라이딩 카운트 – 다음을 사용하여 통계를 계산합니다.
Real값. 마지막 n 이벤트는 통계를 계산하는 데 사용됩니다. - 고정 시간 창 – 다음을 사용하여 통계를 계산합니다.
Real값. 고정된 시간 윈도우는 다음 재설정 시간까지 이벤트를 윈도우에 추가합니다. 예를 들어, 1시간의 고정된 시간 윈도우는 매시 정각부터 시작하여 새로운 정각 정각까지 해당 시간 내의 모든 이벤트에 대한 분석을 계산합니다. - 고정 개수 – 다음을 사용하여 통계를 계산합니다.
Real값. 지정된 이벤트 수에 도달할 때까지 모든 이벤트에 대한 분석을 계산합니다. 그 후 분석은 null로 재설정됩니다.
- 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
- 창 길이 – 이벤트가 창에 유지되는 기간입니다. 시간 기반 저장소의 경우 간격 문자열(예: "10분")입니다. 개수 기반 저장소의 경우 이벤트 수입니다.
- 운영 – 데이터에 적용할 통계 작업 선택
분석 활동에는 다음과 같은 선택적 구성 속성이 포함되어 있습니다.
- 치수 – 통계가 적용될 계층적 차원입니다. 데이터는 자동으로 최상위 차원에서 분할됩니다. 통계는 최하위 차원에서 계산됩니다. 이후의 각 차원은 하위 수준 집계의 집계를 반환합니다. 예를 들어, "창고"와 "기계"라는 두 단계 계층 구조는 먼저 각 기계의 평균을 계산한 다음, 각 창고에 있는 모든 기계의 평균을 계산하여 창고별 분석을 생성합니다.
분석 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 원래 수신 이벤트를 내보냅니다.
- 재설정 – reservoirType이 설정된 경우 고정 시간 창 or 고정 개수, 이벤트 핸들러는 자동으로 다음을 방출합니다. 재설정 상태가 자동으로 null로 재설정되기 직전에 분석 값이 있는 이벤트입니다.
분석 활동 패턴은 Get, Update, Reset이라는 세 가지 프로시저를 생성합니다. Get 프로시저는 분석의 현재 결과를 가져오는 데 사용할 수 있습니다. 다음은 반환값의 예입니다.
{
"speed": {
"count": 3,
"min": 10,
"max": 28,
"mean": 19.333333333333332,
"median": 20
},
"temp": {
"count": 3,
"min": 20,
"max": 60,
"mean": 40,
"median": 40
}
}
자세한 내용은 Apache 수학 기술 통계 문서.
답변 질문
답변 질문 활동은 지정된 것을 사용합니다. 의미론적 색인 인바운드 이벤트에서 파생된 질문에 답합니다. 결과는 다음 속성을 가진 객체입니다.
- 답변 (문자열) – 제출된 질문에 대한 답변.
- 메타 데이터 (객체) – 질문에 답변할 때 맥락을 제공하는 데 사용되는 항목과 관련된 메타데이터입니다. 의미 색인은 이 메타데이터를 포함하지 않도록 설정할 수 있습니다.
- 다시 표현된 질문 (문자열) – LLM이 관련 맥락을 사용하여 질문을 다시 표현한 것입니다. 질문을 다시 표현하다 가
false의미 색인에서는 여전히 수정된 질문이 포함되지만, LLM에 제출된 질문은 아닙니다. 이 속성은 의미 색인이 해당 속성을 포함하도록 구성된 경우에만 포함됩니다.
이 값은 아웃바운드 이벤트의 지정된 속성에서 반환됩니다. 액티비티 패턴은 내장된 SemanticSearch 서비스.
Answer Question 활동에는 다음과 같은 필수 구성 속성이 있습니다.
- 의미 색인 – 질문에 답하는 데 사용된 의미 색인의 이름입니다.
- 문제 – 질문을 계산하는 데 사용된 VAIL 표현식. 표현식 결과는 다음과 같아야 합니다.
String값.
표현식을 사용하여 질문을 생성하면 매우 유연하게 사용할 수 있습니다. 예를 들어, 이벤트 콘텐츠에서 직접 질문을 가져오는 데 사용할 수도 있지만, 동적으로 질문을 구성하는 데에도 사용할 수 있습니다. 예를 들어, 기계에서 센서 온도 측정값을 처리하는 VEH를 생각해 보겠습니다. 각 센서 측정값은 다음과 같습니다.
{
"sensorId": "sensor12345",
"machineId": "machineXYZ",
"temperature": 67.25
}
우리는 사용할 수 있습니다 주형 다음과 같은 템플릿을 사용하여 이벤트 데이터를 질문으로 접는 서비스:
What corrective actions should be taken when the machine temperature is ${temperature}?
Answer Question 활동에는 다음과 같은 선택적 구성 매개변수가 있습니다.
- 반환 속성 – 응답을 저장할 아웃바운드 이벤트의 속성 이름입니다. 기본값은 다음과 같습니다.
indexResponse지정되지 않은 경우. - qaLLM – 답변을 합성하는 데 사용할 생성 LLM의 이름입니다. 아무것도 지정하지 않으면 인덱스의 기본 Q&A LLM이 사용됩니다(설정된 경우).
- 최소 유사성 – 의미 색인에서 문서가 관련성이 있다고 간주되기 위해 달성해야 하는 최소 유사도 점수를 나타내는 0과 1 사이의 숫자입니다. 지정하지 않으면 색인의 기본 최소 유사도(설정된 경우)가 사용됩니다. 둘 다 설정되지 않으면 answer question은 점수와 관계없이 색인에서 찾은 가장 관련성 높은 문서를 활용하여 질문에 답변합니다. 최소 유사도 지정 결과 관련 문서가 없는 경우 answer question은 qaLLM을 참조하지 않고 "모름"을 반환합니다.
- 대화 사용 – 질문할 때 작업이 대화에 참여해야 하는지 여부를 나타내는 부울 값입니다. 이 옵션을 사용하려면 활성 협업이 필요합니다. 기본적으로 협업 ID가 대화 ID로 사용되므로 여러 AnswerQuestion 작업이 동일한 대화에 참여할 수 있습니다(동일한 협업 인스턴스에서 작동하는 경우).
- 대화 컨텍스트 프롬프트 – 이 매개변수는 진행 중인 대화에서 후속 질문을 다시 표현할 때 참조할 대화의 특정 맥락에 LLM을 집중시키는 데 도움이 될 수 있습니다. 예를 들어, 대화에 데이터 페이로드에 대한 세부 정보가 있고 후속 질문에 새로운 데이터 포인트가 있는 경우, 맥락 프롬프트는 후속 질문과 관련된 해당 페이로드 간의 차이점에 LLM을 집중시킬 수 있습니다.
- 대화 이름 – 작업이 참여해야 하는 대화의 이름을 나타내는 문자열입니다. 지정하지 않으면 협업의 기본 대화가 사용됩니다. 이 옵션을 사용하면 두 개 이상의 작업이 기본 협업 전체 대화와 별도로 협업 인스턴스 내에서 대화 상태를 공유할 수 있습니다. 대화 이름은 협업의 속성에 선언해야 합니다. AnswerQuestion 작업에 별도의 대화 상태가 필요한 경우 대화 이름을 지정할 수 있습니다.
self이렇게 하면 해당 작업과 관련된 비공개 대화가 생성됩니다. - 답변 속성 – "속성"을 생성하는 데 사용되는 VAIL 표현식
Object대화에서 녹음될 때 답변에 첨부됩니다. 무시됩니다.useConversationisfalse. - 런타임 구성 – LLM 구성을 나타내는 객체를 생성하는 VAIL 표현식입니다. 이 표현식이 제공되면 이 구성은 현재 LLM 구성과 결합된 후 SubmitPrompt 호출에 적용됩니다.
답변 질문 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 모든 성공적인 요청의 결과입니다.
- 오류 발생 – 실패한 요청에 대한 컨텍스트를 제공하는 이벤트입니다. 이 이벤트의 속성은 다음과 같습니다.
- 에러 코드 (문자열) – 생성된 예외와 연결된 고유한 "코드"입니다.
- 에러 메시지 (문자열) – 생성된 예외에 대한 오류 메시지 텍스트입니다.
- 오류 매개변수 (String[]) – 오류 메시지에서 대체 값을 바꾸는 데 사용되는 매개변수입니다.
- 트리거링 이벤트 (개체) – 예외를 발생시킨 이벤트.
양수인
할당 활동은 지정된 내용을 설정하여 협업을 업데이트합니다. 협력자 또는 엔터티 역할 들어오는 것에 eventAssign 활동은 원래 이벤트를 발생시킵니다. Assignment는 나중에 다음을 사용하여 가져올 수 있습니다. GetCollaboration 작업 또는 생성된 돈을 받아가세요 서비스 절차
할당 활동에는 다음과 같은 필수 구성 속성이 포함되어 있습니다.
- 역할 유형 - 어느 하나 실재, 협력자및 결과.
- 역할 이름 – 엔터티 또는 협력자 역할의 이름(사용 시) 실재 or 협력자 roleType). 사용 시 결과 roleType은 할당되는 결과 속성의 이름입니다. 기본적으로 현재 작업의 이름이지만, 다른 유효한 속성 이름으로 변경할 수 있습니다. 동일한 앱의 여러 Assign 작업이 동일한 결과 속성을 참조할 수 있습니다.
Assign 활동에는 다음과 같은 선택적 구성 속성이 포함되어 있습니다.
- 엔티티 ID – 할당되는 엔터티의 ID를 결정하는 데 사용되는 선택적 VAIL 표현식입니다. 예:
event.machineId or event.farmId + event.barnId. - 할당된 값 – 할당되는 값을 결정하는 데 사용되는 선택적 VAIL 표현식입니다. 표현식은 다음과 같이 평가되어야 합니다.
Object. 결과 역할 유형에 할당할 때만 사용됩니다. 기본적으로 전체 이벤트가 할당된 값으로 사용됩니다. 결과 속성의 현재 값(있는 경우)은 미리 정의된 변수를 통해 사용할 수 있습니다.currentValue. - 수입 – 참조되는 리소스 목록
assignedValue표현.
예를 들어, 다음 이벤트가 다음과 같이 구성된 Assign 작업에 의해 처리되는 경우 실재 roleType으로 기계 roleName으로:
{
"temp": 88,
"sensorId": "XYZ"
}
협업 인스턴스가 다음으로 업데이트되었습니다.
{
"id": "<collaboration id>",
"status": "active",
"name": "<app name>",
"entities": {
"machine": {
"temp": 88,
"sensorId": "XYZ"
}
}
}
동일한 이벤트가 Assign 작업으로 처리되는 경우 RecordTemp 로 구성 결과 로 역할 유형, currentTemp 로 역할 이름 그리고 표현 event.temp 로 할당된 값 표현식이 있는 경우 협업 인스턴스는 다음으로 업데이트됩니다.
{
"id": "<collaboration id>",
"status": "active",
"name": "<app name>",
"results": {
"currentTemp": 88
}
}
지사
분기 활동 패턴은 서비스 이벤트 핸들러 흐름에서 조건 분기를 생성하는 데 사용됩니다. 다음과 같은 구성 속성을 포함합니다.
- 조건 – 이벤트 경로를 결정하는 레이블이 있는 표현식 목록입니다. 각 조건은 부울 값으로 평가되는 모든 VAIL 표현식일 수 있습니다. 예를 들어,
event.temperature > 100orevent.status == "critical". Branch 작업에서 생성된 아웃바운드 이벤트는 다음에 의해 결정됩니다. 먼저 참으로 평가되는 조건. 어떤 조건도 참으로 평가되지 않으면 이벤트가 발생합니다.default스트림입니다.
분기 활동 패턴에는 아웃바운드 이벤트의 수가 동적으로 생성됩니다. 이벤트 집합은 구성에 지정된 조건에 따라 결정됩니다. 각 분기 조건 레이블에 따라 이름이 지정된 이벤트가 있습니다. 레이블을 편집하거나 제거하면 연관된 다운스트림 작업이 분기 작업에서 분리되어 수동으로 다시 연결해야 합니다.
경로 구축 및 예측
BuildAndPredictPath 활동
- 추적된 객체에 대한 경로 정보를 구성합니다.
TrackMotion활동, - 태그 경로 멤버의 위치를 해당 멤버가 발견된 지역과 함께 지정합니다. 추적지역 정의되어 있습니다.
- 경로 단계에 속도 정보를 추가합니다.
TrackingRegions거리 및/또는 방향 정보를 포함합니다. - 요청이 있을 경우, 추적에서 객체가 삭제될 때 객체의 위치를 예측합니다.
BuildAndPredictPath 활동은 일반적으로 발견됩니다. 시간 내에 a 움직임 추적 활동. BuildAndPredictPath는 TrackMotion 출력에서 경로를 생성합니다. 이 경로는 증분적으로 어셈블됩니다(즉 여러 호출에 걸쳐) 지정되며 지정된 최대 크기까지 커질 수 있습니다. 최대 크기를 초과하는 경우 최신 항목이 저장됩니다. 즉, 경로에서 가장 오래된 부분부터 위치가 제거됩니다.
활동이 완료되면 속성에 정의된 경로의 현재 목록을 내보냅니다. outboundProperty 매개 변수입니다.
BuildAndPredictPath 활동 패턴에는 다음과 같은 구성 속성이 필요합니다.
- 모션트래킹속성 – 추적된 객체 집합을 수집할 속성의 이름입니다. 일반적으로 다음과 같습니다.
outboundProperty의TrackMotion활동. - 아웃바운드 부동산 – 경로 목록을 첨부할 속성의 이름입니다.
- 새로 고침 간격 – 간격 문자열(예 TrackingRegions 목록을 새로 고침하는 빈도를 10분으로 지정합니다. 지역 정의가 변경되지 않는 성숙한 애플리케이션에서는 긴 간격이 적합할 수 있습니다.
- 마지막 다리만 – true인 경우 경로의 마지막 두 항목을 기준으로 속도 계산을 수행해야 함을 나타내는 부울 값입니다. false인 경우 경로의 첫 번째 항목과 마지막 항목을 기준으로 속도가 계산됩니다.
또한, 다음과 같은 선택적 매개변수를 제공할 수 있습니다.
- 최대 경로 크기 – 계산된 경로의 최대 길이입니다. 지정하지 않으면 기본값은 10입니다. 이 값을 초과할 경우 경로가 추가될 때마다 "첫 번째" 객체가 변경될 수 있으므로 주의해야 합니다. 이로 인해 속도 계산이 변경됩니다(
lastLegOnly(체크되지 않음). - 좌표 속성 – 추적된 객체에서 좌표를 가져올 속성의 이름입니다. 기본값은 다음과 같습니다.
location. - 경로 속성 – 각 객체의 추적 경로가 배치될 속성의 이름입니다. 기본값은 다음과 같습니다.
trackedPath. - 드롭 후 위치 예측 – 경로를 놓았을 때 예측된 위치를 추가할지 여부입니다.
- 예측 시간 - 만약 드롭 후 위치 예측 참이면 예측 위치에 대한 시간입니다. 기본값은 다음과 같습니다.
now(). - 추적 지역 필터 – 집합을 제한하는 표현식
TrackingRegions위치 추적 영역으로 간주됩니다. 이 표현식은 고려할 영역을 선택하는 데 사용되는 WHERE 절에 추가됩니다. 없거나 비어 있는 경우 모든TrackingRegions네임스페이스에서 고려됩니다. 다음을 참조하세요. 추적 지역 정보

위의 예에서 우리는 발견된 물체의 움직임에 대한 속도 계산을 위해 마지막 다리만을 사용할 것입니다. trackedState 속성을 생성하여 결과를 생성합니다. pathList 속성. 이 작업은 10분마다 지역 목록을 업데이트합니다.
BuildAndPredictPath 활동은 다음을 포함하는 객체를 생성합니다.
trackedPaths– 경로가 있는 객체 집합 및droppedPaths– 이 패스에서 떨어진 물체 세트.
해당 객체에 대한 정보가 제공되지 않으면 객체가 삭제됩니다. 이는 일반적으로 다음과 같은 경우입니다. 움직임 추적 작업의 maximumAbsentBeforeMissing 임계값에 도달했습니다.
다음에 의해 정의된 속성 outboundProperty 이 객체를 포함하고 있으며 각 객체는 다음과 같습니다. trackedPaths 경로 요소 집합(이름이 지정됨)을 포함합니다. pathProperty, 기본값으로 설정 trackedPath). 각 경로 요소에는 위치 정보(경계 상자, 중심, 등), 그리고 trackingId timeOfObservation (참조 움직임 추적) 속성.
존재하는 경우, droppedPaths 속성에는 동일한 정보가 포함되어 있습니다. 그러나 predictPositionsAfterDrop 에 설정되었습니다. true그러면 최종 예측 위치가 생성됩니다. 이 예측 위치는 해당 물체의 마지막 두 관측 지점과 두 지점 사이의 관측 시간을 기반으로 합니다. 이동 거리와 관측 지점 사이의 시간을 사용하여 예측 위치가 계산됩니다. timeOfPrediction 제시됩니다. 예측된 위치에는 추가 속성이 있습니다. isPredicted 로 설정 true.
If TrackingRegions 네임스페이스에 정의되어 있습니다. regions 부동산이 존재할 것입니다. regions 속성은 이 단계의 중심점이 있는 지역의 목록입니다. 지역은 상호 배타적이지 않으며 가능한 모든 위치를 포함할 필요도 없습니다. 따라서 regions 속성은 지역 집합이거나 비어 있을 수 있습니다.
경우 trackingRegionFilter 가 제공되면 고려되는 지역 집합은 제한됩니다. 예를 들어, trackingRegionFilter 이 포함되어 있습니다 name in ["mainStreet", "bikePath"], 그러면 각 위치에 대해 고려되는 유일한 지역은 다음과 같습니다. TrackingRegions 이름이있는 메인스트리트 자전거길.
를 사용할 때 trackingRegionFilter 가치 name in [name in ["mainStreet", "bikePath"], 해당 표현식은 SELECT 쿼리에 추가됩니다. TrackingRegions 네임스페이스에 있습니다. TrackingRegions 자격을 갖춘 다음 세트 TrackingRegions 비어 있을 것으로 간주됩니다.
경로 요소에는 다음 중 하나라도 속도 정보가 포함됩니다. TrackingRegions 선택된 포함 distance or direction 정의. velocity 속성은 다음을 포함하는 객체입니다. speed direction 속성. 둘 중 하나, 둘 다 또는 둘 다 존재할 수 있습니다. TrackingRegions 정의 및 선택(표현에 존재하는 표현에 기반) trackingRegionFilter 속성). 다음을 참조하세요. 추적 지역 의 섹션 리소스 가이드 그리고 모션 트래킹 의 섹션 이미지 처리 가이드 자세한 내용은.
다음은 출력의 예입니다. BuildAndPredictPath 활동입니다. 여기서 우리는 교통 교차로를 관찰하고 있습니다. TrackingRegions 교차로, 주요 도로, 자전거 도로를 위한 하나의 영역을 포함하여 정의됩니다. (참고 - 예시가 길기 때문에 길이를 줄이기 위해 반복되는 공통 구조를 제거했습니다. 이는 다음과 같이 표시됩니다. …위치 정보….)
이 예에서는 세 번째 이미지를 검토한 후의 출력입니다. 세 이미지 모두에서 자동차가 추적되었고, 첫 번째와 세 번째 이미지에서만 트럭이 보였습니다( timeOfObservation 값).
{
...
"pathList":
"trackedPaths":
[
{
"confidence": 0.9738035,
"location": {
"centerY": 698.32983,
"top": 613.84503,
"left": 248.22499,
"centerX": 449.8205,
"bottom": 782.8147,
"right": 651.41595,
"trackingId": "2c2a450a-d011-438b-bf59-505ab069ff36",
"timeOfObservation": "2020-07-09T19:25:50.951Z",
"regions": [],
"velocity": {}
},
"label": "car",
"trackedState": [
{
"centerY": 698.32983,
"top": 613.84503,
"left": 248.22499,
"centerX": 449.8205,
"bottom": 782.8147,
"right": 651.41595,
"trackingId": "2c2a450a-d011-438b-bf59-505ab069ff36",
"timeOfObservation": "2020-07-09T19:25:50.951Z",
"regions": [],
"velocity": {}
},
{
...position info...
"trackingId": "2c2a450a-d011-438b-bf59-505ab069ff36",
"delta": 227.29758889770193,
"timeOfObservation": "2020-07-09T19:26:20.714Z",
"regions": ["intersection"],
"velocity": {
"speed": 0.6386117789508797,
"direction": 178.31846108202308
}
},
{
...position info...
"trackingId": "2c2a450a-d011-438b-bf59-505ab069ff36",
"delta": 573.5204100376408,
"timeOfObservation": "2020-07-09T19:26:22.558Z",
"regions": ["mainStreet"],
"velocity": {
"speed": 26.00798831086019,
"direction": 190.53958118873743
}
}
]
},
{
"confidence": 0.56739765,
"location": {
...position info...
"trackingId": "77557464-56ac-42a2-a550-9653a5a360bc",
"timeOfObservation": "2020-07-09T19:25:50.951Z",
"regions": [],
"velocity": {}
},
"label": "truck",
"trackedState": [
{
...position info...
"trackingId": "77557464-56ac-42a2-a550-9653a5a360bc",
"timeOfObservation": "2020-07-09T19:25:50.951Z",
"regions": [],
"velocity": {}
},
{
...position info...
"trackingId": "77557464-56ac-42a2-a550-9653a5a360bc",
"delta": 166.20815098458465,
"timeOfObservation": "2020-07-09T19:26:22.558Z",
"regions": ["intersection"],
"velocity": {
"speed": 0.43973176788635465,
"direction": 38.12289240559642
}
}
]
}
],
"droppedPaths":
[
{
"confidence": 0.56739765,
"location": {
...position info...
"trackingId": "77557464-56ac-42a2-a550-9653a5a376ab",
"timeOfObservation": "2020-07-09T19:21:02.974Z",
"regions": [],
"velocity": {}
},
"label": "van",
"trackedState": [
{
...position info...
"trackingId": "77557464-56ac-42a2-a550-9653a5a376ab",
"timeOfObservation": "2020-07-09T19:21:02.974Z",
"regions": [],
"velocity": {}
},
{
...position info...
"trackingId": "77557464-56ac-42a2-a550-9653a5a376ab",
"delta": 100.000,
"timeOfObservation": "2020-07-09T19:21:22.558Z",
"regions": ["intersection"],
"velocity": {
"speed": 0.53978476734534675,
"direction": 46.356892976559642
}
},
{
...position info...
"trackingId": "77557464-56ac-42a2-a550-9653a5a376ab",
"delta": 500.000,
"isPredicted": true,
"timeOfObservation": "2020-07-09T19:26:22.558Z",
"regions": ["intersection"],
"velocity": {
"speed": 0.43973176788635465,
"direction": 38.12289240559642
}
}
]
}
]
...
}
속도 정보는 다음과 같이 해석됩니다.
- 속도 – 단위/초 단위 는 지정하는 데 사용되는 동일한 단위입니다.
TrackingRegionsdistance속성. 시간(초)은 다음을 기반으로 합니다.timeOfObservation문제의 포인트에 대한 항목입니다. 이 값은 다음을 통해 제공됩니다.TrackMotion활동. - 방향 – 나침반 방향, 0은 북쪽입니다. 이는 다음 사양을 기반으로 합니다.
TrackingRegionsdirection재산.
부분적인 속도를 갖는 것이 가능합니다.
TrackingRegionsdistance속성, 속도는 다음을 포함합니다.speed속성. 마찬가지로, 만약TrackingRegions이 포함되어 있습니다direction하지만distance, 오직direction재산이 존재할 것입니다.
캐시된 강화
인바운드 이벤트를 지속형 유형의 데이터와 연결하고, 재사용을 위해 연결을 캐시하여 추가 데이터베이스 쿼리를 방지합니다. 캐시된 연결은 설정된 간격 후에 데이터베이스에서 새로 고쳐집니다. CachedEnrich는 이벤트 양이 많지만 연결된 데이터가 비교적 자주 변경되지 않아 별도의 데이터베이스 조회가 필요하지 않은 경우에 유용합니다. 이 방법은 일반적으로 일반적인 Enrich 활동 패턴보다 더 나은 성능을 제공합니다.
예를 들어, 기계에서 센서 온도 측정값을 처리하는 이벤트 핸들러를 생각해 보겠습니다. 각 센서 측정값은 다음과 같습니다.
{
"sensorId": "sensor12345",
"machineId": "machineXYZ",
"temperature": 67.25
}
해당 machineId 값은 해당 특정 머신에 허용되는 온도에 대한 정보가 있는 머신 유형의 연관된 레코드를 지정할 수 있습니다.
{
"machineId": "machineXYZ",
"maxTemp": 90,
"minTemp": 60
}
CachedEnrich를 사용하여 일치하는 machineId 속성을 가진 연관된 Machine 레코드를 찾으세요. 아웃바운드 이벤트는 다음과 같습니다.
{
"sensorId": "sensor12345",
"machineId": "machineXYZ",
"temperature": 67.25,
"Machine": {
"machineId": "machineXYZ",
"maxTemp": 90,
"minTemp": 60
}
}
지정된 refreshInterval마다 Machine 레코드를 한 번씩 조회하고, 그 결과를 캐시에 저장하여 refreshInterval이 지날 때까지 모든 후속 이벤트에 사용합니다. refreshInterval이 지나면 Machine 유형을 다시 쿼리하여 캐시를 업데이트합니다.
CachedEnrich는 한 번에 하나의 레코드만 저장하므로 다음 작업을 수행한 후에 사용하는 것이 가장 좋습니다. 그룹별 분할분할로 생성된 각 그룹에 대해 CachedEnrich는 연관된 Machine 레코드에 대해 데이터베이스를 별도로 쿼리하고 독립적으로 새로 고칩니다.
CachedEnrich 활동 패턴에는 세 가지 구성 속성이 필요합니다.
- 연관된 유형 – 연관된 데이터가 정의된 유형입니다. 위 예에서 associatedType은 Machine입니다.
- 외래키 – 인바운드 이벤트와 associatedType 모두에 존재하는 속성 이름 배열로, associatedType 인스턴스를 고유하게 식별하는 데 사용할 수 있습니다. 위 예에서는 외래 키 "machineId" 하나만 있습니다.
- 새로 고침 간격 – 다음과 같은 간격 문자열
1 minuteor2 hours연관된 Machine 레코드를 데이터베이스에서 얼마나 자주 가져와서 캐시해야 하는지를 표현합니다.
CachedEnrich 패턴은 상태 "업데이트" 프로시저를 생성하지 않습니다. 대신 프로시저를 생성합니다. <taskIdentifier>StateGetForEvent 캐시된 데이터를 수신 이벤트에 연결하는 데 필요한 작업을 수행합니다. 이 프로시저의 시그니처는 표준 "업데이트" 프로시저와 동일합니다.
잡담
채팅 활동 패턴은 Vantiq 모바일 앱에서 새로운 채팅방을 시작하는 데 사용됩니다.
채팅 활동에는 다음과 같은 필수 구성 속성이 포함되어 있습니다.
- 사용자 – 채팅방에 추가될 사용자 이름 배열입니다. 이는 실제 vail 표현식의 배열이거나 배열로 평가되는 단일 vail 표현식일 수 있습니다(예: 이벤트.사용자 목록).
채팅 활동에는 다음과 같은 선택적 구성 속성도 포함되어 있습니다.
- 챗봇 소스 이름 – 채팅방에서 새 메시지를 수신하는 데 사용할 챗봇 소스의 이름입니다. 네임스페이스에 CHATBOT 소스가 하나만 있거나 messageBehaviors가 정의되지 않은 경우에는 필요하지 않습니다.
- 수입 – 활동 패턴에서 참조하는 리소스 목록입니다.
채팅 활동은 다음과 같은 아웃바운드 이벤트를 생성합니다.
- 메시지 (기본값) – 사용자가 채팅방에 메시지를 보낼 때 수신되는 이벤트입니다.
- 유형: 생성된 채팅 이벤트 유형입니다. 항상 'message'여야 합니다.
- id: Microsoft Azure Chatbot에서 생성된 메시지의 ID입니다.
- 따라서 오른쪽 하단에: 메시지의 타임스탬프.
- 서비스 URL: 채팅방과 Vantiq 사이의 중개자 역할을 하는 서비스의 Microsoft Azure Bot Services URL입니다.
- 채널 ID: 채팅 메시지가 전송된 서비스를 나타내는 문자열입니다. Vantiq 모바일 앱의 메시지는 항상 'directline'이어야 합니다.
- 대화: 고유한 값을 포함하는 객체 id Microsoft Azure Bot Service가 채팅방에 할당되었습니다.
- 에: 다음을 포함하는 객체 name 채팅방에서 이 메시지를 보낸 사용자에 관한 것입니다.
- 받는 사람: 다음을 포함하는 객체 name id Microsoft Azure Bot Services에서 메시지를 감지한 봇의.
- 본문: 채팅방에서 실제로 전송된 메시지의 텍스트입니다.
- 채널데이터: 고유한 값을 포함하는 객체 id Microsoft Azure Bot Services에서 할당한 채팅방과 name 채팅방의.
- 권한 부여: Microsoft Azure Bot Services에서 채팅방 메시지를 인증하는 데 사용되는 전달자 토큰이 포함된 문자열입니다.
- event – 원래의 수신 이벤트를 내보냅니다.
예를 들어, 채팅방의 사용자가 "지금 몇 시야?"라고 질문한 경우 다음과 같습니다. 메시지 이벤트가 발생합니다:
{
"type": "message",
"id": "<id>",
"timestamp": "2022-05-31T23:58:48.8469026Z",
"serviceUrl": "https://directline.botframework.com/",
"channelId": "directline",
"from": {
"id": "<Vantiq username>",
"name": "<Vantiq username>"
},
"conversation": {
"id": "<chat room id>"
},
"recipient": {
"id": "<bot id>",
"name": "<Bot name>"
},
"text": "What time is it?",
"channelData": {
"id": "<unique channel id>",
"name": "<app name>_<task name>: <collaboration id>"
},
"authorization": "Bearer <token>"
}
협업 인스턴스가 다음으로 업데이트되었습니다.
{
"id": "<collaboration id>",
"status": "active",
"name": "<app name>",
"results": {
"<chat task name>": {
"chatId": "<chatroom id>"
}
}
}
채팅방 ID는 채팅 서비스 절차(Chat.sendMessage 및 Chat.deleteChatroom)를 사용하여 메시지를 보내거나 채팅방을 삭제하는 데 사용될 수 있습니다.
긴밀한 협업
CloseCollaboration 활동 패턴은 협업이 완료되면 협업 상태를 업데이트하는 데 사용됩니다.
CloseCollaboration 활동 패턴에는 필수 구성 속성이 하나 있습니다.
- 지위: 협업 인스턴스에 설정할 상태입니다. 다음 중 하나여야 합니다. 완료 or 실패한.
VEH 내에서 해당 작업은 자식이 없을 수 있으므로 항상 리프 작업입니다.
통계 계산
ComputeStatistics 활동 패턴은 작업을 통과하는 이벤트의 단일 속성에 대한 최소값, 최대값, 평균값, 중앙값, 표준 편차 및 개수를 계산합니다. 집계 통계를 계산하는 데 사용되는 이벤트를 포함하는 데 사용할 수 있는 4가지 유형의 저장소가 있습니다(모두 다음을 기반으로 함). HDR 히스토그램):
- 지수 가중 – 다음을 사용하여 통계를 계산합니다.
Integer값입니다. 최근 이벤트가 이전 이벤트보다 집계에 더 많이 기여합니다. - 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
Integer값. 이벤트는 구성 가능한 시간 간격이 지나면 집계 통계에서 사용되지 않습니다. - 이중 히스토그램 – 다음을 사용하여 통계를 계산합니다.
Real값입니다. 히스토그램에서 모든 이벤트는 동일한 가중치를 갖습니다. - 재설정이 포함된 이중 히스토그램 – 다음을 사용하여 통계를 계산합니다.
Real값입니다. 이벤트는 집계 통계가 생성되기 전, 해당 기간 내에서만 계산됩니다. 구성된 outputFrequency에 대한 통계가 생성되면 히스토그램이 재설정됩니다.
ComputeStatistics 활동 패턴에는 두 가지 필수 구성 속성이 있습니다.
- 인바운드 속성 – 통계를 계산할 속성입니다. 각 속성은 숫자형 속성이어야 합니다.
- 저수지 유형 – 이벤트가 집계 통계에 어떻게, 얼마 동안 계산되는지를 결정하는 다양한 구현 중에서 선택합니다.
또한 두 가지 선택적 속성이 있습니다.
- 창 길이 – 이벤트가 집계 통계에 반영되는 기간을 지정하는 데 사용됩니다. 슬라이딩 시간 창 저장소에만 적용됩니다.
- 재설정 빈도 – 히스토그램을 얼마나 자주 재설정해야 합니까(간격 문자열로). '재설정이 있는 이중 히스토그램'에만 적용됩니다.
통계 계산은 다음과 같은 이벤트 스트림을 생성합니다.
- 이벤트(기본값) – 원래 수신 이벤트를 내보냅니다.
- 재설정 – 만약 재설정 빈도 지정되면 작업이 자동으로 다음을 내보냅니다. 재설정 상태가 자동으로 재설정되기 직전의 상태 값을 갖는 이벤트입니다.
ComputeStatistics 패턴은 이를 통과하는 이벤트의 구조에 영향을 미치지 않습니다.
ComputeStatistics 활동 패턴은 Get, Update, Reset이라는 세 가지 프로시저를 생성합니다. Get 프로시저는 분석의 현재 결과를 가져오는 데 사용할 수 있습니다. 반환값의 예는 다음과 같습니다.
{
"mean": 250.87244897959184,
"min": 200,
"max": 313.125,
"median": 244,
"stdDeviation": 36.683330907259204
}
좌표 변환
제공된 보정 정보에 따라 YOLO 이미지 분석 결과의 좌표를 변환합니다. 이러한 분석은 다음과 같은 결과일 수 있습니다. 이미지의 YOLO or 문서에서 YOLO 활동. YOLO 신경망 모델은 이미지에서 발견된 객체를 보고합니다. 발견된 각 객체에 대해 객체 레이블과 이미지 내 좌표 등을 보고합니다. ConvertCoordinates 활동 패턴은 이미지 결과에 다른 좌표계의 좌표를 추가합니다. 이는 이미지의 크기가 조정(작거나 크게)되거나 이미지 좌표를 완전히 다른 좌표 공간으로 변환하는 데 사용될 수 있습니다.예 GPS).
ConvertCoordinates 활동의 결과는 각 객체의 입력 이벤트의 복사본입니다. location 변환된 좌표로 대체됩니다(지정된 대로) calibrationKey).
ConvertCoordinates 활동에는 단일 구성 속성이 필요합니다.
- 교정키 – 이것은 두(2)개의 속성을 포함하는 VAIL 표현식입니다.
imageCoordinatesconvertedCoordinates. 이들 각각은 각각의 좌표 공간에서 동일선상에 있지 않은 4개의 점을 나타내는 네(4) 쌍(x 및 y 값)의 목록입니다. 즉, 이들은 각 점이 있는 사각형을 나타냅니다.imageCoordinates목록은 동일한 나열된 지점에 해당합니다.convertedCoordinates공간. 세(3) 점이 동일 선상에 있지 않아야 합니다. 점이 동일 선상에 있는 경우 변환 시 예상치 못한 결과가 발생할 수 있습니다. 시스템은 동일 선상성 확인을 시도하지만, 개발자는 이러한 제한 사항을 인지해야 합니다.
ConvertCoordinates 활동에는 두 개(2)의 선택적 구성 속성이 있습니다.
- 아웃바운드AsGeoJson – 변환된 좌표를 GeoJSON으로 표현해야 함을 나타내는 부울 값입니다. 이는 변환된 좌표가 GPS 좌표를 나타내는 경우에 가장 적합합니다(이에 국한되지는 않음). 기본값은 다음과 같습니다.
false. - 아웃바운드 부동산 – 변환된 좌표를 배치할 속성의 이름입니다. 기본값은 다음과 같습니다.
convertedResults.
예를 들어, 좌표 변환 활동을 다음과 같이 생각해 보세요. calibrationKey즉, 입력 좌표와 출력 좌표가 동일한 교정 키입니다. 이러한 키는 다음과 같이 VAIL 표현식으로 지정됩니다.
{
imageCoordinates: [ {x:1, y:1}, {x:2, y:1}, {x:3, y:3}, {x:4, y:3} ],
convertedCoordinates: [ {x:1, y:1}, {x:2, y:1}, {x:3, y:3}, {x:4, y:3} ]
}
여기서 당신은 다음을 볼 수 있습니다. imageCoordinates convertedCoordinates 는 동일하며 동일선상에 있지 않습니다.
앱 빌더에서는 다음과 같이 표시됩니다.

자동차가 포함된 이미지의 YOLO 출력을 이 활동에 공급하면 아래에 표시된 결과를 얻습니다.
{
"target": {"name": "car.jpg", "fileType": "image/jpeg", ... },
"results": [{
"confidence": 0.9961914,
"location" : {
"centerY": 324.67153930664062,
"top" : 153.53375244140625,
"left" : 71.24849700927734375,
"centerX": 497.45350265502929375,
"bottom": 495.809326171875,
"right" : 923.65850830078125
},
"label" : "car"]
}],
"convertedResults": [{
"confidence": 0.9961914,
"location" : {
"centerY": 324.67153930664062,
"top" : 153.53375244140625,
"left" : 71.24849700927734375,
"centerX": 497.45350265502929375,
"bottom": 495.809326171875,
"right" : 923.65850830078125
},
"label" : "car"]
}]
}
우리가 그 활동을 변경하여 다음을 지정하면 outputAsGeoJSON 사실이며 outboundProperty "geoJSONResults"로 변환하면 다음 이벤트가 발생합니다.
{
"target": {"name": "car.jpg", "fileType": "image/jpeg", ... },
"results": [{
"confidence": 0.9961914,
"location" : {
"centerY": 324.67153930664062,
"top" : 153.53375244140625,
"left" : 71.24849700927734375,
"centerX": 497.45350265502929375,
"bottom": 495.809326171875,
"right" : 923.65850830078125
},
"label": "car"]
}],
"geoJSONResults": [{
"confidence": 0.9961914,
"location" : {
"bottomRight": {
"coordinates": [495.809326171875, 923.65850830078125],
"type": "Point"},
"topLeft": {
"coordinates": [153.53375244140625, 71.24849700927734375],
"type": "Point"},
"center": {
"coordinates": [324.67153930664062, 497.45350265502929375],
"type": "Point"}
},
"label": "car"
}]
}
DBScan
DBScan 활동은 지정된 거리 측정을 사용하여 데이터를 클러스터링하기 위해 DBScan(밀도 기반 클러스터링) 알고리즘을 사용합니다.
DBScan 활동에는 다음과 같은 필수 구성 속성이 포함되어 있습니다.
- XYProperties – 클러스터를 계산할 인바운드 이벤트의 속성 이름(예: "속도", "온도" 등). 사용자는 2차원 분석의 경우 X 및 Y 속성을 지정하거나, XNUMX차원 분석의 경우 속성 하나만 지정할 수 있습니다. 각 속성은 숫자여야 합니다.
- 저수지 유형 – 데이터 포인트를 저장하는 데 사용되는 저장소 유형입니다. 이 유형에 따라 집계 통계를 계산하는 데 사용되는 알고리즘과 이전 데이터 포인트를 삭제할 시기가 결정됩니다.
- 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
Integer값. 지정된 시간 창 내에 발생한 모든 이벤트는 통계를 계산하는 데 사용됩니다(예: 지난 5분 동안의 모든 이벤트). - 슬라이딩 카운트 – 다음을 사용하여 통계를 계산합니다.
Integer값. 마지막 n 이벤트는 통계를 계산하는 데 사용됩니다. - 고정 시간 창 – 다음을 사용하여 통계를 계산합니다.
Real값. 고정된 시간 윈도우는 다음 재설정 시간까지 이벤트를 윈도우에 추가합니다. 예를 들어, 1시간의 고정된 시간 윈도우는 매시 정각부터 시작하여 새로운 정각 정각까지 해당 시간 내의 모든 이벤트에 대한 분석을 계산합니다. - 고정 개수 – 다음을 사용하여 통계를 계산합니다.
Real값. 지정된 이벤트 수에 도달할 때까지 모든 이벤트에 대한 분석을 계산합니다. 그 후 분석은 null로 재설정됩니다.
- 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
- 거리 측정 – 사용할 거리 측정 알고리즘입니다. 다음과 같습니다. 유클리드 거리, 맨해튼 거리, 캔버라 거리, 지구 이동자 거리, 체비셰프 거리. 자세한 내용은 Apache Math 거리 측정 문서.
- 최소 포인트 – 클러스터에 필요한 최소 포인트 수
- 최대 반경 – 고려할 이웃의 최대 반경
- 창 길이 – 이벤트가 창에 유지되는 기간입니다. 시간 기반 저장소의 경우 간격 문자열(예: "10분")입니다. 개수 기반 저장소의 경우 이벤트 수입니다.
DBScan 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 원래 수신 이벤트를 내보냅니다.
- 재설정 – reservoirType이 설정된 경우 고정 시간 창 or 고정 개수, 이벤트 핸들러는 자동으로 다음을 방출합니다. 재설정 상태가 자동으로 null로 재설정되기 직전에 분석 값이 있는 이벤트입니다.
DBScan 활동 패턴은 Get, Update, Reset의 세 가지 프로시저를 생성합니다. Get 프로시저는 분석의 현재 결과를 가져오는 데 사용할 수 있습니다. 반환값의 예는 다음과 같습니다.
{
"speed": [
[
[0, 50],
[1, 51],
[2, 52]
],
[
[0, 20],
[1, 21],
[2, 22]
]
]
}
자세한 내용은 Apache Math DBScan 문서.
Delay
인바운드 이벤트의 발생을 일정 시간 동안 지연합니다. 지연 간격은 이벤트를 지연할 밀리초 수를 나타내는 VAIL 표현식으로 표현됩니다. 예를 들어, 지연 구성이 다음과 같이 설정된 경우 event.delayLength 인바운드 이벤트는 다음과 같습니다.
{
"name": "machine1",
"temperature": 55.1,
"delayLength": 5000
}
이벤트는 5초가 지난 후에만 다운스트림 작업으로 전송됩니다. 지연 구성 속성을 모든 이벤트에 대해 일정한 간격 문자열로 설정할 수도 있습니다. 5 seconds or 2 hours.
지연 활동 패턴에는 필수 속성이 하나만 있습니다.
- 지연 – 이벤트를 지연시키는 데 걸리는 시간을 밀리초 단위로 평가하는 표현식입니다.
지연 활동 패턴은 또한 하나의 선택적 속성을 지원합니다.
- 수입 – 참조되는 리소스 목록 지연 가져와야 하는 표현식입니다.
드웰
Dwell은 순차적인 이벤트에서 일정 시간 동안 변하지 않은 상태를 식별하는 데 사용할 수 있습니다. 예를 들어, 이벤트 스트림에 기계 센서의 온도 측정값이 포함될 수 있으며, 기계 온도가 100분 이상 100도(섭씨 XNUMX도)를 초과하는 경우 위험할 수 있습니다. 온도가 일시적으로 XNUMX도(섭씨 XNUMX도)를 넘는다고 해서 반드시 위험한 것은 아닙니다. 이는 Dwell의 이상적인 사용 사례이며, 조건이 충족될 때만 이벤트를 발생하도록 구성할 수 있습니다. event.temperature > 100 60초 동안은 참입니다.
Dwell 작업이 지정된 기간 동안 조건이 참(true)으로 평가되어 이벤트를 생성하면, 조건이 참(true)을 유지하는 동안 더 이상 이벤트가 생성되지 않습니다. 조건이 거짓(false)으로 평가되면 Dwell 감지가 재설정됩니다. 그런 다음 조건이 지정된 기간 동안 다시 참으로 평가되면 다른 이벤트가 생성됩니다. 생성된 이벤트는 Dwell 작업이 조건과 일치하는 것으로 관찰한 마지막 이벤트입니다.
Dwell Activity Pattern에는 다음과 같은 구성 속성이 포함되어 있습니다.
- 조건 – 두 가지 옵션:
- VAIL 조건식: Dwell 작업을 트리거하기 위해 유지되어야 하는 상태를 표현하는 VAIL 부울 표현식입니다. 조건은 다음과 같은 인바운드 이벤트의 모든 속성을 참조할 수 있습니다.
event.propX > event.propY AND event.id == "XYZ". - 비주얼 필터: 사용자가 일련의 드롭다운과 텍스트 필드를 사용하여 조건을 생성할 수 있는 시각적 인터페이스입니다. 시각적 필터는 조건을 생성하는 더욱 사용자 친화적인 방법입니다.
- 지속 – 연속적인 이벤트에서 조건이 유지되어야 하는 시간으로, 이를 통해 대기 작업의 출력이 트리거됩니다.
Dwell Activity Pattern에는 하나의 선택적 구성 속성이 포함되어 있습니다.
- 수입 – 참조되는 리소스 목록 조건 수입해야 합니다.
Dwell 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – "대기" 조건이 감지되는 이벤트입니다.
- 재설정 – 체류 감지의 '리셋'을 트리거하는 이벤트입니다.
협력을 구축하다
Establish Collaboration 활동 패턴을 사용하면 이벤트 핸들러가 기존 활성 컨텍스트에서 실행될 수 있습니다. 협동 같은 실재.
협업 설정 활동에는 다음과 같은 필수 구성 속성이 포함되어 있습니다.
- 엔티티 ID – 엔터티의 고유 식별자를 설명하는 유효한 표현식(예:
event.machineIdorevent.farmId + event.barnId). - 역할 이름 – 엔터티 역할의 이름
- 행동 – 엔터티에 맞는 협업을 찾은 경우 작업에 대한 동작입니다.
- 하나의 엔터티에 대해 여러 협업을 열지 마십시오. – 일치하는 엔터티에 대한 활성 협업이 있는 경우 EstablishCollaboration은 필터 역할을 하며 이벤트는 다운스트림 작업으로 흐르지 않습니다.
- 기존 협업 구축 – entityId에 맞는 협업이 있으면 찾아서 해당 협업의 컨텍스트에서 다운스트림 작업을 실행합니다.
- 기존 협업을 구축하거나 새로운 협업을 생성합니다.: "기존 협업 구축"과 동일하게 작동하지만, 일치하는 협업을 찾을 수 없는 경우 새 협업이 열립니다.
이벤트 스트림
모든 VEH의 루트 작업은 이벤트 스트림입니다. 이벤트 스트림은 이벤트가 발생하는 리소스와 스트림에 포함할 이벤트를 제한하는 선택적 제약 조건을 식별합니다. 현재 지원되는 리소스는 다음과 같습니다. 유형, 소스글렌데일 주제따라서 유형에 대한 모든 삽입, 소스에 도착한 메시지, 토픽에 대한 게시는 VEH의 루트가 될 수 있습니다. VEH는 완전히 다른 데이터 조각을 식별하는 여러 이벤트 스트림을 가질 수 있으며, 이러한 이벤트 스트림을 다운스트림으로 연결하여 병렬 스트림에서 더 복잡한 상황을 감지할 수 있습니다.
이벤트 스트림 활동 패턴에는 다음과 같은 구성 속성이 포함되어 있습니다.
- 인바운드자원 – 중 하나 유형, 소스및 주제. 이는 이벤트 스트림에 들어오는 원시 이벤트가 발생하는 리소스를 설명합니다.
- 인바운드리소스 ID – 이 이벤트 스트림에 대해 이벤트가 발생하는 유형, 소스 또는 주제를 지정합니다. 예를 들어, 앱이 MyKafkaSource라는 Kafka 소스에서 들어오는 모든 메시지를 처리해야 하는 경우, inboundResource는 다음과 같습니다. 소스그리고 inboundResourceId는 MyKafkaSource가 됩니다.
- op – INSERT, UPDATE 또는 BOTH 중 하나입니다. inboundResource가 있는 경우에만 적용됩니다. 유형, 이 경우 op는 이벤트 스트림이 해당 유형에 대한 삽입이나 업데이트만 수신해야 하는지, 아니면 둘 다 처리해야 하는지를 제한합니다.
- 개요 – 인바운드 이벤트의 스키마를 정의하는 유형의 이름입니다. 여기에 스키마를 지정하면 다운스트림 작업 구성이 간소화됩니다.
풍부하게하다
Enrich 작업은 이벤트 스트림에 영구 데이터를 첨부하는 데 유용합니다. 예를 들어, 이벤트 스트림은 다음과 같은 모터 온도 측정값을 생성할 수 있습니다.
{
"engineId": "XYZ",
"temp": 165
}
그리고 각 엔진과 연관된 데이터가 포함된 기존 엔진 유형이 다음과 같이 있을 수 있습니다.
{
"engineId": "XYZ",
"manufacturer": "Ford",
"modelYear": 2010,
"optimalTemp": 155,
...
}
풍부화 작업은 엔진 데이터를 이벤트에 자동으로 결합하여 다음과 같은 아웃바운드 이벤트를 생성합니다.
{
"engineId": "XYZ",
"temp": 165,
"Engine": {
"engineId": "XYZ",
"manufacturer": "Ford",
"modelYear": 2010,
"optimalTemp": 155,
...
}
}
Enrich Activity Pattern에는 두 가지 구성 속성이 필요합니다.
- 연관된 유형 – 연관된 데이터가 정의된 유형입니다. 위 예에서 associatedType은 Engine입니다.
- 외래키 – 인바운드 이벤트와 associatedType 모두에 존재하는 속성 이름 배열로, associatedType 인스턴스를 고유하게 식별하는 데 사용할 수 있습니다. 위 예에서는 외래 키 "engineId" 하나만 있습니다.
차츰 오르다
에스컬레이션은 먼저 취소되지 않으면 일정 시간 후에 이벤트를 트리거합니다. 에스컬레이션은 특정 시간 내에 어떤 일이 발생하는지 확인하고, 발생하지 않을 경우 추가 동작을 트리거하는 데 유용한 방법입니다. 에스컬레이션은 다음을 사용하여 조기에 취소하거나 트리거할 수 있습니다. EscalateState 활동 패턴. Escalate에는 다음과 같은 구성 매개변수가 포함되어 있습니다.
- 에스컬레이션 시간 – 에스컬레이션 이벤트가 트리거되기 전의 시간(밀리초)입니다. 정수, 기간 문자열 또는 VAIL 표현식일 수 있습니다.
- 아웃바운드 동작 – 선택 사항. 출력 이벤트의 모양입니다. 다음 세 가지 옵션 목록에서 선택합니다.
- 아웃바운드 이벤트를 에스컬레이션 결과로 교체 – 에스컬레이션 작업에 대한 기본 이벤트를 보냅니다.
아무 옵션도 선택하지 않으면 이것이 기본 동작입니다. - 원본 이벤트 내보내기 – 에스컬레이션을 시작한 이벤트를 전송합니다. 이 옵션을 선택하면 전체 이벤트가 협업에 저장되므로 이벤트가 큰 경우 메모리 또는 데이터베이스 부하가 발생할 수 있습니다.
- outboundProperty에 결과 첨부 – 일반 에스컬레이션 이벤트를 원본 이벤트의 속성에 추가한 후 전송합니다. 이 옵션을 선택하면 전체 이벤트가 협업에 저장되므로 이벤트가 큰 경우 메모리 또는 데이터베이스 부하가 발생할 수 있습니다.
- 아웃바운드 이벤트를 에스컬레이션 결과로 교체 – 에스컬레이션 작업에 대한 기본 이벤트를 보냅니다.
- 아웃바운드 부동산 – 선택 사항. 결과를 첨부할 속성입니다. 아웃바운드 동작 "outboundProperty에 결과 첨부"입니다. 다른 설정에는 아무런 영향을 미치지 않습니다. 아웃바운드 동작.
에스컬레이션 활동 유형이 다른 활동과 연관된 동작으로 참조되는 경우 유일하게 필요한 매개변수는 협업 인스턴스입니다.
활동을 확대하면 다음과 같은 이벤트 스트림이 생성됩니다.
- 차츰 오르다 – 이 이벤트는 에스컬레이션 시작 시점의 escalationTime 내에 에스컬레이션이 취소되지 않은 경우 생성됩니다. 이 이벤트는 한 번만 발생하며, 에스컬레이션이 취소된 경우에는 발생하지 않습니다.
- 에스컬레이션취소됨 – 이 이벤트는 에스컬레이션이 취소될 때 생성됩니다. 이 이벤트는 한 번만 발생하며, 에스컬레이션이 이미 발생한 경우에는 발생하지 않습니다.
협업을 확대하면 다음과 같은 결과가 나타납니다.
- 상태 – 에스컬레이션 상태입니다. "대기 중", "취소됨" 또는 "만료됨" 중 하나일 수 있습니다.
- 업데이트 시간 – 에스컬레이션이 생성된 시간 또는 "취소됨" 또는 "만료됨" 상태로 업데이트된 시간(가장 최근에 발생한 시간).
- event – 에스컬레이션을 시작한 이벤트입니다. 다음 경우에만 존재합니다. 아웃바운드 동작 "원래 이벤트 내보내기" 또는 "outboundProperty에 결과 첨부"입니다.
활동을 확대하면 다음 이벤트가 추가되거나 생성됩니다. 아웃바운드 동작 is outboundProperty에 결과 첨부 or 아웃바운드 이벤트를 에스컬레이션 결과로 교체각각.
- 협업 유형 – 작업이 속한 협업 유형의 이름입니다.
- 협업 ID – 에스컬레이션이 속한 협업의 ID입니다.
- 활동 유형 – 에스컬레이션 작업의 이름입니다.
- 에스컬레이션 마감일 – 에스컬레이션이 만료되는 시간.
- 에스컬레이션 업데이트 시간 – 에스컬레이션이 생성된 시간 또는 "취소됨" 또는 "만료됨" 상태로 업데이트된 시간(가장 최근에 발생한 시간).
- 상태 – 에스컬레이션 상태입니다. "대기 중", "취소됨" 또는 "만료됨" 중 하나일 수 있습니다.
에스컬레이트 스테이트
EscalateState 작업은 수동으로 트리거하거나 취소하기 위해 존재합니다. 작업 확대에스컬레이션이 이미 만료되었거나 다른 EscalateState 작업에 의해 업데이트된 경우 오류가 발생합니다.
- 에스컬레이트 작업 – 트리거되거나 취소될 작업의 이름입니다.
- 상태 – 작업에 설정할 상태입니다. 다음 두 가지 옵션 목록에서 선택합니다.
- 취소 – 에스컬레이션을 취소하고 원래 작업의 "escalateCancelled" 이벤트를 트리거합니다.
- 만료 – 에스컬레이션 기한이 만료된 것처럼 즉시 에스컬레이션을 트리거합니다.
필터
다운스트림 작업으로 전달되는 이벤트를 제한하는 간단한 작업입니다. 조건은 VAIL 조건식으로 지정되며 인바운드 이벤트의 모든 속성에 적용될 수 있습니다.
필터 활동 패턴에는 필수 구성 속성이 하나만 포함됩니다.
- 조건 – 두 가지 옵션:
- VAIL 조건식: 필터를 통해 다운스트림 작업으로 어떤 이벤트가 흐르는지 제한하는 VAIL 표현식입니다. 예:
event.netWeight > 1000 - 비주얼 필터: 사용자가 일련의 드롭다운과 텍스트 필드를 사용하여 조건을 생성할 수 있는 시각적 인터페이스입니다. 시각적 필터는 조건을 생성하는 더욱 사용자 친화적인 방법입니다.
- VAIL 조건식: 필터를 통해 다운스트림 작업으로 어떤 이벤트가 흐르는지 제한하는 VAIL 표현식입니다. 예:
어느 경우든, 조건을 만족하는 사건만 계속 진행됩니다.
필터 활동 패턴에는 하나의 선택적 구성 속성이 포함되어 있습니다.
- 수입 – 참조되는 리소스 목록 조건 수입해야 합니다.
필터는 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 이벤트가 조건을 통과할 때 발생하는 이벤트입니다.
- 거부 – 이벤트가 조건을 충족하지 못할 때 발생하는 이벤트입니다. 필터가 LoopWhile 작업의 자식인 경우 이 이벤트를 사용할 수 없습니다. whileTrue 이벤트입니다. 원래 이벤트가 안정적이었다면 이 경로를 사용하는 작업은 안정성을 잃게 됩니다.
GenAI 흐름
GenAI Flow 활동 패턴은 내장된 이벤트 핸들러를 통해 사용자 정의 GenAI 기능을 이벤트 핸들러에 추가하는 데 사용됩니다. GenAI 흐름. 이 활동 패턴의 목적은 보완하는 것입니다. 프롬프트 제출 답변 질문, 이를 대체하는 것이 아닙니다. 이러한 패턴에서 사용하는 것과 다른 GenAI 알고리즘을 사용할 수 있도록 합니다.
GenAI Flow 활동에는 다음과 같은 필수 구성 속성이 있습니다.
- 시술 – 내장된 GenAI Flow를 나타내는 리소스에 대한 참조입니다. 이 속성은 읽기 전용입니다.
- 입력 – GenAI Flow에 전달되는 입력 값을 생성하는 데 사용되는 VAIL 표현식입니다.
GenAI Flow 활동에는 다음과 같은 선택적 구성 속성이 있습니다.
- 반환 동작 – 세 가지 옵션 목록에서 선택:
- 반환 값을 아웃바운드 이벤트로 사용 – 프로시저 호출 결과를 아웃바운드 이벤트로 내보냅니다. 이는 옵션을 선택하지 않은 경우의 기본 동작입니다.
- returnProperty에 반환 값 첨부 – 프로시저 결과를 포함하는 추가 속성과 함께 원래 이벤트를 내보냅니다.
- 반환 값 무시 – 원래 인바운드 이벤트를 아웃바운드 이벤트로 내보냅니다(변경되지 않음)
- 반환 속성 – 아웃바운드 이벤트에서 GenAI Flow의 결과를 할당할 속성의 이름입니다. 참고: 이 속성은 returnBehavior에 대해 "returnProperty에 반환 값 연결"을 선택한 경우에만 사용됩니다.
- 런타임 구성 – GenAI Flow에 제공되는 런타임 구성 속성을 생성하는 데 사용되는 VAIL 표현식을 지정합니다. 표현식은 속성 이름과 값을 포함하는 객체로 평가되어야 합니다.
- 대화 사용 – 프롬프트 제출 시 작업이 대화에 참여해야 하는지 여부를 나타내는 부울 값입니다. 이 옵션을 사용하려면 활성 협업이 필요합니다. 기본적으로 협업 ID가 대화 ID로 사용되므로 여러 작업이 동일한 대화에 참여할 수 있습니다(동일한 협업 인스턴스에서 작동하는 경우).
- 대화 이름 – 작업이 참여해야 하는 대화의 이름을 나타내는 문자열입니다. 지정하지 않으면 협업의 기본 대화가 사용됩니다. 이 옵션을 사용하면 두 개 이상의 작업이 기본 협업 전체 대화와 별도로 협업 인스턴스 내에서 대화 상태를 공유할 수 있습니다. 대화 이름은 협업의 속성에 선언해야 합니다. GenAI Flow 작업에 별도의 대화 상태가 필요한 경우 대화 이름을 사용하세요.
self이렇게 하면 해당 작업과 관련된 비공개 대화가 생성됩니다.
협업을 얻으세요
협업 가져오기 활동 패턴은 현재 결과를 반환합니다. 협동GetCollaboration 활동 패턴은 먼저 서비스 상태에서 현재 협업 ID(루트-리프 경로의 협업 ID)와 일치하는 협업을 찾습니다. 협업이 발견되지 않으면 데이터베이스에서 해당 협업을 쿼리합니다.
협업 작업은 협업을 만드는 작업의 자식으로만 나타날 수 있습니다.
협업 가져오기 활동 패턴은 다음과 같은 선택적 구성 속성을 정의합니다.
- 작업 이름 – 협업 작업, 엔터티 역할 또는 협업 역할의 이름입니다. 작업 이름을 지정하지 않으면 전체 협업 인스턴스가 반환됩니다.
- 반환 동작 – 두 가지 옵션 목록에서 선택:
- 반환 값을 아웃바운드 이벤트로 사용 – 프로시저 호출 결과를 아웃바운드 이벤트로 내보냅니다. 이는 옵션을 선택하지 않은 경우의 기본 동작입니다.
- returnProperty에 반환 값 첨부 – 프로시저 결과를 포함하는 추가 속성과 함께 원래 이벤트를 내보냅니다.
- 반환 속성 – 아웃바운드 이벤트에서 프로시저 결과를 할당할 속성의 이름입니다. 참고: 이 속성은 returnBehavior에 대해 "returnProperty에 반환 값 연결"을 선택한 경우에만 사용됩니다.
가입하기
조인 활동 패턴을 사용하면 사용자는 여러 이벤트 스트림에서 발생하는 조건을 식별하고 이를 다운스트림 작업에서 사용할 수 있는 단일 이벤트로 병합할 수 있습니다.
예를 들어, 엔진이 이상 상태로 전환되는 것을 감지하는 엔진 모니터링 데모 애플리케이션을 생각해 보겠습니다. 데모에는 두 개의 독립적인 스트림이 있는데, 하나는 엔진 속도 측정값을 포함하고 다른 하나는 엔진 온도를 포함합니다. 각 측정값은 특정 엔진 ID와 연결되어 있으므로, 이상 상태의 엔진을 식별하려면 엔진 속도 스트림에서 속도가 1000을 초과하고 엔진 온도 스트림에서 140을 초과하는 측정값을 식별해야 하며, 두 이벤트는 동일한 엔진 ID를 사용해야 합니다. 두 이벤트는 서로 30초 이내에 발생해야 합니다.
이러한 "불량 엔진" 상황은 제한된 시간 창 내에서 발생하는 두 개의 병렬 스트림의 조건을 식별하여서만 포착할 수 있습니다.
조인 활동 패턴에는 다음과 같은 구성 속성이 포함됩니다.
- 가입주문 – 상위 작업의 순서를 지정합니다. 그러면 상위 순서에 따라 조인이 왼쪽에서 오른쪽으로 적용됩니다.
- 주문 – BEFORE, AFTER 또는 EITHER 중 하나입니다. 부모 작업을 왼쪽에서 오른쪽으로 정렬할 때 조인 작업이 트리거되는 부모 이벤트의 발생 순서를 지정합니다. 순서가 중요하지 않으면 EITHER를 선택합니다.
- 기간 내 – 다음과 같은 기간 문자열
30 seconds이는 조인 작업을 트리거하기 위해 모든 상위 스트림에서 이벤트가 발생해야 하는 시간 범위를 설명합니다. 시간이 길어질수록 시스템이 더 많은 과거 데이터를 추적해야 하므로 성능이 저하될 수 있습니다. - 제약 – 조인 조건이 충족되기 위해 참이어야 하는 제약 조건 배열입니다. 제약 조건은 각 스트림에 개별적으로 지정하거나 두 이벤트에 함께 지정할 수 있습니다. 각 부모에서 발생하는 이벤트는 부모 작업 이름으로 식별되므로, 조인 작업에 engineSpeedStream과 engineTempStream이라는 두 개의 부모가 있는 경우, 하나의 제약 조건은 다음과 같습니다.
engineSpeedStream.engineId == engineTempStream.engineId. 또 다른 제약은 다음과 같습니다.engineSpeedStream.rpm > 1000조인 작업이 실행되려면 모든 조건이 충족되어야 합니다. - 수입 – 참조되는 리소스 목록 제약 수입해야 합니다.
조인에 대한 중요한 참고 사항은 업스트림 작업의 순서가 중요하다는 것입니다. 조인 위의 가장 왼쪽 스트림은 조인이 이루어질 수 있는 최대 빈도를 결정합니다. 조인 작업의 출력은 가장 왼쪽 상위 작업의 각 고유 이벤트에 대해 고유합니다. 조인의 가장 왼쪽 상위가 10초마다 한 번씩 이벤트를 생성하는 경우 조인은 다른 상위 작업의 빈도에 관계없이 최대 10초마다 한 번씩 이벤트를 생성합니다.
참고: Join 작업은 SplitByGroup 작업 아래에서 사용할 수 없습니다.
Join 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 결합된 입력 이벤트를 포함하는 결합된 이벤트
- 시간 제한 – 후속 일치 이벤트를 찾지 못하는 부분 일치(가장 왼쪽 스트림부터 시작)를 포함하는 부분적으로 결합된 이벤트입니다.
K-평균 클러스터
K-Means 클러스터 활동은 지정된 거리 측정을 사용하여 데이터를 지정된 수의 클러스터로 클러스터링하기 위해 K-Means 클러스터링 알고리즘을 사용합니다.
K-Means 클러스터 활동에는 다음과 같은 필수 구성 속성이 포함되어 있습니다.
- XYProperties – 클러스터를 계산할 인바운드 이벤트의 속성 이름(예: "속도", "온도" 등). 사용자는 2차원 분석의 경우 X 및 Y 속성을 지정하거나, XNUMX차원 분석의 경우 속성 하나만 지정할 수 있습니다. 각 속성은 숫자여야 합니다.
- 저수지 유형 – 데이터 포인트를 저장하는 데 사용되는 저장소 유형입니다. 이 유형에 따라 집계 통계를 계산하는 데 사용되는 알고리즘과 이전 데이터 포인트를 삭제할 시기가 결정됩니다.
- 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
Integer값. 지정된 시간 창 내에 발생한 모든 이벤트는 통계를 계산하는 데 사용됩니다(예: 지난 5분 동안의 모든 이벤트). - 슬라이딩 카운트 – 다음을 사용하여 통계를 계산합니다.
Integer값. 마지막 n 이벤트는 통계를 계산하는 데 사용됩니다. - 고정 시간 창 – 다음을 사용하여 통계를 계산합니다.
Real값. 고정된 시간 윈도우는 다음 재설정 시간까지 이벤트를 윈도우에 추가합니다. 예를 들어, 1시간의 고정된 시간 윈도우는 매시 정각부터 시작하여 새로운 정각 정각까지 해당 시간 내의 모든 이벤트에 대한 분석을 계산합니다. - 고정 개수 – 다음을 사용하여 통계를 계산합니다.
Real값. 지정된 이벤트 수에 도달할 때까지 모든 이벤트에 대한 분석을 계산합니다. 그 후 분석은 null로 재설정됩니다.
- 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
- 창 길이 – 이벤트가 창에 유지되는 기간입니다. 시간 기반 저장소의 경우 간격 문자열(예: "10분")입니다. 개수 기반 저장소의 경우 이벤트 수입니다.
- 거리 측정 – 사용할 거리 측정 알고리즘입니다. 다음과 같습니다. 유클리드 거리, 맨해튼 거리, 캔버라 거리, 지구 이동자 거리, 체비셰프 거리. 자세한 내용은 Apache Math 거리 측정 문서.
- 클러스터 수 – 데이터를 분할할 클러스터 수.
K-Means 클러스터 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 원래 수신 이벤트를 내보냅니다.
- 재설정 – reservoirType이 설정된 경우 고정 시간 창 or 고정 개수, 이벤트 핸들러는 자동으로 다음을 방출합니다. 재설정 상태가 자동으로 null로 재설정되기 직전에 분석 값이 있는 이벤트입니다.
K-Means 클러스터 활동 패턴은 Get, Update, Reset, Predict의 네 가지 프로시저를 생성합니다. Get 프로시저는 분석의 현재 결과를 가져오는 데 사용할 수 있습니다. 다음은 반환값의 예입니다.
{
"speed": [
{
"points": [
{"point": [20]},
{"point": [21]},
{"point": [22]}
],
"center": [21]
},
{
"points": [
{"point": [80]},
{"point": [81]},
{"point": [82]}
],
"center": [81]
},
{
"points": [
{"point": [50]},
{"point": [51]},
{"point": [52]}
],
"center": [51]
}
]
}
예측 프로시저를 사용하면 테스트 포인트가 기존 클러스터 중 어느 클러스터에 가장 잘 맞는지 예측할 수 있습니다. 위의 클러스터를 사용하여 다음 매개변수를 사용하여 예측 프로시저를 실행합니다. value=25 yPropName=speed 반환 값은 다음과 같습니다.
{
"center": [21],
"points": [
{"point": [20]},
{"point": [21]},
{"point": [22]}
],
"distance": 4
}
자세한 내용은 Apache Math K-Means 클러스터 문서.
선형 회귀
선형 회귀 활동은 선형 회귀 알고리즘을 사용하여 기록된 x/y 쌍에 대한 기울기와 절편을 결정하고 미래 값을 예측합니다.
선형 회귀 활동에는 다음과 같은 필수 구성 속성이 포함되어 있습니다.
- XYProperties – 클러스터를 계산할 인바운드 이벤트의 속성 이름(예: "속도", "온도" 등). 각 속성은 숫자여야 합니다.
- 저수지 유형 – 데이터 포인트를 저장하는 데 사용되는 저장소 유형입니다. 이 유형에 따라 집계 통계를 계산하는 데 사용되는 알고리즘과 이전 데이터 포인트를 삭제할 시기가 결정됩니다.
- 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
Integer값. 지정된 시간 창 내에 발생한 모든 이벤트는 통계를 계산하는 데 사용됩니다(예: 지난 5분 동안의 모든 이벤트). - 슬라이딩 카운트 – 다음을 사용하여 통계를 계산합니다.
Integer값. 마지막 n 이벤트는 통계를 계산하는 데 사용됩니다. - 고정 시간 창 – 다음을 사용하여 통계를 계산합니다.
Real값. 고정된 시간 윈도우는 다음 재설정 시간까지 이벤트를 윈도우에 추가합니다. 예를 들어, 1시간의 고정된 시간 윈도우는 매시 정각부터 시작하여 새로운 정각 정각까지 해당 시간 내의 모든 이벤트에 대한 분석을 계산합니다. - 고정 개수 – 다음을 사용하여 통계를 계산합니다.
Real값. 지정된 이벤트 수에 도달할 때까지 모든 이벤트에 대한 분석을 계산합니다. 그 후 분석은 null로 재설정됩니다.
- 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
- 창 길이 – 이벤트가 창에 유지되는 기간입니다. 시간 기반 저장소의 경우 간격 문자열(예: "10분")입니다. 개수 기반 저장소의 경우 이벤트 수입니다.
선형 회귀 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 원래 수신 이벤트를 내보냅니다.
- 재설정 – reservoirType이 설정된 경우 고정 시간 창 or 고정 개수, 이벤트 핸들러는 자동으로 다음을 방출합니다. 재설정 상태가 자동으로 null로 재설정되기 직전에 분석 값이 있는 이벤트입니다.
선형 회귀 활동 패턴은 Get, Update, Reset, Predict의 네 가지 프로시저를 생성합니다. Get 프로시저는 분석의 현재 결과를 가져오는 데 사용할 수 있습니다. 반환값의 예는 다음과 같습니다.
{
"intercept": 0,
"slope": 10,
"meanSquaredError": 0,
"r": 1
}
예측 프로시저는 주어진 입력에 대한 y 값을 예측하는 데 사용할 수 있습니다. 위의 선형 회귀 분석을 사용하여 다음 매개변수를 사용하여 예측 프로시저를 실행합니다. value=25 yPropName=speed 값을 반환 250.
자세한 내용은 Apache Math 선형 회귀 문서.
한도
제한 활동 패턴을 사용하면 최대 이벤트 수와 해당 최대값이 적용되는 간격을 정의할 수 있습니다. 각 간격에서 이벤트는 최대값에 도달할 때까지 제한 작업을 통해 흐르도록 허용되며, 최대값에 도달하면 간격 종료 시점까지의 모든 이후 이벤트는 삭제됩니다.
필요한 구성 속성은 다음과 같습니다.
- 최대 개수 – 간격 내에서 제한을 통과할 수 있는 최대 이벤트 수입니다.
- 간격 – 다음과 같은 간격 문자열
1 secondor10 minutes이는 maxCount 제한이 적용되어야 하는 기간을 정의합니다.
로그 스트림
로그 스트림 작업은 디버깅에 유용합니다. 구성 속성을 사용하지 않고, INFO 수준에서 로그 스트림 작업에 도달하는 각 이벤트를 로깅합니다. 앱을 개발할 때, 작업의 구성을 실험하면서 작업 출력을 확인하기 위해 각 작업에 로그 스트림을 첨부하는 것이 유용한 경우가 많습니다. 작업이 제대로 구성되면 로그 스트림을 제거하고 새 작업을 추가한 후 새 작업에 로그 스트림을 첨부합니다.
반복하는 동안
Loop While 활동 패턴은 앱 빌더 내에서 시각적 while 루프처럼 작동합니다.
Loop While 활동 패턴에는 다음과 같은 필수 구성 속성이 있습니다.
- 조건 (VAIL 표현식) – 조건이 참인 동안 루프는 계속 진행됩니다. 조건은 다음을 참조할 수 있습니다. 카운터 속성 직접적으로 (예: 카운터 < 이벤트.리스트.크기() or 재시도 횟수 < 10)
Loop While 활동 패턴에는 다음과 같은 선택적 구성 속성이 있습니다.
- 수입 – 조건 속성이 참조하는 리소스 목록
- 최대 재시도 횟수 (정수) – 이 루프가 발생할 수 있는 최대 횟수입니다. 조건이 여전히 true로 평가되더라도 루프 카운터가 maxRetryCount를 초과하면 루프가 종료되고 최대 재시도 횟수 초과 event
- 카운터 속성 (문자열) - 루프 카운터(루프가 실행된 횟수)를 나타내는 변수입니다. 설정하지 않으면 기본값으로 사용됩니다. 재시도 횟수counterProperty는 다음에서 직접 참조될 수 있습니다. 조건 그리고 첨부될 것입니다 event 작업의 일부인 모든 객체 루프 바디.
Loop While은 다음과 같은 이벤트 스트림을 생성합니다.
- whileTrue (기본값) – 조건이 다음과 같이 평가될 때 발생하는 이벤트 참된. 이 이벤트에는 다음이 포함됩니다. 카운터 속성 및 현재 값. 아래에 연결된 모든 작업 whileTrue 이벤트는 다음의 일부입니다 루프 바디 즉, 루프의 일부로 반복적으로 실행된다는 의미입니다.
- 한 번거로움 – 조건이 거짓으로 평가될 때 발생하는 이벤트입니다.
- 최대 재시도 횟수 초과 – 성공 조건이 충족되지 않고 maxRetryCount를 초과한 경우 발생하는 이벤트입니다.
- event – 원래의 수신 이벤트를 내보냅니다.
The 루프 바디 반복적으로 작업을 실행합니다. whileTrue 리프에 대한 이벤트입니다. 리프는 루프의 끝으로 간주되고 루프는 다시 시작됩니다. 상단. 이에 대한 유일한 예외는 LoopWhile 작업과 리프 사이의 어딘가에 있는 Filter 작업이 다음과 같이 평가되는 경우입니다. 그릇된, 루프는 종료되지 않고 다음 반복으로 계속됩니다. whileTrue 이벤트에서 리프 경로는 경로입니다. 동기 작업입니다. 여기에는 삼각형으로 표시된 비동기 이벤트는 포함되지 않습니다. whileTrue 지점에는 하나만 포함될 수 있습니다 잎 작업.
아래 예는 다음의 일부입니다. 고급 협업 튜토리얼루프는 추천된 최초 대응자를 반복합니다. 응답자에게 알림이 전송되며 1분 이내에 응답해야 합니다. 응답자가 1분 이내에 응답하지 않으면 알림이 취소되고 루프의 다음 반복이 시작되어 다음 응답자에게 알림을 보냅니다. 루프 조건은 다음과 같습니다. 카운터 < event.recommendedResponders.size()조건이 거짓이면 루프 종료 작업이 실행됩니다. 할당이 완료되면 협업이 성공적으로 완료됩니다. 그렇지 않으면 다음과 같이 표시됩니다. 실패한.

The 루프 바디 에서 오는 경로입니다 NotifyFirstResponder -> 응답 대기 -> GetPayloadId -> 쑥 들어가게 하다알림 응답과 AssignResponder 응답 이벤트가 비동기적이므로 루프 본문의 일부가 아닙니다.
병합
때로는 여러 스트림이 동일한 데이터를 생성하는 상황이 발생할 수 있으며, 이러한 경우 다운스트림 작업에서 사용할 수 있는 단일 스트림으로 병합하는 것이 도움이 되는 경우가 많습니다. 병합 작업은 여러 스트림에 대해 이 작업을 수행합니다. 최상의 결과를 얻으려면 각 독립적인 상위 스트림의 인바운드 데이터가 동일한 스키마를 준수해야 다운스트림 작업이 모두 병합 결과를 일관된 방식으로 처리할 수 있습니다.
병합 작업은 구성 매개변수를 사용하지 않습니다.
누락
누락 활동 패턴은 일정 시간 동안 이벤트가 발생하지 않음을 감지합니다. 이는 시스템(또는 사용자의 심박수 또는 맥박)을 모니터링하는 데 유용할 수 있습니다. 누락 작업은 수신 이벤트를 수신하고 지정된 기간 내에 이벤트가 발생하는 한 출력을 생성하지 않습니다. 하지만 지정된 기간 동안 이벤트가 감지되지 않으면 수신 이벤트가 없음을 나타내는 출력 이벤트가 생성됩니다. 새로운 수신 이벤트가 수신되지 않으면 수신 이벤트 없이 경과하는 모든 간격에 대해 출력 이벤트가 생성됩니다.
누락된 활동 패턴은 두 가지 추가 구성 속성을 허용합니다.
- 지속 – 다음과 같은 간격 문자열
3 minutesor90 seconds인바운드 이벤트가 얼마나 자주 도착해야 하는지를 나타내는 값입니다. 이 기간 동안 이벤트가 없으면 아웃바운드 이벤트가 생성됩니다. 기본적으로 최소 유효값은 다음과 같습니다.1 minute. 이것은 다음에 의해 제어됩니다.minimumScheduledProcedureInterval할당량 값(더 낮은 값이 필요하면 시스템 관리자에게 문의하세요).
누락된 작업의 출력은 다음과 같습니다.
{
"missingAt": "2017-10-09T21:45:28.231Z",
"task": "MissingMyTopic",
"lastEvent": {
... // Copy of last event received
}
}
누락된 경우 다음 이벤트 스트림이 생성됩니다.
- event (기본값) – 구성된 간격 동안 이벤트가 나타나지 않을 때 발생하는 이벤트입니다.
- 다시 시작 – 누락된 이벤트가 전송된 후 수신된 첫 번째 이벤트에서 발생하는 이벤트입니다. 다음 필드를 포함합니다.
- 새로운 이벤트 – 재시작을 유발한 이벤트.
- 마지막 이벤트 – 작업이 누락된 것으로 간주되기 전에 수신된 마지막 이벤트입니다.
- 경과 시간 – 마지막 두 이벤트 사이의 초 수.
- 마지막으로 받은 – lastEvent를 수신한 시간입니다.
알림
알림 활동 패턴은 Vantiq 모바일 클라이언트를 사용하여 한 명의 Vantiq 사용자에게 알림을 전송합니다. 이 알림의 내용은 제목, 본문, 그리고 Vantiq 클라이언트로 정의됩니다.
알림 활동 패턴에는 다음과 같은 필수 구성 속성이 있습니다.
- 제목 (VAIL 표현식) – 알림의 제목입니다.
- 몸 (VAIL 표현) – 이 알림의 본문 텍스트입니다.
- 사용자 (Union) – 이 알림을 보낼 사용자 이름 목록입니다. 이는 실제 VAIL 표현식의 배열이거나 배열로 평가되는 단일 VAIL 표현식일 수 있습니다(예: 이벤트.사용자 목록).
- 고객 이름 (열거형) – 사용자가 이 알림을 열고 상호 작용할 때 표시되는 클라이언트의 이름입니다.
호환성 참고 사항: Notify 패턴은 지원하지 않습니다. ${variable} 대체 표기법 대신 다음을 사용하세요. "my message... " + <variable> + "..." 통사론.
알림 활동 패턴에는 다음과 같은 선택적 구성 속성이 있습니다.
- 수입 – 이 활동을 위해 가져올 리소스 목록입니다.
- 최대 응답 시간 (VAIL 표현식) – 알림을 받은 사용자가 응답해야 하는 최대 시간(예: "20분")입니다. 그렇지 않으면 responseTimeout 이벤트가 발생합니다.
- pushSourceName (열거형) – 이 알림을 전송하는 데 사용되는 푸시 알림 소스의 이름입니다. 지정하지 않으면 자동으로 생성됩니다.
- 첫 번째 응답 필터 (VAIL 표현식) – firstResponse 이벤트에 대한 WHERE 절입니다. 이 절을 지정하면 응답이 필터를 통과하는 경우에만 firstResponse 이벤트가 발생합니다.
- 템플릿 대체 비활성화 (부울) - true인 경우, 클라이언트 페이로드는 알림을 전송하기 전에 템플릿 대체를 거치지 않습니다. 대신 클라이언트는 있는 그대로 전송됩니다. 이는 클라이언트에 문자열 보간(예: `${variable}`)을 사용하는 Javascript 코드가 포함되어 있어 알림 작업에서 오류가 발생할 가능성이 높은 경우에 유용합니다. 시스템은 여전히 제목과 본문에 템플릿 대체를 적용합니다.
Notify는 다음과 같은 이벤트 스트림을 생성합니다.
- 응답 (기본값) – 알림에 대한 응답을 받았을 때 발생하는 이벤트입니다.
- 가치: 알림의 입력 필드에서 사용자가 선택한 값을 포함하는 응답 개체입니다.
- 제출값: 사용자가 선택한 제출 값입니다.
- 응답주제: 이 응답 이벤트를 트리거한 응답이 게시된 주제입니다.
- 사용자 이름: 알림에 응답한 Vantiq 사용자입니다.
- 상태: 다음을 포함하는 객체 협업 ID 이 알림을 보낸 협업 인스턴스에 대한 정보입니다. 구성의 payload.state에 지정된 다른 데이터도 포함될 수 있습니다.
- 아스인포: 응답을 게시한 장치에서 수집한 메타데이터가 들어 있는 개체입니다. 여기에는 응답이 전송된 deviceName, deviceId, location(GeoJSON 형식)이 포함됩니다.
- 첫 번째 응답 – 이벤트는 알림을 받은 첫 번째 사용자가 알림에 응답할 때 도착합니다.
- 가치: 알림의 입력 필드에서 사용자가 선택한 값을 포함하는 응답 개체입니다.
- 제출값: 사용자가 선택한 제출 값입니다.
- 응답주제: 이 응답 이벤트를 트리거한 응답이 게시된 주제입니다.
- 사용자 이름: 알림에 응답한 Vantiq 사용자입니다.
- 상태: 다음을 포함하는 객체 협업 ID 이 알림을 보낸 협업 인스턴스에 대한 정보입니다. 구성의 payload.state에 지정된 다른 데이터도 포함될 수 있습니다.
- 아스인포: 응답을 게시한 장치에서 수집한 메타데이터가 들어 있는 개체입니다. 여기에는 응답이 전송된 deviceName, deviceId, location(GeoJSON 형식)이 포함됩니다.
- 응답 시간 초과 – 알림을 방출한 이벤트가 구성된 "maxResponseTime" 내에 응답을 받지 못합니다.
- 페이로드 ID: ArsPayloadMessage 인스턴스의 _id.
- 사용자: 알림을 받은 사용자의 배열입니다.
- event – 원래의 수신 이벤트를 내보냅니다.
예제 응답 이벤트에 대한 자세한 내용은 아래와 같습니다.
{
"values": {},
"submitValue": 0,
"arsInfo": {
"deviceId": "9BC12C06-134A-40B2-9271-F6B121E1D663",
"localeLanguage": "en",
"responseTimestamp": "2022-06-01T17:53:47.949Z",
"localeVariant": "*",
"clientName": "FirstResponderResponse",
"deviceName": "<device name>",
"responseLocation": {
"altitudeMeters": 60.94035339355469,
"longitude": -122.06644349836851,
"horizontalAccuracyMeters": 35,
"speedMetersPerSecond": -1,
"bearingDegrees": -1,
"latitude": 37.90660164348477,
"verticalAccuracyMeters": 8.852736473083496
},
"username": "<username>",
"localeCountry": "us"
},
"deviceName": "<device name>",
"deviceId": "<device id>",
"responseTopic": "/patient.monitoring.HeartRate.MonitorReading/tasks/NotifyFirstResponder/response/trigger",
"responseResource": "topics",
"username": "<username>",
"responseResourceId": "/patient.monitoring.HeartRate.MonitorReading/tasks/NotifyFirstResponder/response/trigger",
"state": {
"collaborationId": "<collaborationId>"
}
}
협업 인스턴스가 다음으로 업데이트되었습니다.
{
"id": "<collaboration id>",
"status": "active",
"name": "<app name>",
"results": {
"<notify task name>": {
"payloadId": "<_id for the ArsPayloadMessage instance>",
"responses": "<array of response events>"
}
}
}
The 페이로드 ID Notification Service 프로시저 Notification.retractPayload를 사용하여 메시지를 철회하는 데 사용될 수 있습니다.
다항식 피팅
다항식 피팅 활동은 다항식 곡선 피팅을 사용하여 주어진 점 집합에 대한 계수와 잔차를 계산합니다. 이 활동 패턴은 곡선 상의 값과 특정 지점에서의 변화율을 각각 예측하는 데 사용할 수 있는 예측 및 미분 절차를 생성합니다.
다항식 피터 활동에는 다음과 같은 필수 구성 속성이 포함되어 있습니다.
- XYProperties – 클러스터를 계산할 인바운드 이벤트의 속성 이름(예: "속도", "온도" 등). 각 속성은 숫자여야 합니다.
- 저수지 유형 – 데이터 포인트를 저장하는 데 사용되는 저장소 유형입니다. 이 유형에 따라 집계 통계를 계산하는 데 사용되는 알고리즘과 이전 데이터 포인트를 삭제할 시기가 결정됩니다.
- 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
Integer값. 지정된 시간 창 내에 발생한 모든 이벤트는 통계를 계산하는 데 사용됩니다(예: 지난 5분 동안의 모든 이벤트). - 슬라이딩 카운트 – 다음을 사용하여 통계를 계산합니다.
Integer값. 마지막 n 이벤트는 통계를 계산하는 데 사용됩니다. - 고정 시간 창 – 다음을 사용하여 통계를 계산합니다.
Real값. 고정된 시간 윈도우는 다음 재설정 시간까지 이벤트를 윈도우에 추가합니다. 예를 들어, 1시간의 고정된 시간 윈도우는 매시 정각부터 시작하여 새로운 정각 정각까지 해당 시간 내의 모든 이벤트에 대한 분석을 계산합니다. - 고정 개수 – 다음을 사용하여 통계를 계산합니다.
Real값. 지정된 이벤트 수에 도달할 때까지 모든 이벤트에 대한 분석을 계산합니다. 그 후 분석은 null로 재설정됩니다.
- 슬라이딩 시간 창 – 다음을 사용하여 통계를 계산합니다.
- 창 길이 – 이벤트가 창에 유지되는 기간입니다. 시간 기반 저장소의 경우 간격 문자열(예: "10분")입니다. 개수 기반 저장소의 경우 이벤트 수입니다.
- 정도 – 다항식의 차수.
다항식 피터 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 원래 수신 이벤트를 내보냅니다.
- 재설정 – reservoirType이 설정된 경우 고정 시간 창 or 고정 개수, 이벤트 핸들러는 자동으로 다음을 방출합니다. 재설정 상태가 자동으로 null로 재설정되기 직전에 분석 값이 있는 이벤트입니다.
다항식 피터 활동 패턴은 가져오기, 업데이트, 재설정, 예측, 미분, 적분의 6가지 절차를 생성합니다.
아래 예를 들어, 다음 이벤트가 차수로 구성된 Polynomial Fitter 작업에 의해 처리된다고 가정해 보겠습니다. 2.
{
"time": 1,
"temperature": 38
}
{
"time": 2,
"temperature": 68
}
{
"time": 3,
"temperature": 120
}
Get 프로시저를 사용하여 다항식 적합의 현재 결과를 가져올 수 있습니다. 반환 값의 예는 다음과 같습니다.
{
"coefficients": [
30.000000000000004,
-3.000000000000007,
11.000000000000002
],
"RMS": 0,
"cost": 0,
"residuals": {
"l1Norm": 0,
"linfNorm": 0,
"norm": 0,
"dataRef": [0, 0, 0],
"dimension": 3,
"naN": false,
"infinite": false,
"minIndex": 2,
"maxIndex": 2,
"minValue": 0,
"maxValue": 0
}
}
예측 프로시저는 주어진 입력에 대한 y 값을 예측하는 데 사용할 수 있습니다. 위 예를 사용하여 다음 매개변수를 사용하여 예측 프로시저를 실행합니다. value=4 yPropName=temperature 반환 값은 194.
미분 프로시저를 사용하여 특정 지점의 변화율을 계산할 수 있습니다. 위 예를 사용하여 다음 매개변수를 사용하여 미분 프로시저를 실행합니다. value=2 yPropName=temperature 반환 값은 41.
적분 프로시저를 사용하면 두 점 사이의 곡선 아래 면적을 계산할 수 있습니다. 위 예제를 사용하여 다음 매개변수를 사용하여 적분 프로시저를 실행합니다. from=1, to=3글렌데일 yPropName=temperature 반환 값은 143.33333333333331.
자세한 내용은 Apache 수학 다항식 문서.
연령별 경로 예측
PredictPathsByAge 활동 패턴은 경로의 다음 위치를 예측합니다. 이 패턴은 일반적으로 최근에 업데이트되지 않은 경로에 사용됩니다. 이 활동 패턴은 일련의 경로를 처리하여 일부 경로가 업데이트되지 않은 경로에 대한 예측을 생성합니다. 만료 시간.
PredictPathsByAge 활동 패턴에는 다음과 같은 필수 구성 속성이 있습니다.
- 만료 시간 – 예측이 이루어지는 가장 늦은 시간.
- 마지막 다리만 – true인 경우 경로의 마지막 두 항목을 기준으로 속도 계산을 수행해야 함을 나타내는 부울 값입니다. false인 경우 경로의 첫 번째 항목과 마지막 항목을 기준으로 속도가 계산됩니다.
- 아웃바운드 부동산 – 출력 정보를 넣을 속성의 이름입니다.
- 경로 기록 – 위치를 예측할 경로 기록을 포함하는 VAIL 표현식입니다.
- 새로 고침 간격 – 지역 집합을 새로 고칠 간격(예 30초).
또한, 다음과 같은 선택적 구성 속성이 제공될 수 있습니다.
- 경로 속성 – 추적된 경로가 발견된 속성의 이름입니다. 기본값은 다음과 같습니다.
trackedPath. - 예측 시간 – 예측된 위치에 대해 제공할 시간입니다. 기본값은 다음과 같습니다.
now(). - 추적 지역 필터 – 집합을 제한하는 표현식
TrackingRegions예측 위치의 추적 영역으로 고려됩니다. 이 표현식은 고려할 영역을 선택하는 데 사용되는 WHERE 절에 추가됩니다. 없거나 비어 있는 경우, 모든TrackingRegions네임스페이스에서 고려됩니다. 다음을 참조하세요. 추적 지역 정보 인간을 빌드 및 예측 경로 활동 패턴
PredictPositionsByAge 활동 패턴은 종종 다음 이후에 발견됩니다. 누락 활동 패턴은 일정 기간 동안 업데이트가 발생하지 않았을 때 위치를 예측하는 데 사용됩니다. 경로 구축 및 예측 위치 업데이트 이외의 다른 것에 의해 호출되는 활동 패턴(일반적으로 시간 경과를 통해) 누락 활동 패턴).
순서
프로시저 활동 패턴은 프로시저를 실행하고 결과를 내보냅니다.
프로시저 활동 패턴에는 필수 구성 속성이 하나만 있습니다.
- 순서 – 실행할 프로시저의 이름.
프로시저 이름만 지정된 경우, 프로시저는 정확히 하나의 매개변수(인바운드 이벤트)를 가져야 하며, 프로시저의 반환 값이 아웃바운드 이벤트로 사용됩니다. 이 동작은 아래에 설명된 선택적 매개변수를 사용하여 여러 가지 방법으로 변경할 수 있습니다. 이러한 선택적 매개변수를 사용하면 프로시저에 추가 매개변수를 지정하고 반환 동작을 재정의하여 인바운드 이벤트를 완전히 대체하는 대신, 반환 값이 출력 목적으로 인바운드 이벤트에 첨부되도록 할 수 있습니다.
절차 활동 패턴에는 다음과 같은 선택적 구성 매개변수가 있습니다.
- 매개 변수 – 프로시저에 대한 매개변수를 생성하기 위해 인바운드 이벤트에 대해 평가되는 VAIL 표현식 배열입니다. 지정하지 않으면 프로시저는 인바운드 이벤트를 유일한 매개변수로 전달받습니다.
- 반환 동작 – 다음 세 가지 옵션 목록에서 선택:
- 반환 값을 아웃바운드 이벤트로 사용 – 프로시저 호출 결과를 아웃바운드 이벤트로 내보냅니다. 이는 옵션을 선택하지 않은 경우의 기본 동작입니다.
- returnProperty에 반환 값 첨부 – 프로시저 결과를 포함하는 추가 속성과 함께 원래 이벤트를 내보냅니다.
- 반환 값 무시 – 원래 인바운드 이벤트를 아웃바운드 이벤트로 내보냅니다(변경되지 않음)
- 반환 속성 – 아웃바운드 이벤트에서 프로시저 결과를 할당할 속성의 이름입니다. 참고: 이 속성은 returnBehavior에 대해 "returnProperty에 반환 값 연결"을 선택한 경우에만 사용됩니다.
- 개요 – 프로시저 출력의 스키마를 정의하는 유형의 이름입니다. 이는 다운스트림 이벤트 속성 제안을 채우는 데 사용됩니다.
- 수입 – 참조되는 리소스 목록 매개 변수 수입해야 합니다.
- 파티션키 – 프로시저 호출을 라우팅하는 데 사용되는 파티션 키를 계산하는 데 사용되는 VAIL 표현식입니다. 이는 상태 저장 서비스에 대한 개인 프로시저를 호출할 때만 필요합니다.
- 재전송 오류 – 오류 발생 후 신뢰할 수 있는 이벤트를 다시 전달해야 하는지 여부를 결정하는 데 사용되는 프로시저의 이름입니다. 프로시저가 반환되는 경우
true, 해당 오류는 일시적인 것으로 간주되어 다시 전달됩니다. 이 절차에는 원래 이벤트와 발생한 예외라는 두 가지 매개변수가 제공됩니다.
프로시저 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 모든 성공적인 요청의 결과입니다.
- 오류 발생 – 실패한 요청에 대한 컨텍스트를 제공하는 이벤트입니다. 이 이벤트의 속성은 다음과 같습니다.
- 에러 코드 (문자열) – 생성된 예외와 연결된 고유한 "코드"입니다.
- 에러 메시지 (문자열) – 생성된 예외에 대한 오류 메시지 텍스트입니다.
- 오류 매개변수 (String[]) – 오류 메시지에서 대체 값을 바꾸는 데 사용되는 매개변수입니다.
- 트리거링 이벤트 (개체) – 예외를 발생시킨 이벤트.
게시 서비스
PublishToService 활동 패턴은 서비스의 인바운드 이벤트 유형에 이벤트를 게시합니다.
- 서비스 – 인바운드 이벤트가 전송될 서비스입니다.
- 이벤트 유형 이름 – 이 이벤트를 처리할 서비스의 인바운드 이벤트 유형의 이름
PublishToService에는 선택적 구성 속성도 포함되어 있습니다.
- 처리된절 – 이 게시의 원격 대상을 설명하는 데 처리된 절이 사용됩니다.
소스에 게시
PublishToSource 활동 패턴은 소스에 인바운드 이벤트를 게시합니다.
PublishToSource 활동 패턴에는 다음과 같은 구성 속성이 포함되어 있습니다.
- – 인바운드 이벤트가 전송될 소스의 이름입니다.
- 소스 구성 – 지정된 소스에 게시할 때 사용되는 구성 객체입니다. 이는 VAIL의 PUBLISH TO SOURCE의 USING 절로 변환됩니다.
PublishToSource 활동 패턴에는 다음과 같은 선택적 구성 속성이 있습니다.
- 재전송 오류 – 오류 발생 후 신뢰할 수 있는 이벤트를 다시 전달해야 하는지 여부를 결정하는 데 사용되는 프로시저의 이름입니다. 프로시저가 반환되는 경우
true, 해당 오류는 일시적인 것으로 간주되어 다시 전달됩니다. 이 절차에는 원래 이벤트와 발생한 예외라는 두 가지 매개변수가 제공됩니다. - 재시도 – 실패하기 전에 소스에 게시를 시도하는 횟수입니다. 모든 재시도는 즉시 실행됩니다. 기본값은 1입니다.
PublishToSource 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 모든 성공적인 요청의 결과입니다.
- 오류 발생 – 실패한 요청에 대한 컨텍스트를 제공하는 이벤트입니다. 이 이벤트의 속성은 다음과 같습니다.
- 에러 코드 (문자열) – 생성된 예외와 연결된 고유한 "코드"입니다.
- 에러 메시지 (문자열) – 생성된 예외에 대한 오류 메시지 텍스트입니다.
- 오류 매개변수 (String[]) – 오류 메시지에서 대체 값을 바꾸는 데 사용되는 매개변수입니다.
- 트리거링 이벤트 (개체) – 예외를 발생시킨 이벤트.
주제 게시
PublishToTopic 활동 패턴은 주제에 인바운드 이벤트를 게시합니다.
- 화제 – 인바운드 이벤트가 전송될 토픽입니다. 토픽 문자열 앞에는 슬래시(/) 문자를 붙여야 합니다.
PublishToTopic에는 사용자가 카탈로그 이벤트의 게시자가 될 수 있도록 하는 다음과 같은 선택적 구성 속성도 포함되어 있습니다.
- 목록 – 작업이 게시자가 될 이벤트를 정의하는 카탈로그를 식별하는 이름입니다.
- event – 이 작업에서 이벤트를 게시할 이벤트 유형의 이름입니다.
- 처리된절 – 이 게시의 원격 대상을 설명하는 데 처리된 절이 사용됩니다.
율
Rate Activity Pattern은 특정 시간 윈도우에서 발생하는 모든 이벤트의 개수를 계산합니다. 시간 윈도우가 끝나면 Rate는 해당 윈도우에서 수신된 이벤트의 초당 발생률을 출력합니다. 이 발생률은 마지막 발생 이후 발생한 이벤트 수를 outputFrequency의 초 수로 나눈 값입니다.
비율 활동 패턴에는 필수 속성이 하나 있습니다.
- 출력 빈도 – 비율을 얼마나 자주 내보내야 하는지 나타내는 간격 문자열입니다.
비율 활동 패턴에는 하나의 선택적 속성이 있습니다.
- 속도 간격 – 이벤트 발생률을 측정할 간격을 지정합니다(예: 1분당 이벤트 또는 10초당 이벤트). 기본값은 1초입니다.
권하다
추천 활동 패턴은 몇 가지 입력 기준에 따라 추천 목록을 생성합니다. 추천은 각 후보가 추천 대상과 얼마나 유사한지 판단하는 절차를 사용하며, 그 결과는 가장 유사한 후보의 제한된 부분집합입니다.
추천 활동 패턴에는 다음과 같은 필수 구성 속성이 포함되어 있습니다.
- 후보 유형 – 추천 활동에서 출력되는 결과의 유형입니다.
추천 활동 패턴에는 다음과 같은 선택적 구성 속성도 포함되어 있습니다.
- 수입 – 이 활동을 위해 가져올 리소스 목록
- 추천절차 – 권장 사항을 생성하기 위해 실행할 프로시저의 이름입니다. 이 값을 지정하지 않으면 기본 권장 사항(추천.기본 추천)이 사용됩니다. 이 절차에는 다음 서명이 있어야 합니다.
procedureName(matchDirectives Object, pattern Object, candidateType String, matchType String) - 매치디렉티브 – 추천 절차에 필요한 추가 정보가 포함된 객체입니다. 여기에는 다음이 포함됩니다.
- 속성 제외: 추천자가 무시할 속성입니다.
- 최대 거리: 추천된 매치와 후보자가 서로 떨어져 있을 수 있는 최대 거리.
- 최대 추천 이 작업에서 반환되는 최대 추천 개수입니다. 기본값은 10입니다.
- 매치타입 – 추천을 평가할 입력 객체의 유형입니다. 지정하지 않으면 candidateType과 동일한 것으로 간주됩니다.
- 반환 동작 – 다음 세 가지 옵션 목록에서 선택:
- 반환 값을 아웃바운드 이벤트로 사용 – 추천 결과를 아웃바운드 이벤트로 내보냅니다. 옵션을 선택하지 않으면 이 동작이 기본으로 적용됩니다.
- returnProperty에 반환 값 첨부 – 추천 결과가 포함된 추가 속성과 함께 원래 이벤트를 내보냅니다.
- 반환 속성 – 아웃바운드 이벤트에서 프로시저 결과를 할당할 속성의 이름입니다. 참고: 이 속성은 returnBehavior에 대해 "returnProperty에 반환 값 연결"을 선택한 경우에만 사용됩니다.
협업 인스턴스가 다음으로 업데이트되었습니다.
{
"id": "<collaboration id>",
"status": "active",
"name": "<app name>",
"results": {
"<recommend task name>": {
"recommendations": "<array of computed recommendations>"
}
}
}
RecordEvent
RecordEvent 활동 패턴은 이벤트 원장의 이벤트 유형 인스턴스를 다음의 일부로 기록합니다. Vantiq 고급 이벤트 브로커이벤트 스트림에 RecordEvent 활동을 연결하여 구독자가 본 모든 이벤트를 기록하거나, 이벤트를 카탈로그에 게시하는 활동에 RecordEvent를 연결하여 로컬 네임스페이스에서 게시한 모든 이벤트를 기록합니다.
RecordEvent 활동 패턴에는 다음과 같은 필수 구성 속성이 있습니다.
- 카탈로그 이름 – 이벤트를 정의하는 카탈로그를 식별하는 이름입니다.
- 이벤트 이름 – 이벤트를 기록해야 하는 지정된 카탈로그의 이벤트 유형의 이름입니다.
특정 이벤트 유형에 대한 네임스페이스의 원장을 보려면 카탈로그 창을 열고 이벤트 유형 옆에 있는 책 아이콘을 클릭합니다.
댓글
응답 활동 패턴은 호출자에게 응답을 보내는 데 사용됩니다. Event.request 현재 이벤트 처리를 트리거했습니다. 처리 중인 이벤트가 이러한 방식으로 전송되지 않았다면 이는 무응답(no-op)입니다.
응답 활동 패턴에는 다음과 같은 필수 구성 속성이 있습니다.
- 응답 – 결과가 응답 값으로 전송되는 VAIL 표현식입니다.
응답 활동 패턴에는 다음과 같은 선택적 구성 속성도 포함되어 있습니다.
- 수입 – 참조되는 리소스 목록 응답 가져와야 하는 표현식입니다.
문서에서 TensorFlow 모델 실행
TensorFlow, TensorFlow 로고 및 관련 상표는 Google Inc.의 상표입니다.
이 활동 패턴은 설치 시 구성 가능한 리소스 소비 한도에 의해 제한될 수 있습니다. 다음을 참조하세요. 운영 제한 를 참조하세요
이미지에서 TensorFlow 모델 실행. 이 작업은 입력 이벤트가 문서인 경우에 적합합니다.
이미지에서 TensorFlow 모델 실행
이 활동 패턴은 설치 시 구성 가능한 리소스 소비 한도에 의해 제한될 수 있습니다. 다음을 참조하세요. 운영 제한 를 참조하세요
임시 이미지에서 TensorFlow 모델 실행
이 활동 패턴은 설치 시 구성 가능한 리소스 소비 한도에 의해 제한될 수 있습니다. 다음을 참조하세요. 운영 제한 를 참조하세요
RunTensorFlowModelOnImage, RunTensorFlowModelOnTempImage 및 RunTensorFlowModelOnDocument 작업은 TensorFlow 모델을 통해 분석을 수행하는 데 사용됩니다. RunTensorFlowModelOnImage는 입력 이벤트가 system.images 리소스인 RunTensorFlowModelOnDocument는 입력 이벤트가 다음을 나타낼 때 사용됩니다. document 리소스 및 RunTensorFlowModelOnTempImage는 입력 이벤트가 출력을 나타낼 때 사용됩니다. 비디오 소스. 그 외에는 동일합니다. 이 섹션에서는 RunTensorFlowModelOnImage를 참조합니다.
TensorFlow 모델은 다양한 용도로 사용할 수 있습니다. Vantiq 시스템에서 TensorFlow 모델을 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요. 이미지 처리 가이드, 특히 이미지 분석 안내
RunTensorFlowModelOnImage 및 RunTensorFlowModelOnDocument 활동 패턴은 다음 유형의 TensorFlow 모델을 실행하도록 설계되었습니다. tensorflow/plain이러한 모델은 Vantiq가 모델의 의미를 이해하지 못하는 모델입니다. Vantiq는 이러한 이해 없이 실행되므로, 이러한 모델을 사용하려면 모델의 입력 및 출력 요구 사항에 대한 심층적인 이해와 호출 애플리케이션이 모델과 하위 수준에서 상호 작용해야 합니다. 이에 대한 설명은 다음에서 확인할 수 있습니다. "일반" TensorFlow 모델 섹션. 이 활동 패턴을 사용하는 사용자는 해당 섹션에 익숙하다고 가정합니다.
대조적으로, 예를 들어 달릴 때, YOLO 모델Vantiq는 이러한 모델에 대한 이해를 활용하여 매개변수를 사전 및 사후 처리하여 의미적으로 관련성 있는 인터페이스를 제공할 수 있습니다. 다른 유형의 TensorFlow 모델은 다음을 사용하여 호출할 수 있습니다. TensorFlow 모델 실행 활동 패턴. 이러한 경우 호출자는 Vantiq가 이러한 모델 유형 의미 체계를 이해하는 이점을 얻지 못합니다.
The TensorFlow 모델 실행 활동 패턴은 모델에 대한 입력 텐서를 지정해야 하며, 출력 이벤트에는 모든 출력 텐서 목록이 포함됩니다. 이러한 입력 및 출력 텐서는 사용하는 모델에 따라 다르지만, 호출자는 크기가 상당히 클 수 있다는 점을 알아야 합니다. 또한, 추가 작업이 필요한 경우가 많습니다. 해석 – 출력 텐서를 걸어 해당 방향으로 돌립니다. 원료 더 소비하기 쉬운 형태로.
RunTensorFlowModelOnImage 및 RunTensorFlowModelOnDocument 활동 패턴에는 다음과 같은 구성 속성이 포함되어 있습니다.
- 입력텐서이름 – 입력 이벤트를 구성하는 이미지(또는 문서)와 연결할 텐서의 이름입니다.
- 모델 – 실행할 모델.
위의 두 속성은 필수입니다. 선택 속성이 하나 더 있습니다.
- otherInputValues – 각 속성이 모델에 대한 추가 입력 텐서를 설명하는 VAIL 객체입니다. 속성 이름은 텐서 이름이며, 각 속성 값은 다음 두 속성을 포함해야 합니다.
- tensorType – 생성할 텐서의 유형
- value – 제공될 값.
필요한 매개변수만 사용하면 작업 사양은 다음과 같습니다.

선택적 매개변수를 채우기로 선택하는 경우 otherInputValues, 우리는 다음과 같은 것을 제공할 수 있을 것입니다.

(이러한 예는 다음에서 제공된 예와 유사합니다. 이미지 처리 가이드. 참조하십시오 "일반" TensorFlow 모델 (자세한 내용은)
작업의 출력 이벤트에는 두 가지 속성이 포함됩니다.
- 대상 - 작업에 대한 입력이었던 이미지
- 결과 – 분석 결과입니다.
results속성에는 다음과 유사한 객체가 포함됩니다.otherInputValues매개변수, 속성이 출력 텐서 이름인 객체, 각 값에 두 개의 속성이 포함됨:tensorTypevalue.
예를 들어, 자동차 이미지를 실행하면 자동차 식별 모델은 다음과 같은 결과를 생성할 수 있습니다.
{
"target":{
"name": "mycar",
"fileType": "image/jpeg",
"contentSize": 71631,
...
},
"results": {
modelName: { tensorType: "string", value: "Fusion" },
manufacturer: { tensorType: "string", value: "Ford" }
}
}
다른 곳에서 언급했듯이, results 이렇게 간단하고 간결한 구조는 비정형적입니다. 더 일반적인 결과는 후처리 단계에서 결과를 합성하는 데 사용되는 큰 실수 배열입니다. YOLO v3 모델을 예로 들어, 마치 이미지에서 tensorflow/plain 모델, 결과는 다음과 같습니다. float 10,000개 이상의 예측을 담은 텐서로, 각 예측은 실수 배열입니다.
TensorFlow 모델은 Vantiq 제품의 일부로 제공되지 않습니다.
Tensor에서 TensorFlow 모델 실행
이 활동 패턴은 설치 시 구성 가능한 리소스 소비 한도에 의해 제한될 수 있습니다. 다음을 참조하세요. 운영 제한 를 참조하세요
RunTensorFlowModelOnTensors 작업은 TensorFlow 모델을 통해 분석을 수행하는 데 사용됩니다. RunTensorFlowModelOnTensors는 입력 이벤트가 이미지가 아닌 데이터로 구성될 때 사용됩니다. 이 데이터는 일반적으로 센서에서 수집된 수치 데이터입니다.예, 특정 조건을 찾거나) 다른 입력에서 찾을 수 있습니다.
TensorFlow 모델은 다양한 용도로 사용할 수 있습니다. Vantiq 시스템에서 TensorFlow 모델을 사용하는 방법에 대한 자세한 내용은 다음을 참조하세요. 이미지 처리 가이드, 특히 이미지 분석 안내
RunTensorFlowModelOnTensors 활동 패턴은 다음 유형의 TensorFlow 모델을 실행하도록 설계되었습니다. tensorflow/plain이러한 모델은 Vantiq가 모델의 의미를 이해하지 못하는 모델입니다. Vantiq는 이러한 이해 없이 실행되므로, 이러한 모델을 사용하려면 모델의 입력 및 출력 요구 사항에 대한 심층적인 이해와 호출 애플리케이션이 모델과 하위 수준에서 상호 작용해야 합니다. 이에 대한 설명은 다음에서 확인할 수 있습니다. "일반" TensorFlow 모델 섹션. 이 활동 패턴을 사용하는 사용자는 해당 섹션에 익숙하다고 가정합니다.
대조적으로, 예를 들어 달릴 때, YOLO 모델Vantiq는 이러한 모델에 대한 이해를 활용하여 매개변수를 사전 및 사후 처리하여 의미적으로 관련성 있는 인터페이스를 제공할 수 있습니다. 다른 유형의 TensorFlow 모델은 다음을 사용하여 호출할 수 있습니다. TensorFlow 모델 실행 활동 패턴. 이러한 경우 호출자는 Vantiq가 이러한 모델 유형 의미 체계를 이해하는 이점을 얻지 못합니다.
The TensorFlow 모델 실행 활동 패턴은 모델에 대한 입력 텐서를 지정해야 하며, 출력 이벤트에는 모든 출력 텐서 목록이 포함됩니다. 이러한 입력 및 출력 텐서는 사용하는 모델에 따라 다르지만, 호출자는 크기가 상당히 클 수 있다는 점을 알아야 합니다. 또한, 추가 작업이 필요한 경우가 많습니다. 해석 – 출력 텐서를 걸어 해당 방향으로 돌립니다. 원료 더 소비하기 쉬운 형태로.
RunTensorFlowModelOnTensors 활동 패턴에는 다음과 같은 구성 속성이 포함되어 있습니다.
- 모델 – 실행할 이름 모델입니다.
- 입력값 – 각 속성이 모델에 대한 추가 입력 텐서 값을 설명하는 VAIL 객체입니다. 속성 이름은 텐서 이름이며, 각 속성 값은 다음 두 속성을 포함해야 합니다.
- tensorType – 생성할 텐서의 유형
- value – 제공될 값.
이러한 매개변수를 사용하면 작업 사양은 다음과 같습니다.

이 경우 우리는 다음과 같은 모델을 사용하고 있습니다. 엔진 분석 엔진을 모니터링하는 센서에서 발생하는 이벤트를 평가합니다. 이 모델의 입력 텐서는 두 가지입니다. 뜨다 텐서, 명명됨 s t (에 대한 s오줌을 누고 t온도). 따라서 inputValues 매개변수에는 이름이 지정된 속성이 있습니다. s t각각은 다음과 같습니다 tensorType of 뜨다, 수신 이벤트에서 가져온 값을 사용합니다. 모델은 감지된 오류나 동작 이상을 보고합니다.
작업의 출력 이벤트에는 다음이 포함됩니다. results 재산:
- 결과 – 분석 결과입니다.
results속성에는 다음과 유사한 객체가 포함됩니다.inputValues매개변수, 속성이 출력 텐서 이름인 객체, 각 값에 두 개의 속성이 포함됨:tensorTypevalue.
예를 들어, 일부 센서 보고서를 통해 실행 엔진 분석 모델은 다음과 같은 결과를 생성할 수 있습니다.
{
...
"results": {
faultsDetected: { tensorType: "integer", value: 0 },
behavior: { tensorType: "integer", value: [100, 127] }
}
}
이 경우, 엔진 분석 모델은 유형 0의 오류에 대한 오류 분석과 100 및 127 값을 갖는 일부 동작 보고서를 반환했습니다. 이러한 유형의 보고서는 드물지 않습니다. 이러한 값의 의미를 결정하기 위해 모델 의미론을 이해하는 것은 앱 개발자의 몫입니다.
다른 곳에서 언급했듯이, results 이처럼 간결한 구조는 일반적이지 않을 수 있습니다. 스코어링 모델의 경우, 일반적으로 특정 거래를 평가하기 때문에 상대적으로 적은 수의 출력 집합이 정상일 수 있습니다.예엔진의 동작, 사기 탐지를 위한 특정 신용 거래 등)을 고려하므로 많은 양의 데이터가 필요하지 않습니다. 그러나 다른 모델은 더 많은 양의 데이터를 반환할 수 있습니다.
TensorFlow 모델은 Vantiq 제품의 일부로 제공되지 않습니다.
견본
샘플 활동 패턴은 다운스트림 작업에 더 적은 이벤트를 생성하는 데 사용됩니다.
샘플 활동 패턴에는 다음과 같은 필수 구성 속성이 있습니다.
- 확률 – 모든 사건을 발생시킬 확률. 이 확률은 각 사건에 대해 독립적으로 계산됩니다. 0과 1 사이의 실수여야 합니다.
샘플 활동 패턴에는 다음과 같은 선택적 구성 속성이 있습니다.
- 간격 – 다음과 같은 간격 문자열
1 secondor10 minutesmaxEventsPerInterval 제한이 적용되어야 하는 기간을 정의합니다. - 최대 이벤트당 간격 – 간격 내에서 작업을 통해 허용되는 최대 이벤트 수입니다.
- 방출AtLeastOnce – true인 경우, 무작위 확률로 이벤트가 선택되지 않더라도 간격당 최소한 하나의 이벤트가 발생하도록 보장합니다.
유형에 저장
SaveToType 액티비티 패턴은 인바운드 이벤트를 특정 타입에 저장하는 데 사용됩니다. 각 인바운드 이벤트는 구성에 따라 insert 또는 upsert를 통해 데이터베이스에 기록됩니다.
SaveToType 활동 패턴에는 다음과 같은 구성 속성이 포함되어 있습니다.
- 유형 – 데이터가 저장될 유형의 이름입니다. 인바운드 이벤트에는 지정된 유형의 스키마와 일치하는 스키마가 있어야 합니다.
- 업서트 – upsert를 선택하면 이벤트 저장 시 insert 대신 upsert를 사용해야 합니다. upsert는 지정된 유형에 자연 키가 있는 경우에만 사용할 수 있습니다.
SaveToType 액티비티 패턴은 구성된 유형에 삽입 또는 업데이트 이벤트를 생성하며, 이 이벤트는 앱에서 다음 다운스트림 작업을 트리거하는 데 사용됩니다. 구성된 유형을 삽입하거나 업데이트하는 다른 리소스가 있는 경우, 해당 작업도 앱에서 다운스트림 작업을 트리거하는 이벤트를 생성합니다.
그룹별로 분할
그룹별 분할은 서비스 상태를 독립적인 "그룹"으로 분할합니다. 각 그룹은 각 인바운드 이벤트에 대해 평가되는 표현식을 기준으로 키가 지정됩니다. 모든 상태 기반 다운스트림 작업은 각 파티션에서 독립적으로 작동합니다. 분할 작업은 상태 비저장 작업에 영향을 미치지 않습니다.

이 예에서 "임계값" 작업은 분할되어 각 고유 그룹 키에 대해 독립적인 상태를 유지합니다. 다른 모든 작업은 분할을 무시하고 평소처럼 작동합니다.
SplitByGroup 작업은 다른 SplitByGroup 작업 아래에 사용될 수 없습니다. 두 번째 SplitByGroup이 필요한 경우, 첫 번째 SplitByGroup을 사용하는 앱은 두 번째 SplitByGroup을 포함하는 다른 앱이나 스트림에 이벤트를 게시해야 합니다.
그룹별 활동 패턴에 대한 필수 구성 매개변수는 하나뿐입니다.
- groupBy – 이벤트에 대한 그룹 키를 결정하는 각 인바운드 이벤트에 대해 평가되는 VAIL 표현식입니다.
프롬프트 제출
프롬프트 제출 활동은 지정된 프롬프트를 제출하는 데 사용됩니다. LLM. 결과는 String 아웃바운드 이벤트의 지정된 속성에서 반환되는 값입니다. 내장된 LLM 서비스.
제출 프롬프트 활동에는 다음과 같은 필수 구성 속성이 있습니다.
- llm – 이름 생성적인 LLM 프롬프트를 처리하는 데 사용됩니다.
- 신속한 – 프롬프트를 계산하는 데 사용되는 VAIL 표현식입니다. 표현식은 문자열 또는
io.vantiq.ai.ChatMessage정렬.
주어진 표현식에 의해 생성된 프롬프트는 처리를 위해 지정된 LLM에 직접 전송됩니다. 추가적인 컨텍스트나 처리는 수행되지 않습니다. 결과는 아웃바운드 이벤트의 지정된 속성에 저장됩니다.
제출 프롬프트 활동에는 다음과 같은 선택적 구성 속성이 있습니다.
- 반환 속성 – 응답을 저장할 아웃바운드 이벤트의 속성 이름입니다. 기본값은 다음과 같습니다.
llmResponse지정되지 않은 경우. - 대화 사용 – 프롬프트 제출 시 작업이 대화에 참여해야 하는지 여부를 나타내는 부울 값입니다. 이 옵션을 사용하려면 활성 협업이 필요합니다. 기본적으로 협업 ID가 대화 ID로 사용되므로 여러 SubmitPrompt 작업이 동일한 대화에 참여할 수 있습니다(동일한 협업 인스턴스에서 작동하는 경우).
- 대화 이름 – 작업이 참여해야 하는 대화의 이름을 나타내는 문자열입니다. 지정하지 않으면 협업의 기본 대화가 사용됩니다. 이 옵션을 사용하면 두 개 이상의 작업이 기본 협업 전체 대화와 별도로 협업 인스턴스 내에서 대화 상태를 공유할 수 있습니다. 대화 이름은 협업의 속성에 선언해야 합니다. SubmitPrompt 작업에 별도의 대화 상태가 필요한 경우 대화 이름을 사용하세요.
self이렇게 하면 해당 작업과 관련된 비공개 대화가 생성됩니다. - 응답 속성 – "속성"을 생성하는 데 사용되는 VAIL 표현식
Object대화에서 녹음될 때 응답에 첨부됩니다. 무시하세요.useConversationiffalse. - 검색을 – LLM이 프롬프트에 응답할 때 사용할 수 있는 도구 배열을 생성하는 데 사용되는 VAIL 표현식입니다. 배열의 각 항목은 VAIL 프로시저 또는 서비스에 대한 ResourceReference여야 합니다(예:
"services/com.mycompany.MyService") 또는 인스턴스io.vantiq.ai.FunctionDescriptor스키마 유형. 다음을 참조하세요. LLM 서비스 자세한 내용은 를 참조하세요. 도구는 때때로 함수라고도 합니다. - 런타임 구성 – LLM 구성을 나타내는 객체를 생성하는 VAIL 표현식입니다. 이 표현식이 제공되면 이 구성은 현재 LLM 구성과 결합된 후 SubmitPrompt 호출에 적용됩니다.
- 함수 승인자 – LLM 도구 실행을 승인하는 데 사용되는 프로시저의 이름입니다. 프로시저 서명은 다음과 같아야 합니다. (문자열 이름, 객체 인수) 명명된 도구의 실행을 허용(참) 또는 거부(거짓)해야 하는지 여부를 부울 값으로 반환합니다. 다음을 참조하세요. LLM 참조 가이드 자세한 내용은.
- 기능 - (사용되지 않는,를 참조하십시오
tools속성 대신) LLM이 프롬프트에 응답할 때 사용할 수 있는 함수 배열을 생성하는 데 사용되는 VAIL 표현식입니다.
제출 프롬프트 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 모든 성공적인 요청의 결과입니다.
- 오류 발생 – 실패한 요청에 대한 컨텍스트를 제공하는 이벤트입니다. 이 이벤트의 속성은 다음과 같습니다.
- 에러 코드 (문자열) – 생성된 예외와 연결된 고유한 "코드"입니다.
- 에러 메시지 (문자열) – 생성된 예외에 대한 오류 메시지 텍스트입니다.
- 오류 매개변수 (String[]) – 오류 메시지에서 대체 값을 바꾸는 데 사용되는 매개변수입니다.
- 트리거링 이벤트 (개체) – 예외를 발생시킨 이벤트.
임계값
임계값은 임계값을 넘는 순차적 이벤트를 감지하는 데 사용할 수 있습니다. 임계값은 조건으로 표현되며, 임계값을 넘는 것은 순차적 이벤트에 대해 조건이 서로 다른 값으로 평가됨으로써 결정됩니다. 예를 들어, 센서에서 온도 측정값이 유입되고 온도가 100도를 초과하는 시점을 감지하려는 경우, 임계값 조건은 다음과 같습니다. event.temp > 100한 이벤트의 온도 값이 90도이고, 다음 이벤트의 온도 값이 101도이면 임계값이 트리거됩니다. 마찬가지로, 처음에 온도가 101도였다가 새로운 값이 90도이면 임계값이 트리거됩니다.
임계값 활동 패턴에는 필수 구성 속성이 하나만 포함됩니다.
- 조건 – 임계값 조건을 표현하는 VAIL 부울 표현식입니다. 조건은 다음과 같은 인바운드 이벤트의 모든 속성을 참조할 수 있습니다.
event.propA > event.someOtherProp.
임계값에는 다음과 같은 선택적 구성 속성도 포함되어 있습니다.
- 초기화조건 – 두 가지 옵션
- VAIL 조건식: 임계값 작업이 처음 실행되어 초기 상태를 결정할 때 실행되는 부울 값으로 평가되는 VAIL 표현식입니다.
- 비주얼 필터: 사용자가 일련의 드롭다운과 텍스트 필드를 사용하여 조건을 생성할 수 있는 시각적 인터페이스입니다. 시각적 필터는 조건을 생성하는 더욱 사용자 친화적인 방법입니다.
initializeCondition이 지정되지 않으면 첫 번째 이벤트는 임계값 초과를 트리거하지 않습니다.
- 기간 내 – 두 개의 연속된 이벤트가 얼마나 떨어져 있어도 임계값을 트리거할 수 있는지를 나타내는 기간입니다. 두 개의 이벤트가 더 멀리 떨어져 발생하면 임계값을 트리거하지 않습니다.
- 방향 – 다음 값 중 하나: 참된, 그릇된및 두임계값 이벤트를 트리거하기 위해 임계값을 초과한 후 조건이 평가되어야 하는 부울 값을 지정하는 데 사용됩니다. 예를 들어, 온도 측정값이 100을 초과할 때만 영향을 미치고, 그 아래로 떨어질 때는 영향을 미치지 않는 경우, 방향 값을 다음과 같이 사용합니다. 참된 조건과 함께
event.temp > 100이전 이벤트에서 온도가 101이었고 온도 값이 90인 새 이벤트가 발생한 경우, 조건 평가가 참에서 거짓으로 변경되어 거짓 방향이 되므로 새 이벤트는 임계값을 초과하지 않습니다. 방향 값은 두 임계값을 어느 방향으로든 초과하면 이벤트가 발생함을 나타냅니다. 조건이 주어진 몇 가지 추가 예제는 다음과 같습니다.event.temp > 100다음 표를 고려해 보세요. 여기서 온도는 두 개의 연속적인 이벤트에 걸쳐 x -> y로 변합니다.

- 연속적인 읽기 – 임계값을 설정하기 위해 모든 측정값이 동일한 조건 값을 가져야 하는 순차적인 측정값을 나타내는 선택적 매개변수입니다. 예를 들어 (동일한 온도 조건 사용 시) overConsecutiveReadings가 4이고 온도 측정값이 90에서 101, 104로, 그리고 다시 98로 상승하는 경우, 100을 초과하는 측정값이 두 개뿐이므로 임계값이 설정되지 않습니다.
- 수입 – 참조되는 리소스 목록 조건 or 초기화조건 가져와야 하는 표현식입니다.
임계값 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – "임계값" 조건이 초과되는 이벤트입니다.
- 재설정 – 임계값 검사를 '재설정'하는 이벤트입니다.
시차
TimeDifference는 두 이벤트 사이의 시간을 추적합니다. 이전 이벤트 이후의 시간과 이전 이벤트 전체를 현재 이벤트에 더합니다. 첫 번째 수신 이벤트에 대해서는 이벤트가 출력되지 않습니다. 이전 이벤트가 없다고 가정하면 출력은 다음과 같습니다.
인바운드:
{
"property": "someValue",
"order": 1
}
배 밖으로:
아무것도 없습니다. 이전에 이벤트가 없었기 때문입니다.
3초 후:
인바운드:
{
"property": "anotherValue",
"order": 2
}
배 밖으로:
{
"property": "anotherValue",
"order": 2,
"timingData": {
"timeDifference": 3000,
"prevEvent": {
"property": "someValue",
"order": 1
}
}
}
1.5초 후:
인바운드:
{
"order": 3,
"key": "lock"
}
배 밖으로:
{
"order": 3,
"key": "lock",
"timingData": {
"timeDifference": 1500,
"prevEvent": {
"property": "anotherValue",
"order": 2
}
}
}
TimeDifference 활동에는 필수 매개변수가 하나뿐입니다.
- 아웃바운드 부동산 – 시간 차이가 배치될 속성 이름입니다. 밀리초 단위의 시간 차이는 다음에 배치됩니다.
<outboundProperty>.timeDifference, 그리고 이전 이벤트는 다음에 배치됩니다.<outboundProperty>.prevEvent.
배송조회
추적 활동 패턴은 Vantiq 모바일 앱을 사용하여 한 명 이상의 Vantiq 사용자의 위치를 추적합니다.
추적 활동 패턴에는 다음과 같은 필수 구성 속성이 있습니다.
- 사용자 (Union) – 추적될 유효한 Vantiq 사용자 이름 배열입니다. 이는 실제 vail 표현식 배열이거나 배열로 평가되는 단일 vail 표현식일 수 있습니다(예: 이벤트.사용자 목록).
추적 활동 패턴에는 다음과 같은 선택적 구성 속성이 있습니다.
- 수입 – 이 활동을 위해 가져올 리소스 목록입니다.
- 목적지 (Union: GeoJSON 또는 VAIL 표현식) – 사용자를 추적할 위치입니다. 사용자가 목적지에 도착하면 사용자 추적이 종료되고 다음이 생성됩니다. 도착 이벤트입니다. 지정하지 않으면 협업이 종료될 때까지 사용자가 추적됩니다.
- 수평 (열거형) – 위치 측정 단위를 정의하는 문자열입니다. 'fine' 또는 'coarse'로 설정할 수 있습니다. 기본값은 'fine'이며, 'coarse'보다 더 정확합니다.
- 거리 필터 (실수) – 새로운 위치 측정값을 생성하기 위해 이동한 최소 거리를 미터 단위로 나타낸 숫자입니다. 기본값은 200미터입니다.
- 원하는 정확도 (실수) – 위치 측정의 정확도를 나타내는 미터 단위의 숫자입니다. 기본값은 100미터입니다.
- 목적지 반경 (실제) – 추적된 사용자가 목적지에서 도착 이벤트를 트리거할 수 있는 최대 거리입니다. 기본값은 500미터입니다.
- 폭로 (문자열) – 대상 사용자의 휴대폰에 표시되는 메시지로, 모바일 기기에서 위치 추적 기능을 활성화해야 하는 이유를 설명합니다.
- 핑 간격 – 추적 중인 사용자의 휴대폰에 위치 업데이트를 ping할 빈도를 나타내는 간격 상수입니다. 예: '30분' 또는 '1시간'.
- 웨이 포인트 (Union: ArsWaypoints 배열 또는 VAIL 표현식) – 여정 중 참고할 사항. 사용자가 반지름 경로점의 a 웨이포인트도착 이벤트가 발생합니다. 사용자가 이전에 웨이포인트에 있었고 더 이상 존재하지 않는 경우 반지름 경로점의, 경유지출발 이벤트가 발생합니다.
- name – 경로점의 주제.
- 반지름 – 경유지에 도착하는 것으로 간주될 수 있는 경유지 주변의 반경입니다.
- 웨이 포인트 – 경로점의 GeoJSON 위치.
트랙은 다음과 같은 이벤트 스트림을 생성합니다.
- 도착 (기본값) – 사용자가 도착했을 때 발생하는 이벤트 목적지.
- 사용자 이름: 추적된 사용자의 Vantiq 사용자 이름입니다.
- 목적지: 목적지의 GeoJSON 위치입니다.
- 첫 번째 도착 – 이벤트는 첫 번째로 추적된 사용자가 목적지에 도착하면 도착합니다.
- 사용자 이름: 목적지에 도착한 사용자의 이름입니다.
- 목적지: 목적지의 GeoJSON 위치입니다.
- 웨이포인트도착 – 사용자가 구성된 범위 내에 진입할 때 발생하는 이벤트 반지름 특정한 웨이 포인트.
- 사용자 이름: 추적된 사용자의 Vantiq 사용자 이름입니다.
- 웨이포인트 이름: 경로점의 이름.
- 웨이 포인트: 경로점에 대한 GeoJSON 위치입니다.
- 협동: 이 협업 인스턴스의 고유 ID입니다.
- 경유지출발 – 이전에 사용자가 있었던 경우 발생하는 이벤트 웨이 포인트 더 이상 내에 없습니다 반지름 해당 경로점에 대한.
- 사용자 이름: 추적된 사용자의 Vantiq 사용자 이름입니다.
- 웨이포인트 이름: 경로점의 이름.
- 웨이 포인트: 경로점에 대한 GeoJSON 위치입니다.
- 협동: 이 협업 인스턴스의 고유 ID입니다.
- 최신 정보 – 위치가 업데이트될 때마다 발생하는 이벤트입니다.
- 사용자 이름: 추적된 사용자의 Vantiq 사용자 이름입니다.
- 위치: 사용자의 GeoJSON 위치.
- 마지막 활성: 이 위치 업데이트에 대한 타임스탬프입니다.
- 협업 ID: 이 협업 인스턴스의 고유 ID입니다.
- event – 원래의 수신 이벤트를 내보냅니다.
협업 인스턴스가 다음으로 업데이트되었습니다.
{
"id": "<collaboration id>",
"status": "active",
"name": "<app name>",
"results": {
"<track task name>": {
"arrivedUsers": "<array of username of users that have arrived at the destination>",
"firstUser": "<username of the first user to arrive at the destination>"
}
}
}
움직임 추적
움직임을 추적하다 위치가 있는 것들. 이리, 위치가 있는 것들 출력과 유사한 내용을 갖는 이벤트를 의미합니다. 이미지의 YOLO or 문서에서 YOLO 활동(또는 복사되므로 활동) 좌표 변환 활동). 특히, 다음과 같은 것으로 간주될 수 있는 이벤트 label및 location 객체를 둘러싼 경계 상자에 대한 정보를 포함하는 속성입니다. 위치가 있는 것들 다양한 활동에서 결과가 나올 수 있다는 점을 강조합니다.
모션 추적은 추적된 객체들을 모아 관리합니다. 새로운 객체가 들어올 때마다 매칭 알고리즘과 선택된 모션 임계값을 기반으로 가장 잘 일치하는 객체를 찾습니다. 매칭을 위해서는 두 객체의 레이블이 동일해야 합니다(예 '자동차'). 후보는 레이블 일치도와 최적 적합도, 그리고 선택된 동작 추적 알고리즘을 기반으로 선택됩니다. 적합한 일치 객체가 없으면 추적된 객체 집합에 새 객체를 추가합니다. 일정 시간 동안 누락된 객체는 삭제됩니다.
동작은 다음 중 하나에 의해 결정될 수 있습니다. 중심 or 경계 상자 알고리즘. 앞서 언급했듯이, 두 객체의 레이블은 두 알고리즘 모두에서 동일해야 합니다.
The 중심 이 알고리즘은 물체의 이전 위치 중심에서 물체의 새 위치 중심까지의 거리를 사용하여 두 위치를 비교하여 거리를 계산합니다. 이 알고리즘의 경우, 동작 추적 임계값 허용되는 최대 거리입니다. 예를 들어, 임계값이 10이고 후보 객체의 거리가 20인 경우, 해당 새 객체는 첫 번째 객체에 대한 움직임으로 간주될 수 없습니다. 임계값 미만의 객체는 가능한 일치 항목이며, 가장 짧은 거리가 가장 일치하는 것으로 간주됩니다.
The 경계 상자 알고리즘은 두 경계 상자 사이의 겹침 비율을 비교합니다. 이 알고리즘의 경우, 동작 추적 임계값 동작으로 간주되기 위해 필요한 최소 중첩 비율입니다. 임계값을 초과하는 객체는 가능한 일치로 간주되며, 가장 잘 일치하는 객체는 중첩 비율이 가장 높은 객체입니다.
TrackMotion 활동 패턴은 추적된 객체 집합으로 구성된 객체를 방출합니다.trackedObjects) 그리고 삭제된 객체 집합(droppedObjects).
추적된 각 객체에 대해 TrackMotion이 업데이트됩니다. 위치 다음 속성을 사용합니다.
trackingId– 추적된 객체의 ID(사용됨 빌드 경로)delta– 동작을 결정하는 데 사용되는 값입니다. 이 값은 사용된 알고리즘에 따라 달라집니다. 이 값은 객체가 처음 나타날 때 누락될 수 있습니다. 이전 위치가 없으므로delta적용 가능합니다.timeOfObservation– 이 위치 관찰에 소요된 시간.
자세한 내용은 모션 트래킹 의 섹션 이미지 처리 가이드.
TrackMotion 활동 패턴에는 다음과 같은 구성 속성이 필요합니다.
- 최대 결석 전 결석 – 간격(예 추적된 물체가 떨어지기까지 걸리는 시간은 '20초'입니다.
- 동작 감지 알고리즘 – 동작 결정에 사용할 알고리즘입니다. '중심점'과 '경계 상자' 중에서 선택할 수 있습니다.
- 모션 임계값 – 한 위치가 다른 위치에서 "모션"으로 간주될 수 있는지 여부를 결정하는 데 사용되는 임계값을 지정하는 VAIL 표현식입니다.
- 아웃바운드 부동산 – 이 활동의 결과를 배치할 속성의 이름입니다.
다음과 같은 선택적 속성도 제공될 수 있습니다.
- 좌표 속성 – 위치를 가져올 속성의 이름입니다. 기본값은 다음과 같습니다.
location. - 라벨 속성 – 개체 레이블을 결정할 속성의 이름입니다. 기본값은 다음과 같습니다.
label. - 관찰 시간 – 이 개체 추적이 발생한 시간을 확인하는 VAIL 표현식입니다. 기본값은 다음과 같습니다.
now(). - 추적된 객체 속성 – 추적할 개체 목록을 수집할 속성의 이름입니다. 기본값은 다음과 같습니다.
results. - 추적을 위한 고유 ID – 고유한 값을 가진 속성의 이름입니다. 이 속성의 값이 추적 ID로 사용됩니다. 이 속성의 값이 제공되지 않거나 누락된 경우 추적 ID가 생성됩니다.
다음 사양은 TrackMotion 활동을 추가합니다.
- 30초 동안 사라진 물건을 떨어뜨립니다.
- 트랙을 사용하여 중심 연산,
- 400의 동작 임계값을 가지고 있으며
- 출력을 속성이라고 하는 곳에 배치합니다.
trackedState.

이 활동이 트래픽이 포함된 입력에서 실행되었다고 가정하면 출력은 다음과 같습니다.
{
...
"trackedState":
{
"trackedObjects":
[
{
"confidence": 0.72626966,
"location": {
"centerY": 704.9997,
"top": 616.2423,
"left": 481.8101,
"centerX": 677.0202,
"bottom": 793.7571,
"right": 872.23035,
"trackingId": "b78122a9-5bb9-46d3-bc22-79d39b6593e6",
"delta": 227.29758889770193,
"timeOfObservation": "2020-07-08T22:56:36.407Z"
},
"label": "car"
},
{
"confidence": 0.835676,
"location": {
"centerY": 571.4264,
"top": 560.4043,
"left": 1072.1838,
"centerX": 1084.5463,
"bottom": 582.4484,
"right": 1096.9087,
"trackingId": "ae0a620c-1e51-4023-acea-676bfd122128",
"delta": 2.9236888100580316,
"timeOfObservation": "2020-07-08T22:56:36.407Z"
},
"label": "car"
},
{
"confidence": 0.73007876,
"location": {
"centerY": 617.5767,
"top": 589.7673,
"left": 1228.4099,
"centerX": 1270.2803,
"bottom": 645.3862,
"right": 1312.1504,
"trackingId": "806967c6-b71e-463f-a60c-f7014b0dc33f",
"delta": 108.06990195156179,
"timeOfObservation": "2020-07-08T22:56:36.407Z"
},
"label": "car"
},
{
"confidence": 0.56739765,
"location": {
"centerY": 613.61835,
"top": 586.95667,
"left": 1224.4358,
"centerX": 1260.2947,
"bottom": 640.28,
"right": 1296.1533,
"trackingId": "56976308-83aa-4ed0-8ae6-38f4deddcb67",
"timeOfObservation": "2020-07-08T22:55:55.356Z"
},
"label": "truck"
},
{
"confidence": 0.7020074,
"location": {
"centerY": 585.1692,
"top": 575.26105,
"left": 1148.3091,
"centerX": 1167.5013,
"bottom": 595.0774,
"right": 1186.6938,
"trackingId": "266f50dc-cd4d-4655-bdf1-daf10e6d4526",
"timeOfObservation": "2020-07-08T22:56:36.407Z"
},
"label": "car"
},
{
"confidence": 0.5984039,
"location": {
"centerY": 590.17426,
"top": 580.5335,
"left": 1186.8556,
"centerX": 1200.7151,
"bottom": 599.81506,
"right": 1214.5747,
"trackingId": "ba2161d9-2cd7-4f16-af32-d3967091c596",
"timeOfObservation": "2020-07-08T22:56:36.407Z"
},
"label": "car"
}
],
"droppedObjects": []
}
...
}
이 예에서 우리는 이전에 추적된 세 대의 자동차(처음 세 개의 객체)가 있음을 알 수 있습니다. delta 가치), 그리고 방금 추가된 세 가지(마지막 세 가지 - 트럭과 두 대의 자동차)가 더 있습니다(없음 delta 값).
우리는 떨어진 물체를 보지 못했습니다. 만약 떨어진 물체가 있었다면, 그 형태는 다음과 같을 것입니다. trackedObjects 목록. 객체를 놓으면 이후 TrackMotion 출력에 더 이상 나타나지 않습니다.
변환
변환 작업을 통해 사용자는 VEH에 자체 프로시저를 삽입하거나 생성할 수 있습니다. 변환 프로시저는 단일 객체(인바운드 이벤트)를 입력으로 받고 변형된 아웃바운드 이벤트를 반환합니다. 이 과정에서 프로시저는 사용자가 원하는 모든 작업을 수행할 수 있으며, 핸들러에서 다른 이벤트 스트림을 트리거하는 이벤트 생성(예: 토픽에 게시)도 가능합니다. 반환 null로 변환 절차에서 인바운드 이벤트를 필터링해야 함을 나타내며, 이 경우 변환 작업은 아웃바운드 이벤트를 생성하지 않습니다.
변환 활동 패턴에는 필수 구성 속성이 하나만 포함됩니다.
- 변환 – 세 가지 옵션:
- 변환 절차: 변환 프로시저로 실행할 프로시저입니다. 위에서 언급했듯이 프로시저는 하나의 매개변수를 받아야 하며 변환된 이벤트를 반환해야 합니다.
- 시각적 변화: 사용자가 직접 변환 절차를 작성하지 않고도 입력을 출력에 매핑할 수 있는 시각적 인터페이스입니다. 시각적 변환은 입력을 출력에 매핑하는 더욱 사용자 친화적인 방법입니다.
- 투영: 인바운드 이벤트의 속성을 아웃바운드 이벤트로 프로젝션하는 VAIL 표현식입니다. 이는 추가 로직 없이 인바운드 이벤트의 속성을 아웃바운드 이벤트로 변환하는 간단한 방법입니다.
변환 활동 패턴에는 다음과 같은 선택적 구성 매개변수가 있습니다.
- 수입 – 참조되는 리소스 목록 시각적 변화 수입해야 합니다.
- 변환 위치 – true인 경우, 인바운드 이벤트부터 시작하여 변환 객체에 지정된 속성에만 변환을 적용합니다. 나머지 속성은 변경되지 않습니다.
- 개요 – 아웃바운드 상태 출력의 스키마를 정의하는 유형의 이름입니다. 아무것도 지정하지 않으면 출력 스키마가 입력 스키마와 일치하는 것으로 간주됩니다. 여기에 스키마를 지정하면 다운스트림 작업 구성이 간소화됩니다.
풀다
인바운드 이벤트에 배열 속성이 포함되어 있거나 이벤트 자체가 배열인 경우, 배열 내 항목을 독립적으로 처리하는 것이 유용할 수 있습니다. Unwind Activity Pattern을 사용하면 바로 이러한 작업을 수행할 수 있습니다. 예를 들어, 인바운드 이벤트는 다음과 같습니다.
{
"name": "joe",
"heartrates": [
{"ts": "2017-09-07T23:45:13.573Z", "value": 60},
{"ts": "2017-09-07T23:46:14.512Z", "value": 65},
{"ts": "2017-09-07T23:51:11.513Z", "value": 90}
]
}
여러 시간에 기록된 심박수 배열이 포함되어 있습니다. unwind 활동을 사용하면 이 하나의 이벤트를 다음과 같이 세 개의 연속된 이벤트로 변환할 수 있습니다.
{
"name": "joe",
"rate": {"ts": "2017-09-07T23:45:13.573Z", "value": 60}
},
{
"name": "joe",
"rate": {"ts": "2017-09-07T23:46:14.512Z", "value": 65}
},
{
"name": "joe",
"rate": {"ts": "2017-09-07T23:51:11.513Z", "value": 90}
}
각각의 작업은 다운스트림 작업에 의해 독립적으로 처리됩니다.
때로는 풀린 배열에 있는 각 객체의 속성을 아웃바운드 객체의 최상위에 직접 배치하는 것이 더 좋습니다. 동일한 인바운드 이벤트에 대해 지정되지 않은 아웃바운드 속성은 세 개의 연속적인 이벤트를 생성합니다.
{
"name": "joe",
"ts": "2017-09-07T23:45:13.573Z",
"value": 60
},
{
"name": "joe",
"ts": "2017-09-07T23:46:14.512Z"
"value": 65
},
{
"name": "joe",
"ts": "2017-09-07T23:51:11.513Z"
"value": 90
}
배열의 경우 인바운드 이벤트:
[
{
"user": "john",
"message": "I need a little help."
},
{
"user": "jane",
"message": "Sure, what do you need?"
}
]
대화에서 몇 개의 메시지가 포함되어 있습니다. 이벤트는 두 개의 연속된 이벤트로 나뉩니다.
{
"user": "john",
"message": "I need a little help."
},
{
"user": "jane",
"message": "Sure, what do you need?"
}
Unwind Activity Pattern에는 다음과 같은 구성 속성이 포함되어 있습니다.
- 언와인드프로퍼티 – 해제할 값 배열을 포함하는 인바운드 이벤트의 속성 이름입니다. 지정하지 않으면 전체 인바운드 이벤트가 해제할 배열로 간주됩니다. 첫 번째와 두 번째 예에서는 unwindProperty가 "heartrates"이고, 세 번째 예에서는 지정하지 않습니다.
- 아웃바운드 부동산 – 언와인딩된 값을 포함할 아웃바운드 이벤트의 속성 이름입니다. 지정하지 않으면 인바운드 배열은 각 요소를 아웃바운드 이벤트로 변환하고, 인바운드 객체는 언와인딩된 배열에 있는 각 객체의 속성을 아웃바운드 이벤트의 최상위 레벨로 직접 이동합니다. 첫 번째 예에서는 outboundProperty가 "rate"이고, 두 번째와 세 번째 예에서는 지정하지 않습니다.
내리다
VAIL 활동 패턴은 모든 이벤트에 대해 임의의 VAIL 코드 조각을 실행하여 거의 모든 변환을 가능하게 합니다. VAIL 조각은 다음 내부에서 인바운드 이벤트 데이터를 찾습니다. event.value 그리고 다음에 대한 모든 수정 사항 event.value 다운스트림 작업에서 볼 수 있습니다.
VAIL 블록 내에서 토픽이나 소스에 이벤트를 게시하거나 데이터베이스 쿼리를 실행하는 것도 가능하지만, 이를 수행하면 성능이 저하될 수 있다는 점을 명심하세요.
VAIL 활동 패턴에는 필수 구성 매개변수가 하나뿐입니다.
- 내리다 – 모든 인바운드 이벤트에 대해 실행할 VAIL 코드 블록입니다.
VAIL 활동 패턴에는 다음과 같은 선택적 구성 매개변수가 있습니다.
- 수입 – 가져와야 하는 VAIL 블록에서 참조하는 리소스 목록입니다.
- 개요 – 출력 이벤트의 스키마를 설명하는 유형의 이름입니다. 아무것도 지정하지 않으면 출력 스키마가 입력 스키마와 일치하는 것으로 간주됩니다. 스키마를 지정하면 다운스트림 작업 구성이 간소화됩니다.
- 이벤트 값 사용 – 참인 경우, event 객체에는 업스트림 작업에서 게시한 값이 포함됩니다. 이는 다음을 설정하는 것과 같습니다.
event = event.value. 거짓이면 event 객체에는 Vantiq Event 객체와 추가 이벤트 메타데이터가 포함됩니다. 이 옵션은 속성 업데이트와 같은 간단한 작업만 필요할 때 유용합니다. 반면, 전체 객체를 바꾸는 것과 같은 복잡한 작업이 필요한 경우에는 false로 설정해야 합니다. 기본값은 다음과 같습니다.true. - 재전송 오류 – 오류 발생 후 신뢰할 수 있는 이벤트를 다시 전달해야 하는지 여부를 결정하는 데 사용되는 프로시저의 이름입니다. 프로시저가 반환되는 경우
true, 해당 오류는 일시적인 것으로 간주되어 다시 전달됩니다. 이 절차에는 원래 이벤트와 발생한 예외라는 두 가지 매개변수가 제공됩니다.
VAIL 활동 패턴은 다음과 같은 이벤트 스트림을 생성합니다.
- event (기본값) – 모든 성공적인 요청의 결과입니다.
- 오류 발생 – 실패한 요청에 대한 컨텍스트를 제공하는 이벤트입니다. 이 이벤트의 속성은 다음과 같습니다.
- 에러 코드 (문자열) – 생성된 예외와 연결된 고유한 "코드"입니다.
- 에러 메시지 (문자열) – 생성된 예외에 대한 오류 메시지 텍스트입니다.
- 오류 매개변수 (String[]) – 오류 메시지에서 대체 값을 바꾸는 데 사용되는 매개변수입니다.
- 트리거링 이벤트 (개체) – 예외를 발생시킨 이벤트.
비전스크립트
VisionScript 활동 패턴을 사용하면 사용자가 쉽게 빌드할 수 있습니다. 비전 스크립트이미지를 조작하는 데 사용할 수 있습니다. 비전 스크립트 더 자세히 설명되어 있습니다 이미지 처리 가이드여기에는 가능한 스크립트 동작과 각각의 구성 매개변수의 전체 목록이 포함됩니다.
스크립트는 다음의 시퀀스로 구성됩니다. 행위각 작업에는 이름, 선택적으로 태그, 선택적으로 일부 매개변수가 있습니다. name 수행할 작업을 식별하고 매개 변수, 있는 경우 수행할 작업에 대한 세부 정보를 제공합니다. 태그 동일 스크립트의 후속 작업에서 해당 작업에 대한 참조를 허용합니다.
이 작업에는 두 가지 구성 속성이 있습니다.
- 스크립트 – 필수. 다음을 손상시키는 작업 배열 비전 스크립트.
- 스크립트 이름 – 선택 사항. 실행할 스크립트의 이름입니다(디버깅에 유용할 수 있음).
이 활동 패턴은 작업을 선택하고 구성하기 위해 고유한 인터페이스를 사용합니다. 비전 스크립트.
다음 스크린샷은 스크립트에 동작을 추가하는 데 사용되는 사용자 지정 인터페이스를 자세히 보여줍니다.
드롭다운 메뉴는 어떤 작업을 추가할지 선택하는 데 사용됩니다. 
작업을 선택하면 적절한 매개변수(있는 경우)를 제공할 수 있는 창이 나타나고, 필요한 경우 태그도 제공됩니다.
다음 이미지는 구성 방법을 보여줍니다. Resize 작업. 일부 작업에는 다음과 같은 추가 매개변수가 없습니다. Convert To Grayscale, Find Faces Describe. 그러나, 모든 행동 액션 태그를 추가하는 옵션을 제공합니다. 
The Draw Boxes 작업은 여러 개의 "상자 요소"로 구성된 "상자 목록"을 사용하거나 다음을 지정하여 구성할 수 있습니다. Use Results From 필드. 다음 사항에 유의해야 합니다. 두 옵션을 모두 사용하여 이 작업을 구성하세요. Use Results From 필드는 다음을 허용합니다. Action Tag 이전 작업의 (일반적으로 Find Faces 액션)을 실행하고 해당 액션의 결과를 사용하여 상자를 그립니다. 이전 액션의 결과를 사용하는 대신, 각 상자가 그려지도록 수동으로 구성할 수도 있습니다. "상자 목록 요소 추가" 버튼을 누르면 각 상자에 대한 추가 매개변수를 입력하라는 메시지가 표시됩니다. 다음 이미지는 구성해야 하는 두 개의 "상자 요소"를 보여줍니다. 
다음 이미지는 구성된 작업 목록이 어떤 모습인지 보여줍니다. 
작업 목록을 구성한 후 "확인" 버튼을 눌러 저장할 수 있습니다. 이전 이미지의 구성을 사용하면 다음과 유사한 작업 배열이 생성됩니다.
[
{
"name": "describe"
},
{
"name": "drawBoxes",
"parameters": {
"boxList": [
{
"x": 1,
"y": 2,
"height": 3,
"width": 4,
"label": "label1",
"color": {
"red": 5,
"green": 6,
"blue": 7
},
"thickness": 8
}
]
},
"tag": "drawABox"
},
{
"name": "drawText",
"parameters": {
"text": "\"test_\" + event.name",
"x": 50,
"y": 50,
"font": 6,
"fontScale": 10,
"isItalic": true
},
"tag": "addSomeText"
},
{
"name": "save",
"parameters": {
"saveName": "myImageName",
"fileType": "image/jpeg"
}
}
]
작업 목록을 정의하고 앱을 저장한 후 비전 스크립트 자동으로 생성됩니다.
창
윈도우는 인바운드 이벤트를 수집하고 이전 인바운드 이벤트 목록을 포함하는 아웃바운드 이벤트를 생성합니다. 윈도우 크기는 2~10개 이벤트 범위 내에서 설정할 수 있습니다. 불연속 윈도우와 슬라이딩 윈도우의 두 가지 유형이 있습니다. 불연속 윈도우가 기본값이며, 아웃바운드 이벤트의 각 이벤트 목록에는 이전 윈도우의 이벤트가 포함되지 않습니다.
Window Activity Pattern에는 필수 구성 매개변수가 하나 있습니다.
- 계산 – 각 윈도우에서 발행할 이벤트 수. 최소 count개의 이벤트가 발생할 때까지 발행은 발생하지 않습니다.
다음과 같은 선택적 구성 매개변수도 있습니다.
- 슬라이딩윈도우 – 선택적 부울 플래그입니다.
true, 출력이 창을 겹쳐야 함을 나타냅니다.false는 각 윈도우에 고유한 이벤트 배치가 포함되어야 하며, 각 이벤트가 발생할 때마다 윈도우가 재설정되어야 함을 나타냅니다. 아래 예시를 참조하세요.
예를 들어, 다음 6개의 인바운드 이벤트를 생각해 보세요.
{
"name": "joe",
"temperature": 98
},
{
"name": "joe",
"temperature": 99
},
{
"name": "joe",
"temperature": 100
},
{
"name": "joe",
"temperature": 101
},
{
"name": "joe",
"temperature": 96
},
{
"name": "joe",
"temperature": 98
}
창 개수를 3으로 설정하면 두 개의 이벤트만 발생합니다.
{
"values": [
{
"event": {
"name": "joe",
"temperature": 98
},
"timestamp": "2018-09-07T23:51:11.513Z"
},
{
"event": {
"name": "joe",
"temperature": 99
},
"timestamp": "2018-09-07T23:51:13.253Z"
},
{
"event": {
"name": "joe",
"temperature": 100
},
"timestamp": "2018-09-07T23:51:17.109Z"
}
]
},
{
"values": [
{
"event": {
"name": "joe",
"temperature": 101
},
"timestamp": "2018-09-07T23:51:19.464Z"
},
{
"event": {
"name": "joe",
"temperature": 96
},
"timestamp": "2018-09-07T23:51:22.143Z"
},
{
"event": {
"name": "joe",
"temperature": 98
},
"timestamp": "2018-09-07T23:51:26.112Z"
}
]
}
반면 작업이 슬라이딩 윈도우를 사용하도록 구성된 경우 대신 4개의 겹치는 이벤트가 발생합니다.
{
"values": [
{
"event": {
"name": "joe",
"temperature": 98
},
"timestamp": "2018-09-07T23:51:11.513Z"
},
{
"event": {
"name": "joe",
"temperature": 99
},
"timestamp": "2018-09-07T23:51:13.253Z"
},
{
"event": {
"name": "joe",
"temperature": 100
},
"timestamp": "2018-09-07T23:51:17.109Z"
}
]
},
{
"values": [
{
"event": {
"name": "joe",
"temperature": 99
},
"timestamp": "2018-09-07T23:51:13.253Z"
},
{
"event": {
"name": "joe",
"temperature": 100
},
"timestamp": "2018-09-07T23:51:17.109Z"
},
{
"event": {
"name": "joe",
"temperature": 101
},
"timestamp": "2018-09-07T23:51:19.464Z"
}
]
},
{
"values": [
{
"event": {
"name": "joe",
"temperature": 100
},
"timestamp": "2018-09-07T23:51:17.109Z"
},
{
"event": {
"name": "joe",
"temperature": 101
},
"timestamp": "2018-09-07T23:51:19.464Z"
},
{
"event": {
"name": "joe",
"temperature": 96
},
"timestamp": "2018-09-07T23:51:22.143Z"
}
]
},
{
"values": [
{
"event": {
"name": "joe",
"temperature": 101
},
"timestamp": "2018-09-07T23:51:19.464Z"
},
{
"event": {
"name": "joe",
"temperature": 96
},
"timestamp": "2018-09-07T23:51:22.143Z"
},
{
"event": {
"name": "joe",
"temperature": 98
},
"timestamp": "2018-09-07T23:51:26.112Z"
}
]
}
추적 지역 내
WithinTrackingRegion 작업은 지역 목록에 포함된 위치를 기준으로 필터링합니다(목록에 있는 어떤 지역이든 괜찮습니다). 특정 레이블이 있는 위치만 필터링하도록 설정하면 필터링을 더욱 구체화할 수 있습니다.
위치와 연관된 지역은 중심점(경계 상자의 중심점 좌표)이나 경계 상자 자체(지역에서 발견된 경계 상자의 백분율에 따라)를 통해 찾을 수 있습니다.
이러한 요소들을 조합하면 보고 대상을 특정 영역(그리고 특정 유형(레이블)의 객체만)으로 제한하는 앱이나 이벤트 핸들러를 구축할 수 있습니다. 고려할 영역 집합은 지정할 수 있으며, 경로 예측에서 보고하는 영역과 다를 수 있습니다. 이를 통해 예를 들어 보안 수준이 높은 영역 집합을 정의한 후, 경로 예측에서 보안 건물(예: 건물)의 더 자세한 영역을 보고할 수 있습니다. 여기에 해당 레이블을 적용하면, 예를 들어 해당 영역에 있는 사람만 검색할 수 있습니다.
WithinTrackingRegion 활동 패턴에는 다음과 같은 구성 속성이 필요합니다.
- 지역거주 알고리즘 – 객체가 특정 영역 내에 있는지 확인하는 데 사용되는 메서드입니다. 값은 다음과 같습니다.
centroidbounding box. - 새로 고침 간격 – 간격 문자열(예, 10분) TrackingRegions 목록을 얼마나 자주 새로 고칠지 지정합니다. 지역 정의가 변경되지 않는 성숙한 애플리케이션에서는 긴 간격이 적합할 수 있습니다.
또한 다음과 같은 선택적 구성 속성이 있습니다.
- 추적지역포함 – 집합을 제한하는 표현식
TrackingRegions위치 추적 영역으로 간주됩니다. 이 표현식은 고려할 영역을 선택하는 데 사용되는 WHERE 절에 추가됩니다. 없거나 비어 있는 경우 모든TrackingRegions네임스페이스에서 고려됩니다. 결과 쿼리가 빈 집합을 반환하는 경우TrackingRegions, 어떤 위치도 적격하지 않습니다. 다음을 참조하세요. 추적 지역 정보 - boundingBoxOverlapPercentage – 만약
regionResidenceAlgorithmisbounding box, 이는 자격을 갖추려면 영역 내에 있어야 하는 경계 상자의 비율입니다. 기본값은 85%입니다.regionResidenceAlgorithmiscentroid이 값은 무시됩니다. - 라벨필터 – 지역 존재 여부를 필터링할 레이블입니다. 레이블이 없는 경우, 나열된 지역에 있는 모든 객체가 이 조건을 충족합니다.
- 좌표 속성 – 위치를 가져올 속성의 이름입니다. 기본값은 다음과 같습니다.
location. - 라벨 속성 – 개체 레이블을 결정할 속성의 이름입니다. 기본값은 다음과 같습니다.
label. - 추적된 객체 속성 – 추적할 개체 목록을 수집할 속성의 이름입니다. 기본값은 다음과 같습니다.
results. - 필터링된 지역 속성 – 감지된 영역을 배치할 속성의 이름입니다. 기본값은 'filteredRegions'입니다.
- 수입 – 참조되는 리소스 목록
trackingRegionsIncluded수입해야 합니다.
![]()
문서에서 YOLO
이미지의 YOLO입력 이벤트가 문서인 경우 사용됩니다.
임시 이미지에서 YOLO
이미지의 YOLO입력 이벤트가 비디오 소스에서 발생하는 경우 사용됩니다.
이미지의 YOLO
TensorFlow, TensorFlow 로고 및 관련 상표는 Google Inc.의 상표입니다.
YOLOFromImages, YOLOFromTempImages 및 YOLOFromDocuments 작업은 YOLO TensorFlow 모델을 통해 분석을 수행하는 데 사용됩니다. YOLOFromImages는 입력 이벤트가 system.images 리소스인 YOLOFromDocuments는 입력 이벤트가 다음을 나타낼 때 사용됩니다. document 리소스 및 YOLOFromTempImages는 입력 이벤트가 출력을 나타낼 때 사용됩니다. 비디오 소스. 그 외에는 동일합니다. 이 섹션에서는 YOLOFromImages를 참조합니다.
YOLOFromImages의 일반적인 용도는 이미지에서 객체나 기타 패턴을 식별하는 것입니다. 예를 들어, 특정 지역을 내려다보는 카메라에서 이미지를 수집할 수 있습니다. YOLO TensorFlow 모델(예: 차량 식별)를 사용하면 해당 지역에서 특정 유형의 차량 및 기타 관심 대상을 찾을 수 있습니다.
YOLOFromImages 활동 패턴에는 다음과 같은 구성 속성이 포함되어 있습니다.
- 자신 – 0과 1 사이의 실수입니다. 이는 모델이 답을 반환하기 위해 가져야 하는 결과의 신뢰 수준을 나타냅니다. 예를 들어, 0.65를 입력하면 결과에 대한 신뢰도가 65%임을 나타냅니다.
- 모델 -
tensorflowmodel제시된 목록에서 선택한 요소입니다. 이는 분석을 수행하는 데 사용되는 모델입니다. 이 모델은 YOLO 모델(유형 모델)이어야 합니다.tensorflow/yolo.
위의 두 속성은 필수입니다. 또한 다음과 같은 선택 속성도 있습니다.
- 색상 스케일 계수 – 이미지에 표현된 색상을 0과 1 사이의 숫자로 변환하는 데 사용되는 정수(모델 분석에 사용). 이 값은 매우 드물게 사용됩니다.
- 그룹별 레이블 – 부울(즉 체크박스)는 출력이 각각 단일 레이블을 포함하는 목록 세트여야 함을 나타냅니다. 이는 그룹별로 분할 라벨별로 활동 패턴을 그룹화합니다.

YOLOFromImages(또는 YOLOFromDocument) 작업의 출력 이벤트에는 두 가지 속성이 포함됩니다.
- 대상 - 작업에 대한 입력이었던 이미지
- 결과 – 분석 결과입니다.
results속성에는 이름(레이블), 이미지 내 위치, 제공된 분석에 대한 신뢰도를 식별하는 상자 목록(비어 있을 수 있음)이 포함되어 있습니다.- 자신감 – 결과에 대한 자신감
- 위치 – 식별된 객체를 둘러싼 상자의 좌표
- 레이블 – 모델에 의해 식별되는 객체의 이름입니다.
예를 들어 JPEG 이미지를 실행하면 freeway.jpg

우리를 통해 차량 식별 모델은 다음과 같은 결과를 생성할 수 있습니다.
{
"target":{
"name": "freeway.jpg",
"fileType": "image/jpeg",
"contentSize": 71631,
...
},
"results":
[
{
"confidence": 0.791946,
"location": {
"centerY": 368.95956,
"top": 259.94803,
"left": 622.9274,
"centerX": 760.1899,
"bottom": 477.97113,
"right": 897.4523
},
"label": "car"
},
{
"confidence": 0.6838598,
"location": {
"centerY": 358.36145,
"top": 294.93753,
"left": 342.35565,
"centerX": 373.64096,
"bottom": 421.78534,
"right": 404.92627
},
"label": "person"
},
{
"confidence": 0.6590094,
"location": {
"centerY": 352.7839,
"top": 306.68915,
"left": 72.169304,
"centerX": 147.08789,
"bottom": 398.8787,
"right": 222.0065
},
"label": "car"
}
]
}
참고사항: 운전 중에는 사진 촬영을 권장하지 않습니다.
TensorFlow 모델은 Vantiq 제품의 일부로 제공되지 않습니다.
종속성 및 선택적 가져오기
의존성 관리
많은 활동 패턴이 다른 Vantiq 리소스에 대한 참조로 구성되며, VEH가 작동하려면 이러한 참조가 확인되어야 합니다. 이러한 모든 참조는 서비스가 저장되고 코드가 생성될 때 처음에 유효성이 검사되어야 하지만, 관련 리소스를 독립적으로 변경할 수도 있습니다. 참조된 리소스에 대한 특정 변경으로 인해 앱 종속성이 무효화되면 실행 중인 앱이 비활성화될 수 있습니다. 예를 들어, 앱이 프로시저를 (올바르게) 참조하고 나중에 프로시저가 업데이트되어 매개변수 개수가 변경되면 앱이 자동으로 비활성화됩니다.
종속성 오류로 인해 VEH가 비활성화되면 열려 있는 앱 빌더 창에 문제가 있는 작업이 빨간색으로 강조 표시되어 새 오류가 즉시 표시됩니다.

이런 경우 빨간색으로 강조 표시된 작업이나 창 상단의 메뉴 표시줄에 있는 빨간색 표시기 위에 마우스를 올리면 오류를 확인할 수 있습니다.
선택적 수입
일부 종속성은 시스템에서 자동으로 추론할 수 없습니다. 다음과 같은 경우 내리다 활동 패턴에서는 모든 패키지의 모든 리소스를 참조할 수 있는 임의의 VAIL을 입력할 수 있습니다. 이러한 참조는 선택 사항에서 명시적으로 설명해야 합니다. imports 속성. 가져오기는 다음 리소스를 참조할 수 있습니다.
- 서비스
- 절차(서비스에 포함되지 않은 절차)
- 유형
- 주제
- 소스
서비스 절차에 액세스하려면 다음을 가져와야 합니다. 서비스개별 서비스 절차를 가져오는 것은 지원되지 않습니다.
VAIL 표현식이나 코드 블록에서 참조되는 모든 리소스는 가져오기 목록에 포함되어야 합니다. 리소스를 제대로 가져오지 못하면 참조한 리소스를 찾을 수 없다는 오류가 표시됩니다.
