我需要能够创建一个事件处理规则,当您添加新设备时,您从一个片段中获取一个字符串值(例如:c8y_Hardware.imei)并使用该字符串填充另一个片段(例如:c8y_Mobile.imei)。因此,新设备在c8y_Hardware.imei和c8y_Mobile.imei中具有相同的值。
我们已尝试设置适当的CEP规则,但它们不起作用(它们会编译并保存)。
insert into UpdateManagedObject
select
m.id as id,
{
"c8y_Mobile.imei", getString(m,"c8y_Hardware.imei")
} as fragments
from
ManagedObjectCreated as m
where
getString(m,"c8y_Hardware.imei") != "";
任何关于我们弄乱语法的指导都将非常感激。
它应该是:m.managedObject.id作为id。
通常你也会在编译时遇到错误,但可能是流也有一个id,所以它在技术上可以在CEP中工作。您应该能够检查它是否在调试流上触发并查看已设置的ID。
同样适用于所有其他Cumulocity流。流本身例如ManagedObjectCreated或AlarmUpdated等不是直接对象。它们总是具有类似于managedObject的属性,或者对于AlarmUpdated它是警报。此属性是实际有效负载。
像getString这样的辅助方法是以可以传递有效负载或完整流对象的方式编写的,因此无关紧要。