Thingworx:自定义“GetImplementingThings”服务
Thingworx: Customize `GetImplementingThings` service
我是 ThingWorx 的新手,我想了解在此示例中实现服务的一些实际情况。
我有这样的数据模型:
Thing 'Car' has Thing 'Sensor'(Infotable)
我想要 CarTemplate 服务,它将 return 所有实现的汽车,而不是传感器的对象,它将 return 传感器的 'name' 属性.
我现在拥有的:
"Car1Name" | SensorObject
我想要的:
"Car1Name" | "Accelerator1Name"
请帮我实现它。
ThingTemplates 上没有任何一种 "Static" 服务,如果您想恢复具有属性值的 ThingTemplate 的所有实现事物,您应该构建一个事物助手。
什么是事物助手?这是另一回事,随便你怎么称呼它,比方说 CarHelpers,它有一个名为 GetCarsWithSensors 的服务,它执行 ThingTemplates["ThingTemplateName"].GetImplementingThings() 或 GetImplementingThingsWithData 和 returns 所需的信息表。
Carles 的回答是有效的,但我会避免使用 QueryImplementingThingsWithData。
QueryImplementingThingsWithData 的问题在于 Thingworx 将检查可见性,然后检查每个已实现事物上每个 属性 的安全性。如果您是 运行 作为 Administrators 组中的用户,这很好,但是一旦您拥有大量 UserGroups 和 OrganizationalUnits,这将减慢很多。
改为执行如下操作:(您需要创建一个 DataShape 并将其设置为您的服务 return 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);
}
}
我是 ThingWorx 的新手,我想了解在此示例中实现服务的一些实际情况。 我有这样的数据模型:
Thing 'Car' has Thing 'Sensor'(Infotable)
我想要 CarTemplate 服务,它将 return 所有实现的汽车,而不是传感器的对象,它将 return 传感器的 'name' 属性.
我现在拥有的:
"Car1Name" | SensorObject
我想要的:
"Car1Name" | "Accelerator1Name"
请帮我实现它。
ThingTemplates 上没有任何一种 "Static" 服务,如果您想恢复具有属性值的 ThingTemplate 的所有实现事物,您应该构建一个事物助手。
什么是事物助手?这是另一回事,随便你怎么称呼它,比方说 CarHelpers,它有一个名为 GetCarsWithSensors 的服务,它执行 ThingTemplates["ThingTemplateName"].GetImplementingThings() 或 GetImplementingThingsWithData 和 returns 所需的信息表。
Carles 的回答是有效的,但我会避免使用 QueryImplementingThingsWithData。 QueryImplementingThingsWithData 的问题在于 Thingworx 将检查可见性,然后检查每个已实现事物上每个 属性 的安全性。如果您是 运行 作为 Administrators 组中的用户,这很好,但是一旦您拥有大量 UserGroups 和 OrganizationalUnits,这将减慢很多。
改为执行如下操作:(您需要创建一个 DataShape 并将其设置为您的服务 return 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);
}
}