매쉬업 작성기 > 데이터 서비스 및 바인딩 > 매쉬업에서 데이터 서비스 실행 > 매쉬업에서 이벤트 바인딩 및 실행 순서 관리
매쉬업에서 이벤트 바인딩 및 실행 순서 관리
고급 솔루션 및 시각화를 개발할 때 매쉬업의 데이터 서비스 및 바인딩 수가 증가합니다. ThingWorx에서 이벤트 및 구독은 IoT 개발 프로세스 내에서 서비스를 실행하고 경고를 표시하며 다른 유형의 비즈니스 로직을 적용하는 데 사용됩니다. 이벤트를 서비스로 바인딩하면 사용자 입력에 응답하는 대화식 응용 프로그램을 작성하고 실시간 이벤트를 기반으로 작업을 수행할 수 있습니다. 다음은 이벤트의 특징입니다.
이벤트는 어떤 일이 발생했음을 나타내는 상태 변경을 알립니다.
이벤트는 코드를 실행하는 서비스에 바인딩되어 있는지 여부에 관계없이 발생할 수 있습니다. 바인딩되지 않은 이벤트는 응용 프로그램 상태에 영향을 주지 않습니다.
이벤트는 바인딩된 서비스를 실행하기 위해 어떤 일이 발생할 때마다 트리거될 수 있습니다.
매쉬업 런타임에는 매쉬업, 위젯, 함수 또는 데이터 서비스 수준에서 이벤트가 발생할 수 있습니다. 이벤트를 바인딩하여 다음과 같은 유형의 서비스를 실행할 수 있습니다.
데이터 패널에 추가된 데이터 서비스
RefreshResetInputsToDefaults 서비스와 같은 매쉬업 서비스
버튼 TriggerClick 서비스와 같은 위젯 서비스
식 함수 Evaluate 서비스와 같은 함수 서비스
버튼의 ValueChanged 이벤트 또는 입력 필드의 Clicked 이벤트와 같이 사용자가 수행하는 작업에 응답하는 대화식 매쉬업을 설계하는 이벤트를 사용할 수 있습니다. 일반적으로 매쉬업 Loaded 이벤트는 매쉬업 내에 데이터를 표시하는 데이터 서비스를 실행하는 데 사용됩니다.
함수 및 데이터 서비스의 실행 순서 관리
매쉬업에는 일련의 작업을 수행하는 위젯, 함수 및 서비스 모음이 포함됩니다. 일부 서비스를 병렬로 실행하여 효율성을 극대화할 수 있습니다. 그러나 다른 서비스의 입력에 종속되고 순차적인 순서로 실행되어야 하는 서비스가 있습니다. ServiceInvokeComplete 서비스 이벤트를 사용하여 두 서비스 간의 종속성을 만들 수 있습니다. 종속 서비스는 상위 서비스가 실행된 이후에만 실행됩니다. 예를 들어, 함수 A가 함수 B에 종속된 경우 함수 A가 실행되고 완료되어야 함수 B가 실행됩니다.
다음 목록은 런타임에 현재 기본 실행 순서를 대략적으로 보여줍니다.
먼저, 실행 순서를 정의하기 위해 이벤트를 사용하지 않는 경우 식 및 유효성 검사기 함수 내에 정의된 JavaScript 식은 비동기식으로 평가됩니다.
그런 다음 매쉬업의 이벤트를 사용하여 특정 순서를 정의하지 않는 경우 데이터 서비스는 비동기적으로 실행됩니다.
이전 버전의 ThingWorx에서 하나의 이벤트를 여러 데이터 서비스 또는 함수에 바인딩하는 경우 매쉬업에서 바인딩이 생성된 순서에 따라 실행 순서가 설정되었습니다. 기존 매쉬업을 추가로 변경하고 바인딩을 업데이트하면 런타임 시 실행 순서에 영향을 줄 수 있습니다.
이 동작은 ThingWorx Platform 버전 9.3.2, 9.2.7, 9.1.11 및 9.0.16 이상에서 변경되었습니다. 새 표준 보안 함수를 사용하는 경우 Mashup Builder에서 정의되거나 바인딩되는 순서에 의존할 수 없습니다. 실행 순서가 일관되게 유지되도록 하기 위해 모든 식은 런타임에 서비스보다 먼저 실행됩니다.
함수 출력 이벤트를 사용하여 식 계산을 위한 올바른 시퀀스를 정의합니다. 매쉬업이 식을 평가할 때 특정 순서에 의존하는 경우 문제가 발생할 수 있습니다. 매쉬업 복잡성과 식 평가 타이밍에 따라 결과를 사용할 수 있는 시기를 결정할 수 있습니다. 여러 입력 매개 변수를 하나의 함수에 바인딩할 때는 식이 평가될 때 부분적으로 정의된 입력을 전달하지 않도록 동일한 출력 서비스 또는 위젯에서 입력을 바인딩하는 것이 좋습니다.
이벤트를 사용하여 순차적인 순서를 정의할 수 있습니다. 예를 들어, 데이터 속성 패널의 서비스 ServiceInvokeCompleted 이벤트를 사용하여 매쉬업 Loaded 이벤트 대신 종속 서비스를 실행합니다.
비즈니스 논리가 종속 함수를 만들어야 하는 경우 Output 속성 이외에 식 함수 Changed 이벤트도 사용해야 합니다. 마찬가지로, 유효성 검사기 함수의 TrueFalse 이벤트를 사용하여 함수 출력에 종속된 바인딩된 서비스를 실행합니다. 다음 예에서는 식, 유효성 검사기 함수 및 데이터 서비스 간의 바인딩을 보여줍니다. 이러한 함수를 순차적으로 실행하기 위해 식 함수 Changed 이벤트를 사용하여 유효성 검사기를 계산합니다. 유효성 검사기의 TrueFalse 이벤트도 서비스 및 상태 메시지 함수에 바인딩됩니다.
실행 순서를 정의하기 위해 함수 이벤트를 사용하지 않고 OutputState 속성을 바인딩하는 것은 권장되지 않습니다. 유효성 검사기 함수가 식 함수보다 먼저 평가되고 런타임에 잘못된 값을 반환할 수 있습니다.
도움이 되셨나요?