사물 서비스
사물 서비스는 사물이 수행할 수 있는 기능입니다. 각 사물에는 하나 이상의 서비스가 있을 수 있습니다. 사물 형태, 사물 템플릿 또는 사물 수준에서 서비스를 정의할 수 있습니다. 서비스의 간단한 예에는 데이터베이스 사물에 대해 작성된 질의가 있습니다.
사용하는 템플릿에 따라 서비스에 대한 여러 가지 구현 방법 또는 처리기가 있습니다. 스크립트, SQL 질의 및 SQL 명령은 처리기의 예입니다. 에지 사물과 같이 사물의 특정 기능에 따라 추가 처리기를 사용할 수 있습니다.
사용자 정의 서비스의 특정 구현은 서버 측 스크립트(현재 SQL 또는 JavaScript를 통해)를 통해 수행됩니다. 그런 다음 URL, REST 클라이언트 가능 응용 프로그램 또는 ThingWorx의 다른 서비스를 통해 서비스가 호출될 수 있습니다.
새 서비스를 생성할 때 입력 및 출력 속성을 정의할 수 있습니다. 입력 및 출력은 표준 ThingWorx 데이터 유형일 수 있습니다. 각 서비스에는 서비스 정의에서 정의된 개별 실행 시간 권한도 있을 수 있습니다. 서비스에 입력 또는 출력이 있을 필요는 없지만, 일반적으로 하나 또는 둘 다 있습니다. 예를 들어, 트럭에 배달 일정을 전송하려는 경우 트럭 사물에는 이름이 DeliverySchedule인 XML 유형의 서비스가 있을 수 있습니다. 서비스는 수신 데이터를 가져오고 트럭의 사물 속성을 데이터 테이블에 배치할 수 있습니다.
매쉬업 위젯에 출력을 직접 전송하려는 경우 기본 유형인 인포테이블 유형의 출력을 선택해야 합니다. 인포테이블 출력을 선택한 경우 데이터 셰이프를 선택해야 합니다. 데이터 셰이프를 통해 응용 프로그램에서는 데이터를 렌더링할 수 있도록 반환할 열과 데이터 유형을 인식합니다. 요구사항에 따라 입력의 수를 선택할 수 있습니다. 예를 들어, 출력은 매쉬업에 데이터를 반환하는 데이터베이스에 대한 SQL 질의일 수 있습니다. 서비스는 자동으로 ThingWorx 응용 프로그램 서버의 일부 REST API가 됩니다(모델의 모든 정의와 동일함). 다른 응용 프로그램 또는 매쉬업의 REST 호출을 통해 서비스를 사용할 수 있습니다.
서비스를 호출할 때 출력을 인포테이블로 정의하면 URL 호출 및 Accept URL 매개 변수를 사용하여 HTML, JSON 또는 XML로 설정된 결과를 요청할 수 있습니다(자세한 내용은 REST API 참조). 이러한 유연성과 인포테이블을 쉽게 사용할 수 있는 매쉬업 환경 기능이 있으므로 이 형식을 기본 설계 패턴으로 사용하는 것이 좋습니다. 필요한 경우 XML 스키마 출력과 같은 특정 요구사항을 해결할 수 있습니다.
스크립트 함수 인터페이스를 정의하면 서비스에 대한 처리기 열을 클릭하여 서비스를 구현할 수 있습니다. 그러면 서비스 구현 편집기가 열립니다. 구현 편집기에서 처리기(SQLQuery 또는 Script)를 선택합니다. SQLQuery는 데이터베이스 엔티티에 대해서만 사용할 수 있습니다. Script 구현은 서버 측 Java Script 엔진입니다.
SQLQuery를 사용하여 소스 데이터베이스에 대해 사용하는 구문에 질의를 작성합니다. 준비된 문과 같이 질의에서 서비스 입력을 매개 변수로 사용할 수 있습니다. 출력 속성이 인포테이블인 경우 결과를 조작할 필요가 없습니다. 질의 결과가 인포테이블에 나타나고 출력으로 사용 가능합니다.
* 
데이터베이스 사물에 대한 SQL 질의에 '--[[]]' and '[[]]' 형식의 문자열을 사용하는 것은 좋은 방법이 아닙니다. 대신 SQL 질의 서비스에 문자열을 사용하려면 입력 변수에 해당 문자열을 삽입한 다음 SQL에서 해당 값을 전달합니다.
스크립트 처리기는 응용 프로그램의 요구사항을 충족하기 위해 서버의 모든 데이터, 사물 및 서비스를 사용하는 강력한 방법입니다. 계산과 조회를 수행하거나, 서비스를 호출하거나, 모델의 다른 사물에서 속성에 액세스할 수 있습니다. 처리기로 스크립트를 선택하면 여러 스크립트 도우미가 제공됩니다. 현재 편집 중인 사물의 스크립트, 속성, 서비스 및 이벤트에 대한 입력을 볼 수 있습니다. 이러한 입력을 두 번 클릭하여 스크립트 창에 붙여넣을 수 있습니다. 시스템의 다른 엔티티에 대한 속성, 서비스 및 이벤트를 검색할 수도 있습니다. 서비스 내의 모든 모델 기능을 결합할 수 있습니다.
* 
웹 페이지 또는 URL에서 스크립트가 호출되면 로그인한 사용자의 컨텍스트에서 실행됩니다. 사용자가 스크립트에 있는 엔티티의 실행 시간 서비스, 속성 또는 이벤트에 액세스할 권한이 없는 경우 스크립트가 실패할 수 있습니다.
스크립트 구현 편집기에도 스크립트를 쉽게 생성하기 위한 구문 도우미와 코드 조각이 있습니다.
* 
기본적으로 ThingWorx Platform의 스크립트 제한 시간 설정은 30초입니다. 스크립트가 이보다 길게 실행되면 Platform에서 실행을 종료합니다. ThingWorx 관리자는 platform-settings.json 파일의 기본 설정 섹션에 스크립트 제한 시간을 구성할 수 있습니다.
비동기 서비스
비동기 서비스는 고유한 스레드에서 생성 및 실행됩니다. 비동기 서비스를 실행하면 스레드가 생성되어 플랫폼에서 독립적으로 실행되기 때문에 이 서비스에는 반환 값이 없습니다. 다른 서비스 내에서 호출된 경우 호출 서비스는 비동기 서비스가 완료될 때까지 기다리지 않습니다. 이는 장기간 실행되는 서비스, 특히 배경 데이터 구조를 업데이트하거나 시스템 유지보수 작업을 수행하는 타이머에 대한 서비스에 매우 유용할 수 있습니다.
새 서비스 편집기에서 비동기를 선택하면 호출 대기 옵션이 나타납니다. 이 옵션은 원격 사물이 연결되지 않은 경우 서비스 실행을 대기하는 원격 바인딩 서비스에 대한 것입니다. ThingWorx는 서비스 실행 시 각 시도를 대기한 다음 원격 사물이 다시 연결될 때 순서대로 실행합니다.
* 
에지 제어 장치에 대해서는 원격 사물 속성이 업데이트되지 않습니다.
서비스 통계
사용률 하위 시스템은 제한 시간으로 인해 종료된 JavaScript 서비스에 대한 메트릭을 수집합니다. 자세한 내용은 제한 시간으로 인해 종료된 스크립트 실행에 대한 통계 항목을 참조하십시오.
사물 템플릿 및 사물 형태에서 서비스 실행
사물 템플릿 및 사물 형태에서 서비스를 실행할 수 있습니다. 이러한 경우 서비스를 실행할 구현된 사물을 지정해야 할 수도 있습니다. 실행 탭의 구현 사물 필드에서 사물을 선택합니다.
도움이 되셨나요?