事物属性
事物属性用于描述与事物相关的数据点。例如,客户可能具有名称属性和地址属性。卡车可能具有下列属性:驾驶员、容量和位置。
属性是了解事物当前状况的一种简便方法。属性可以是静态的 (例如制造商和型号),也可以是动态的 (例如温度)。可以根据资产结构、业务流程以及要交付的解决方案来设置属性。
创建属性时,您可以选择下列其中一种绑定:
My Property
本地事物的属性。这是默认设置。
Local Bound
将该属性链接到 ThingWorx 服务器上针对其他事物定义的属性。可以将此属性设置为只读,而它仍然可以接收来自服务器上另一个属性的值。此属性不会用于远程设备,除非您正在创建远程绑定属性的本地绑定。
Remote
当远程设备首次连接到 ThingWorx 服务器时,服务器会将远程设备绑定到其相应的事物。远程设备绑定后,您需要在该远程设备上定义的每个属性和 ThingWorx 中表示该设备的远程事物之间创建一个远程绑定。ThingWorx 使用此绑定来通过活动的 WebSocket 连接向远程设备发送和接收来自远程设备的每个属性值的更新。
* 
如果本地事物和远程事物具有名称相同的属性,并且另一个属性绑定到远程属性设置,则远程属性还会设置本地属性值。
* 
有关设置属性绑定的信息,无论是本地还是远程,请参阅 管理属性绑定
每个属性都有一个名称、说明和一个 ThingWorx 数据类型,在 ThingWorx 中称为“基本类型”。根据基本类型,可能会启用其他字段。简单标量类型 (如数字或字符串) 会添加基本字段 (如默认值)。更复杂的基本类型会有更多选项。例如,INFOTABLE 基本类型包括通过定义数据形状来描述信息表数据结构的功能。有关详细信息,请参阅 下面的基本类型表
事物属性值包含三个特征:值、时间戳和质量 (VTQ)。 VTQ 值可以提供,也可自动设置,且可接受的质量状况位于 QualityStatus 类中。每当设置或更新属性时,其所有 VTQ 特征都会进行更新。
通常,可在 Composer 中通过设置 me.PropertyName = value 来更新属性,且时间戳可反映服务器的当前时间戳。对于批处理历史更新,您可以使用 UpdatePropertyValues 服务,此服务可用于传递特定的值、时间戳和质量。属性值不能设置为空。
* 
编写自定义服务时,请避免生成可同时修改指定实体同一属性的代码。例如,不要同时递增或递减属性值,因为这会产生不可预测的属性值。同样,在订阅中将递增属性作为计数器使用也是常见的误用情况,这将导致结果不准确。
在 ThingWorx 8.3.13、8.4.9、8.5.5 和更高版本中,当设置历史属性值时,将触发 HistoricalDataLogged 事件。例如,实体上 VTQ 属性的当前设置时间戳为 2020-02-04 20:16:20。在导入该实体的新版本时,将设置一个较旧的 VTQ 属性,例如 2019-12-24 19:00:45。此设置将导致针对该属性触发 HistoricalDataLogged 事件,并且将执行有关该属性上事件的所有订阅。
警报
有关警报的信息,请参阅 警报
属性的特性
属性可具有下列特性设置:
“持久化”
如果选中或设置为 true,则每个值更改都会持久保存到数据库中。
持久化属性数据库写入以异步的形式发生,以避免出现死锁。虽然会即时设置属性值,但数据库写入将在稍后的时间点以异步形式发生。在持久化属性值写入到数据库之前,会出现以下验证:
事物必须仍然存在。
事物必须有一个 id。
事物 id 和待处理写入 id 必须匹配。
事物必须仍然定义与待处理写入同名的属性。
定义的属性必须仍为持久化属性。
更新并重新启动不会影响队列处理。
“只读”
如果选中或设置为 true,则数据是静态的,无法在运行时写入。要对值进行更改,唯一方法是更改默认值。这对静态配置数据很有用。
“已记录”
如果选中或设置为 true,则在数据更改时 (基于数据更改类型),该属性值会自动记录到值流中。
* 
如果在特定情况下无法触发数据更改事件,则不会记录值流条目,但会保留属性值设置。可以在实体上设置属性,但可能会因为队列写入已满且无法清空数据库而放弃相应的值流写入。如果在传入的写入量大于针对队列配置的清空速度时,则可能会发生这种情况。可根据每个持久化方案提供程序在 platform-settings.json 中对此进行调整。ThingWorx 与数据库之间断开连接还可能会导致队列以高性能方式备份而非空。
数据更改信息
“数据更改类型”
此设置指定何时通过属性值更改来触发数据更改事件。当必须根据属性的值启动其他进程时会用到此设置。每个订阅者都会收到一则更改通知以及一个包含旧属性值和新属性值的信息表。例如,您可以为 DeliverySchedule 属性的更改设置订阅。如果计划发生更改,则可以通过短信通知驾驶员。
“数据更改类型”选项如下所示:
“始终”- 会针对任何属性值更改触发订阅者事件。
“从不”- 不会触发更改事件。
“开启”- 对于大多数值,任何更改都将触发事件。对于更为复杂的基本类型 (如信息表),事件规则可能会有所不同。
“关闭”- 如果新值的计算结果为布尔值 false,则触发事件。
“值”- 对于数值而言,如果新值的更改超过了阈值,则触发更改事件。阈值使用 dataChangeThreshold 特性 (一个数字) 进行指定。对于非数值而言,此设置的作用与“始终”相同。
远程绑定信息
下表列出了将“绑定”选项设置为“远程绑定”时的可用选项。
选项
说明
“远程属性名称”
属性存在于 Edge 时的名称。
* 
属性名称和绑定的 Edge 事物属性名称无需相同。
“缓存方法”
缓存方法可提供以下方法来读取绑定的 Edge 属性值:
“从服务器缓存读取”会禁止对 Edge 属性值的服务器请求。该选项只会从服务器检索值。对服务器缓存的 Edge 属性值的所有更新取决于 Edge 属性的“数据更改类型”和扫描速率 (Edge 属性值推送定义)。如果未正确设置 Edge 属性,则服务器可能会没有 Edge 属性值,并且只能返回服务器属性的默认值。如果绑定的 Edge 属性的“数据更改类型”为“始终”或“值”,则缓存类型默认使用此设置。
“每次读取时从远程获取”将针对每个请求从 Edge 检索 Edge 属性值。此选项没有缓存。如果绑定的 Edge 属性的“数据更改类型”为“从不”,则缓存类型默认使用此设置。
“缓存保持特定时间”用于控制 Edge 属性的请求频率。在第一次请求后,服务器会访问 Edge 属性以获取其值,且在定义的秒数之内不会对 Edge 属性进行再次请求。请注意,Edge 属性可能会在此时间内更新服务器上的值 (通过推送)。
“缓存间隔”
服务器缓存 Edge 属性值将持续的时间段 (以秒为单位),在经过此时间间隔后,属性值请求才能从 Egde 中对该值进行检索。在第一次请求时,系统始终从 Edge 中检索该值。
“开始类型”
指定在远程绑定属性的事物开始或重新启动时用于对该远程绑定属性进行初始化的值。此初始化的值不会触发属性更改事件。
“使用默认值”- 将属性的初始值设置为指定的默认值,忽略 Edge 侧值。如果该属性持久保存,则初始值将被设置为最后一个持久保存到数据库的值。
“读取 Edge 值”- 查询 Edge 的当前值,以便服务器上的值始终与 Edge 上的值同步,即使事物在服务器上重新启动也是如此。
“推送类型”
“推送类型”仅适用于 Edge 增强事物属性。这些组件可将其值更改推送到服务器。您可以使用服务器属性绑定来配置此功能。
“基于值更改推送”:您可以配置值更改阈值。使用此设置时,还可以设置“推送阈值”的值,该值是一个死区,必须超过该死区才能将新值从 Edge 推送到服务器。
“从不推送”
“始终推送”
“推送阈值”
“推送类型”设置为“基于值更改推送”时,此选项才可用。该选项可指定发生属性值推送时 Edge 属性值的范围 (正或负)。属性值的变化必须大于指定值。
“断开连接时”
指定远程事物连接暂时丢失时应如何处理远程属性值绑定。
断开连接时“忽略有改动的值”
“将所有的更改合并为单个上次更改值”- 当连接恢复时,发送上次更改值。
“超时”
执行属性读/写操作期间调用远程事物所用的超时时间。
“使用系统默认设置”- 默认值为 30 秒。
“自定义超时”。添加至“超时间隔 (秒)”
属性基本类型
已定义的基本类型将为属性中所存储的数据提供上下文。下表列出了适用于所有事物实体的基本类型:
基本类型
说明
BASETYPENAME
有效的基本类型名称。
BLOB
二进制大对象 (BLOB)。
BOOLEAN
True 或 False 值。
DASHBOARDNAME
仪表板名称。
DATASHAPENAME
对模型中数据形状的引用。使用特殊处理。
DATETIME
格式化的日期和时间。
GUID
全局唯一标识符。创建 GUID 属性后,如果用户未设置默认值或值,则会自动创建一个 GUID。持久化和非持久化 GUID 属性遵循以下行为,且以下行为也适用于联合身份验证模式:
如果该属性设置为持久化或非持久化,并且用户未设置默认值或值,则每次初始化事物时都会生成一个新的 GUID 值。如果系统或事物重新启动,则会生成一个新值。
如果该属性是持久化的,并且用户设置了默认值或值,则事物或系统重新启动时不会生成新值。
GROUPNAME
用户组名称。
HTML
HTML 内容。
HYPERLINK
标准 URL (例如 www.ptc.com)。
IMAGE
可以渲染为图像的二进制数据。
IMAGELINK
图像的 URL 链接。
INFOTABLE
ThingWorx 中数据的标准表示,类似于 SQL 结果集。有许多用于构建、使用和解析信息表的内置服务。
INTEGER
写入时不包含小数部分的数字。
JSON
Javascript 对象表示法 (JSON) 对象。
LOCATION
标准世界大地测量系统 (WGS) 84 坐标,表示为 [经度,纬度],海拔。
LONG
当所需长度超出 INTEGER 基本类型可提供的范围时,应使用 LONG 类型。
MASHUPNAME
ThingWorx 混搭的引用。使用特殊处理。
MENUNAME
菜单名称。
NUMBER
一个数字。
* 
允许使用指数值。例如,123e45
PASSWORD
掩码密码值。
* 
有关其他信息,请参阅 密码
QUERY
包括 filters 数组的 JSON 对象。每个筛选器都应包括 valuetypefieldname
SCHEDULE
使用计划编辑器配置的基于 cron 的计划。
STRING
任意数量的字母数字字符。
TAGS
ThingWorx 标记值。
TEXT
任意数量的字母数字字符。与 STRING 的区别在于对 TEXT 进行了索引。
THINGCODE
事物的数值表示,包含“域 ID”和“实例 ID”。例如 2:1。
THINGNAME
对模型中事物的引用。使用特殊处理。
THINGSHAPENAME
对模型中事物形态的引用。使用特殊处理。
THINGTEMPLATENAME
事物模板的名称。
USERNAME
ThingWorx 用户的引用。
VEC2
两个数字的集合。例如,2D 坐标 x 和 y。
VEC3
三个数字的集合。例如,3D 坐标 x、y 和 z。
VEC4
四个数字的集合。例如,4D 坐标 x、y、z 和 w。
XML
一个 XML 片段或文档。
* 
“最小值”“最大值”字段中输入的值仅供参考。可接受小于或大于指定值的实际值。
相关链接