事物订阅
订阅是接收 事件并对事件进行响应的服务。订阅包含源 (通常为 事物)。事物可以订阅通过某一操作作出响应的事件。例如,如果某个实体触发电动机过热 事件,则可通过触发关闭电动机 订阅来订阅该事件。事物可以从其使用的 事物模板事物形态继承订阅。
订阅类似于标准服务,但它与事件显式关联。这样,您便可将事件从对其作出响应的代码中分离出来。像服务一样,您可以实现自定义业务逻辑来对事件作出反应。可以利用模型的功能,方法包括通过邮件服务器事物发送电子邮件、写入数据库或调用平台中可用的任何服务。订阅不能像服务那样具有显式返回输出。但是,订阅可以调用模型中线程安全上下文有权访问的任何其他服务。订阅的线程安全上下文被设置为与所触发事件使用相同的线程安全上下文。可以使用用于实现服务的 JavaScript 编辑环境。
订阅具有已定义的输入,该输入是由事件发布的数据包,称为事件数据。如果实体订阅了已定义事件,则会将事件数据传递给订阅函数。事件数据由事件 数据形状进行描述。在订阅实现中,从事件传递的数据用作脚本函数的输入。例如,如果将某个实体订阅到事物属性数据更改事件,则会调用订阅脚本函数。因此,事物属性值以及来自事件的其他相关数据会作为事件数据的一部分传递给函数。
多个实体可以订阅同一事件。每个实体可以使用传递的事件数据接收对订阅的调用。为达到解决方案的要求,实体可以采取订阅脚本中的任何操作。
使用此方法与使用从另一服务中调用的服务相比,其优点包括:
事件可通过一个或多个订阅进行订阅。
将根据系统活动调用事件,无需用户交互。
如果有多个事物订阅了某个事件,则可以使用订阅而不是链接多个服务。
* 
ThingWorx 8.4.0 及更高版本支持对同一事物上定义的同一事件进行多次订阅或重复订阅。
多次订阅
从 8.4.0 起,订阅将使用用户定义的名称作为唯一标识符。实体可以对事物上的事件进行多次订阅。例如,如果某个实体触发电动机过热 事件,则它可以使用关闭电动机 订阅和创建工作订单 订阅来订阅该事件,以便对该引擎进行维护检查。也可以为该事件创建任意数量的其他订阅。
如果事物模板或事物形态实现了对某事件的订阅,则使用该事物模板或事物形态的事物也可以创建同一事件的订阅,而无需其他替代方法来在触发事件时执行其他操作。