Подписки на вещь
Подписки являются сервисами, которые получают события и реагируют на них. Подписка содержит источник, обычно это Вещь. Вещь может иметь подписку на событие, на которое отвечает действием. Например, если сущность инициирует событие Двигатель перегревается, она может подписаться на это событие, запуская подписку Выключить двигатель. Вещи могут наследовать подписки от шаблонов вещи и профилей вещи, которые они используют.
Подписка подобна стандартному сервису, но она связана с событием явно. Это позволяет отсоединить событие от кода, который отвечает на него. Чтобы реагировать на событие, можно, как и для сервиса, применить пользовательскую бизнес-логику. Можно использовать возможности модели, отправляя электронные письма через вещь почтового сервера, записывая в базу данных или вызывая любые сервисы, доступные в платформе. У подписки нет явных возвращаемых выходных данных, как у сервиса. Однако подписка может вызывать любой другой сервис в модели, к которой имеет доступ контекст безопасности потока. Контекст безопасности потока для подписки задается, как тот же контекст безопасности потока инициированного события. Можно использовать ту же среду редактирования JavaScript, которая используется для реализации сервиса.
Подписки имеют определенные входные данные, которые являются пакетом данных, выпущенным событием; их называют данными события. Если сущность подписана на определенное событие, данные этого события передаются в функцию подписки. Данные события описываются в структуре данных события. В реализации подписки данные, которые передаются из события, действуют как входные данные для функции сценария. Например, если сущность подписана на событие изменения данных свойства вещи, вызывается функция сценария подписки. В результате значение свойства вещи вместе с другими соответствующими данными из события передается в функцию как часть данных события.
Несколько сущностей может подписаться на одно и то же событие. Каждая сущность получает вызов подписки с переданными данными события. Сущность может выполнить любое действие из сценария подписки для реализации требований к решению.
Некоторые преимущества использования этой методики в сравнении с использованием сервиса, который вызывается из другого сервиса, включают следующие:
Можно подписаться на событие по одной или нескольким подпискам.
События вызываются на основе задач системы, и вмешательство пользователя не требуется.
Если на событие подписывается несколько вещей, можно использовать подписку вместо объединения нескольких сервисов.
* 
Несколько подписок на одно и то же событие, определенные в одной той же вещи (дублирующиеся подписки), поддерживаются в ThingWorx версии 8.4.0 и более поздних.
* 
Триггер событий и подписки выполняются в асинхронном режиме. Например, запрос API на обновления свойства получает немедленный отклик по завершении действия по обновлению свойства. В нем не ожидается, чтобы завершились последующие подписки, которые реагируют на событие изменения данных.
Несколько подписок
Подписки имеют в качестве уникального идентификатора наименование, определенное пользователем. Сущности могут иметь несколько подписок на одно событие вещи. Например, если сущность инициирует событие Двигатель перегревается, можно создать для события подписку Выключить двигатель и подписку Создать заказ на работу, чтобы выполнить обслуживание двигателя. Для этого события можно также создать любое количество других подписок.
Если шаблон вещи или профиль вещи реализует подписку на событие, то вещи, которые используют этот шаблон вещи или профиль вещи, могут также создать подписки на то же событие и не требуются другие пути для выполнения дополнительных действий для этих событий.
Распределенные подписки
* 
Возможность распределенной подписки доступна в среде только высокой доступности в версиях ThingWorx 9.4 и выше.
Распределенные подписки позволяют распределять выполнение подписки между всеми узлами ThingWorx, когда событие инициируется многими экземплярами подписок. Например, многие вещи подписаны на одно и то же событие таймера или планировщика. Это обеспечивает горизонтальную масштабируемость выполнения подписки на основе таймера или планировщика во всех узлах ThingWorx в средах высокой доступности для повышения производительности и эффективности использования ресурсов. Такое поведение активируется флажком Распределенные на вкладке Подписка. Если флажок Распределенные не установлен, подписки на таймеры и планировщики выполняются в том же узле, в котором генерируется событие таймера или планировщика. Дополнительные сведения о связанной конфигурации см. в следующих разделах:
Для локальной среды см. раздел Конфигурирование SSL/TLS для AKKA.
Для среды Docker см. раздел Конфигурирование связи Akka TLS для ThingWorx.
Было ли это полезно?