2016-04-19 9 views
0

私はThingWorxを初めて使っています。この例では、サービスを実装するための実用的な味を出したいと思います。 私は、このようなデータモデルがあります:Thingworx:GetImplementingThings`サービスをカスタマイズする

シング「カー」シング「センサー」(Infotable)

私はすべての実装車を返しますCarTemplateのサービスを持っていると思いますし、代わりにセンサーのオブジェクトのそれを持っているがSensorの 'name'プロパティが返されます。私が今持っている何

:私が欲しいもの

"Car1Name" | SensorObject 

"Car1Name" | "Accelerator1Name" 

、それが起こる作るために私を助けてください。

答えて

1

ThingTemplateに「静的」なサービスはありません。ThingTemplateのすべての実装を、Thingヘルパーを構築する必要があるプロパティ値でリカバリする場合はありません。

Thingヘルパーとは何ですか?もう一つは、あなたが欲しいと思っているものを呼び出してみましょう.CerHelpersには、ThingTemplates ["ThingTemplateName"]を実行するGetCarsWithSensorsというサービスがあります。GetImplementingThings()、またはGetImplementingThingsWithDataを呼び出し、目的のInfotableを返します。

0

Carlesの回答は有効ですが、私はQueryImplementingThingsWithDataの使用を避けます。 QueryImplementingThingsWithDataの問題は、Thingworxが可視性をチェックし、次に実装されたすべての単一のプロパティのセキュリティをチェックすることです。これは、Administratorsグループのユーザーとして実行していても、一度多くの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); 
 
    } 
 
}

代わりにこのような何かを行います