2016-04-19 63 views
0

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

事“租车”有东西“传感器”(Infotable)

我想有CarTemplate的服务,将返回所有实施汽车,而不是传感器的对象,并将其将返回Sensor的'name'属性。

我现在拥有的一切:

"Car1Name" | SensorObject 

我想要什么:

"Car1Name" | "Accelerator1Name" 

请帮我做它发生。

回答

1

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

什么是帮手?这是另一回事,可以任意调用它,比方说CarHelpers,它有一个名为GetCarsWithSensors的服务,它执行ThingTemplates [“ThingTemplateName”],GetImplementingThings()或GetImplementingThingsWithData,并返回所需的Infotable。

0

Carles答案是有效的,但我会避免使用QueryImplementingThingsWithData。 QueryImplementingThingsWithData的问题是Thingworx将检查可见性,然后检查每个实现的Thing上的每个属性的安全性。如果您以管理员组中的用户身份运行,这很好,但一旦您拥有大量的UserGroups和OrganizationalUnits,就会减慢速度。

而是做这样的事情:(你需要创建一个DataShape,并设置为你的服务回报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); 
 
    } 
 
}