2016-04-19 62 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); 
 
    } 
 
}