Сервисы вещи
Сервисы вещи являются функциями, которые может выполнить вещь. Каждая вещь может иметь один или несколько сервисов. Можно определить сервисы в профиле вещи, в шаблоне вещи или на уровне вещи. Простым примером сервиса является запрос, записанный для вещи базы данных.
Существует несколько методов реализации (обработчиков) для сервисов в зависимости от используемого шаблона. Примерами обработчиков могут служить сценарий, запрос SQL и команда SQL. Дополнительные обработчики могут быть доступны в зависимости от конкретной функциональности вещи, такой как вещи Edge.
Конкретная реализация определяемого пользователем сервиса выполняется через сценарий на стороне сервера (в настоящее время через SQL или JavaScript). После этого сервис может вызываться через URL, поддерживающим REST клиентским приложением или другим сервисом в ThingWorx.
При создании нового сервиса можно определить свойства входных и выходных данных. Входные и выходные данные могут представлять любые стандартные типы данных ThingWorx. Каждый сервис может также иметь отдельные разрешения времени выполнения в определении сервиса. Сервису не обязательно иметь входные или выходные данные, но обычно есть первые или последние либо и те и другие. Например, если требуется отправить график поставки грузовиков, вещь грузовика может иметь сервис с входными данными с наименованием График поставки и тип XML. Сервис может принимать входные данные и помещать свойство вещи грузовика в таблицу данных.
Если требуется отправлять выходные данные непосредственно в виджет мэшапа, необходимо выбрать выходные данные типа INFOTABLE. Для вывода данных в таблицу данных необходимо будет выбрать структуру данных. Структура данных сообщает приложению, какие столбцы и типы данных будут возвращаться, чтобы приложение могло выполнить рендеринг данных. Можно выбрать любое количество входных данных на основе ваших потребностей. Например, вывод может быть запросом SQL к базе данных, который возвращает данные в мэшап. Сервис автоматически является частью интерфейса REST API сервера приложений ThingWorx (аналогично всем определениям в вашей модели). Можно использовать сервис через вызов REST из другого приложения или в мэшапе.
Если вывод определен как таблица данных, то при вызове сервиса можно запросить набор результатов в виде HTML, JSON или XML с помощью вызова URL и параметра "Принять URL" (дополнительные сведения см. в разделе Интерфейс API REST). Из-за этой гибкости и возможности в среде мэшапа легко принимать таблицу данных рекомендуется использовать этот формат в схеме по умолчанию. Конкретные требования, такие как выходные данные XML-схемы, могут быть сформулированы согласно потребностям.
После определения интерфейса функции сценария можно применить сервис, щелкнув столбец "Обработчик" этого сервиса. Откроется редактор реализации сервиса. В редакторе реализации вы выбираете обработчик (запрос SQL или сценарий). Запрос SQL доступен только для сущности базы данных. Реализацией сценария является обработчик сценариев Java на стороне сервера.
При работе с запросом SQL пишите запрос с синтаксисом, который используется для базы данных источника. Можно использовать входные данные сервиса в качестве параметров в запросе, как это можно было бы сделать с подготовленными операторами. Если свойство выходных данных представляет таблицу данных, нет необходимости обрабатывать результаты. Результат запроса появляется в таблице данных и доступен как выходные данные.
* 
Не рекомендуется использовать строку в формате '--[[]]' and '[[]]' в запросе SQL для вещи базы данных. Вместо этого, если нужно использовать строку в сервисе запросов SQL, вставьте эту строку во входную переменную и затем передайте это значение в SQL.
Обработчик сценариев является мощным средством использования всех данных, вещей и сервисов на сервере в соответствии с потребностями приложения. Можно выполнять расчеты и поиски, вызывать сервисы или получать доступ к свойствам из других вещей в модели. После выбора сценария в качестве обработчика вам будут представлены несколько вспомогательных средств сценария. Вы сможете видеть входные данные для сценария, свойства, сервисы и события вещи, которую вы правите; их можно будет вставлять в окно сценария двойным щелчком. Можно будет также выполнять обзор свойств, сервисов и событий любой другой сущности в системе. Можно будет комбинировать в вашем сервисе все возможности модели.
* 
Если сценарий вызывается с веб-страницы или URL-адреса, он выполняется в контексте вошедшего пользователя. Если у пользователя нет доступа к сервисам времени выполнения, свойствам или событиям любой сущности в сценарии, сценарий может привести к сбою.
У редактора реализации сценария также есть вспомогательные средства синтаксиса и фрагменты кода, упрощающие создание сценария.
* 
По умолчанию в платформе ThingWorx задана настройка тайм-аута сценария 30 секунд. Если сценарий выполняется дольше, платформа прерывает его выполнение. Администратор ThingWorx может настраивать тайм-аут сценария в разделе basic settings файла конфигурации platform-settings.json.
Асинхронные сервисы
Асинхронные сервисы создаются и выполняются в собственном потоке. Асинхронные сервисы не могут иметь возвращаемые значения, так как при их выполнении поток создается и выполняется независимо от платформы. При вызове из другого сервиса запрашивающий сервис не будет ожидать, пока асинхронный сервис завершит работу. Это может быть очень полезно для долго выполняющихся сервисов, особенно в таймерах, которые выполняют фоновое обновление структуры данных или выполняют задания по обслуживанию системы.
Если в опции Новый сервис выбрана настройка async, появится опция Поставить вызовы в очередь. Эта опция предназначена для удаленно связанных сервисов, которые поставят выполнение сервиса в очередь, если не будет подключена удаленная вещь. ThingWorx ставит в очередь каждую попытку выполнения сервиса, а затем выполняет их по порядку, когда удаленная вещь снова подключается.
Статистика для сервисов
Подсистема использования собирает метрики для сервисов JavaScript, которые завершаются из-за превышения времени ожидания. Дополнительные сведения см. в разделе Статистика выполнения сценария, прерванного из-за времени ожидания .
Выполнение сервисов из шаблонов вещи и профилей вещи
В ThingWorx 9.3 и более поздних версий можно выполнять сервисы из шаблонов вещи и профилей вещи. В таких случаях может потребоваться указать реализованную вещь для выполнения сервиса. На вкладке Выполнить в поле Реализация вещи выберите вещь.
Было ли это полезно?