본문으로 건너뛰기
  1. Posts/

Thingworx 테스트 Tip (3) - 브라우저 개발자 도구 네트워크 기능을 이용한 Session 이벤트 제어와 서비스 이벤트 제어

·2 분· loading · loading ·
Sseung
Solution Thingworx Debug Test
InnoFactory
작성자
InnoFactory
스마트팩토리, 산업자동화, Digital Transformation, 디지털팩토리, PLM, ALM, Digital Manufacturing, Visualization, 3D CAD, Digital Twin, Big Data, IIoT 솔루션 전문업체
작성자
SeungHyeon Lee
R&D Center Developer
Thingworx 테스트 Tip - 이 글은 시리즈의 일부입니다.
부분 3: 이 글

Thingworx Mashup 개발 시 화면간 이동으로 triggering되는 Load 이벤트와 Session에 설정한 사용자 지정 속성의 이벤트, 서비스의 동작에 따른 이벤트의 연쇄작용으로 테스트가 어려운 경우가 있습니다.

이번 글에서는 브라우저 개발자 도구 네트워크 기능을 이용한 Session 이벤트 제어와 서비스 이벤트 제어를 알아보도록 하겠습니다.

Thingworx Session 객체를 통한 Session 이벤트 제어
#

Session 값 조작에는 Thingworx 런타임객체 내의 Session 객체를 통해 Session 값 제어가 가능했지만,

Session 변수에 기본적으로 있는 Change 이벤트의 triggering에는 상위 TW 객체를 이용할 수 있습니다.

TW.publishSessionChange('a_test_globalSession');

위의 명령어를 이용하여 브라우저 개발자 도구에서 a_test_globalSessiona_test_globalSessionChanged이벤트를 triggering 할 수 있으며, 해당 방식으로의 triggering은 실제 Session에 할당된 값이 변하지 않았더라도 이벤트를 강제로 발생시키게 됩니다.

값 변경으로 인한 SessionChange 이벤트 발생을 원할 경우에는 이전 글에서 사용한 Thingworx 런타임 객체 내의 Session 객체를 통한 값 제어로도 이벤트를 활성화 시킬 수 있습니다.

Thingworx Mashup에 할당되어있는 서비스 이벤트 제어
#

Session 이벤트와는 다르게 서비스 이벤트는 Mashup 자체에 할당되어있으며, Mashup이 로딩되면 해당 Mashup의 Data영역에 할당된 서비스들이 같이 올라오는 형태로 되어있습니다.

Runtime 객체를 통한 현재 Mashup 객체 정보 보기
#

브라우저 개발자 도구에서 화면에 로드 되어있는 Mashup 객체를 확인할 수 있습니다.

TW.Runtime.Workspace.Mashups;

위의 명령어를 이용하여 브라우저 개발자 도구에서 Mashup 객체에서 제공하는 정보들을 확인할 수 있습니다.

다음 내용을 통해 더 심화된 정보를 조회해 보겠습니다.

TW.Runtime.Workspace.Mashups.Current.Events;

위의 명령어를 통해 지난 글에서 만든 Mashup에서 현재 화면에 로드되어있는 Mashup을 찾고 그 Mashup 에 할당된 이벤트를 조회해 보겠습니다.

조회하고자 하는 Mashup은 Mashup이 로드되면 서비스가 실행되고, 서비스 호출이 완료되면 다음 서비스들이 연쇄적으로 실행되는 순서로 동작합니다.

명령어를 실행한 결과는 다음과 같습니다.

image-20230919181841341

현재 화면의 이벤트를 조회한 결과, Mashup Load 이벤트와 Data로 분류되는 서비스들의 서비스 이벤트가 조회됨을 확인할 수 있습니다.

image-20230919190847572

또한 브라우저 개발자 도구에서 Mashup Element를 선택하면 이벤트 수신기 탭에서 해당 Element에 할당되어있는 이벤트를 확인할 수 있는데, 현재 Mashup 에서는 actual-mashup Element에서 서비스들의 ServiceInvokeCompleted 이벤트가 할당되어 있는 것을 확인할 수 있습니다.

$('div#actual-mashup').triggerHandler('Data_Things_slee_test_test_A');

해당 이벤트 들은 위의 명령어로 Element에 할당된 서비스들 자체 또는 서비스에 바인딩 된 이벤트 들을 triggering할 수 있습니다. test_A 서비스 자체를 실행시켜 보도록 하겠습니다.

image-20230919191635599

test_A 서비스 자체를 실행시키니 test_A 서비스와 바인딩 되어있는 test_B 서비스가 연쇄적으로 실행된 것을 확인할 수 있습니다.

이와같이 테스트를 원하는 시점의 서비스부터 이후에 바인딩 되어있는 서비스들까지 연쇄적으로 실행시켜 로직을 부분적으로 테스트 할 수 있습니다.

해당 방법은 Mashup에서 테스트를 위한 바인딩을 수정할 필요없이, 브라우저 개발자 도구로만 수행되기 때문에 불필요한 백업 또는 테스트용 바인딩을 생성할 필요가 없는 장점이 있습니다.

연관된 글
#

Thingworx 테스트 Tip - 이 글은 시리즈의 일부입니다.
부분 3: 이 글

관련 글

Thingworx 테스트 Tip (2) - 브라우저 개발자 도구 콘솔을 통한 Thingworx Session 객체 접근 및 조작
·2 분· loading · loading
Sseung
Solution Thingworx Debug Test
Thingworx Mashup 개발 시 로직의 순서 제어를 위해 Thingworx의 Session에 설정한 사용자 지정 속성의 이벤트를 이용하는 작업이 필요한 경우가 있습니다.
Thingworx 테스트 Tip (1) - 브라우저 개발자 도구 네트워크 기능을 이용한 로직 디버깅
·2 분· loading · loading
Sseung
Solution Thingworx Debug Test
Thingworx Mashup 개발에는 Mashup에 연결된 Thing의 서비스, 세션 변수, UI 간의 이벤트 바인딩으로 로직을 구성하고 서비스 input/output 바인딩의 작업을 필요로 합니다.
Thingworx 로그인 세션 타임아웃 설정과 로그인 시도 보안 설정
·2 분· loading · loading
Sseung
Solution Thingworx Subsystem Timeout
Thingworx는 시스템 설정을 구성할 수 있는 기능을 제공하는 시스템 통합 도구 Subsystem을 제공합니다. User Management Subsystem은 Thingworx의 비밀번호 암호화 알고리즘과 알고리즘에서 사용되는 몇가지 변수를 설정할 수 있습니다.