1

我是 ThingWorx 的新手,我想在此示例中获得一些实现服务的实用风格。我有这样的数据模型:

事物“汽车”具有事物“传感器”(信息表)

我想要 CarTemplate 服务,它将返回所有已实现的汽车,而不是传感器的对象,它将返回传感器的“名称”属性。

我现在拥有的:

"Car1Name" |  SensorObject

我想要的是:

"Car1Name" | "Accelerator1Name"

请帮我实现它。

4

2 回答 2

1

ThingTemplates 上没有“静态”服务,如果您想恢复具有属性值的 ThingTemplate 的所有实现事物,您应该构建一个 Thing Helper。

什么是事物助手?这是另一回事,随便你怎么称呼它,比如说 CarHelpers,它有一个名为 GetCarsWithSensors 的服务,它执行 ThingTemplates["ThingTemplateName"].GetImplementingThings() 或 GetImplementingThingsWithData 并返回所需的信息表。

于 2016-04-20T06:57:06.513 回答
0

Carles 的回答是有效的,但我会避免使用 QueryImplementingThingsWithData。QueryImplementingThingsWithData 的问题在于 Thingworx 将检查可见性,然后检查每个已实现事物上的每个属性的安全性。如果您作为管理员组中的用户运行,这很好,但是一旦您有很多用户组和组织单位,这会减慢很多。

而是执行以下操作:(您需要创建一个 DataShape 并将其设置为您的服务返回数据形状)

var result; //result infotable, of your CarDataShape

var myThings = ThingTemplates["CarTemplate"].QueryImplementingThings();
  for(var i=0; i< myThings.getRowCount(); i++) {
    var myCar = Things[myThings.rows[i].name];
    
    for(var j=0; j < myCar.sensorProperty.getRowCount(); j++) {
      var newRow = {};
      newRow.name = myCar.name;
      newRow.sensor = myCar.sensorProperty.rows[j].sensorName;
      result.AddRow(myCar);
    }
}

于 2017-03-24T03:37:12.990 回答