Thingworx:自定义`GetImplementingThings`服务

时间:2016-04-19 14:46:20

标签: thingworx

我是ThingWorx的新手,我希望在这个例子中获得实现服务的实际风格。 我有这样的数据模型:

  

Thing'Car'有东西'传感器'(Infotable)

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

我现在拥有的:

"Car1Name" |  SensorObject

我想要的是什么:

"Car1Name" | "Accelerator1Name"

请帮助我实现它。

2 个答案:

答案 0 :(得分:1)

ThingTemplates上没有任何“静态”服务,如果你想恢复ThingTemplate的所有实现内容,你应该建立一个Thing Helper属性值。

什么是东西助手?这是另一回事,无论你想要什么都叫它,比如CarHelpers,它有一个名为GetCarsWithSensors的服务,它执行ThingTemplates [“ThingTemplateName”]。GetImplementingThings()或GetImplementingThingsWithData并返回所需的Infotable。

答案 1 :(得分:0)

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

而是执行以下操作:(您需要创建一个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);
    }
}
&#13;
&#13;
&#13;