1. ThingWorx 平台连接与建模初体验

ThingWorx 平台连接与建模初体验 学习卡片

为什么先建 Shape,再建 Template,最后建 Thing

ThingWorx 的对象模型是三层递进关系:ThingShape 定义“能力”(属性、服务、事件、订阅的抽象集合),ThingTemplate 定义“一类设备的完整规格”(可继承多个 Shape,并补充模板级属性),Thing 是“具体实例”(继承 Template 后拥有独立属性值)。本例要建模一个虚拟温度传感器,正确顺序是先定义 TemperatureSensorShape,再基于它创建 VirtualTempSensorTemplate,最后实例化 Sensor_01 并绑定属性。

抽象层 规格层 实例层 ThingShape TemperatureSensorShape 属性: temperature (NUMBER, 只读) unit (STRING, 默认 "°C") ThingTemplate VirtualTempSensorTemplate 实现 Shape: TemperatureSensorShape 模板属性: sampleInterval (INTEGER, 默认 5) Thing Sensor_01 继承 Template: VirtualTempSensorTemplate temperature = 23.5 (当前值) 实现 实例化 属性绑定与验证 1. 在 Sensor_01 中绑定属性 temperature ← 虚拟数据源 2. 设置初始值 temperature = 23.5 °C 3. 读取属性值 Composer 属性面板 / GetPropertyValues 4. 验证结果 返回 23.5,类型 NUMBER ✓ 验证清单 ☐ Thing 继承 Template 成功 ☐ temperature 属性可读 ☐ unit 默认值为 "°C" ☐ sampleInterval = 5

在 Composer 中完成建模的关键操作

登录 ThingWorx Composer 后,按以下顺序操作。每一步都对应上面 SVG 中的层级关系。

第一步:创建 ThingShape

  1. 导航到 Modeling → ThingShapes,点击 + 新建。
  2. Name 填写 TemperatureSensorShape,Project 选择默认或新建 Training。
  3. 在 Properties 标签页添加两个属性:
    • temperature:Base Type 选 NUMBER,Data Change Type 选 VALUE,Read Only 勾选。
    • unit:Base Type 选 STRING,Default Value 填 °C。
  4. 点击 Save 保存 Shape。

第二步:创建 ThingTemplate

  1. 导航到 Modeling → ThingTemplates,点击 + 新建。
  2. Name 填写 VirtualTempSensorTemplate。
  3. 在 Implemented Shapes 区域点击 +,搜索并添加 TemperatureSensorShape。
  4. 在 Properties 标签页添加模板级属性 sampleInterval:Base Type 选 INTEGER,Default Value 填 5。
  5. 点击 Save 保存 Template。

第三步:创建 Thing 并绑定属性

  1. 导航到 Modeling → Things,点击 + 新建。
  2. Name 填写 Sensor_01,Thing Template 选择 VirtualTempSensorTemplate。
  3. 保存后进入 Properties 标签页,可以看到继承来的 temperature、unit 和 sampleInterval。
  4. 将 temperature 的当前值手动设为 23.5,点击 Save。
命名规范建议:Shape 用 XxxShape,Template 用 XxxTemplate,Thing 用 Xxx_编号。这样在 Composer 搜索时能快速区分对象类型,也便于后续批量实例化。

验证对象模型是否生效

建模完成后,通过以下三种方式验证三层关系是否正确建立:

验证项 操作路径 预期结果
Shape 被 Template 实现 打开 VirtualTempSensorTemplate → Implemented Shapes 列表中显示 TemperatureSensorShape
Thing 继承 Template 属性 打开 Sensor_01 → Properties 可见 temperature、unit、sampleInterval 三个属性
属性值可读取 在 Sensor_01 的 Properties 面板查看 temperature 显示 23.5,类型为 NUMBER

如果 temperature 属性在 Thing 中不可见,检查 Template 的 Implemented Shapes 是否保存成功;如果属性值无法修改,检查 Shape 中是否误勾了 Read Only(本例中 temperature 设为只读是合理的,因为真实传感器数据由设备写入,但手动验证时可临时取消勾选)。

核心结论:ThingWorx 的对象模型通过 Shape → Template → Thing 的继承链实现复用。Shape 定义能力契约,Template 组合能力并补充规格,Thing 承载具体数据。本例中 Sensor_01 的 temperature 属性最终来源于 TemperatureSensorShape,而 sampleInterval 来源于 VirtualTempSensorTemplate,两者在 Thing 层合并可见。