CEP规则可更新托管对象中的片段

时间:2019-03-26 20:58:57

标签: cumulocity

我需要能够创建一个事件处理规则,以便在添加新设备时从一个片段(例如: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") != "";

任何有关我们在哪里弄乱语法的指导都将不胜感激。

1 个答案:

答案 0 :(得分:1)

应为:m.managedObject.id作为ID。

通常,您还会在编译时遇到错误,但可能是流还具有id,因此从技术上讲它在CEP中可以工作。您应该能够检查它是否在调试流上触发,并查看已设置的ID。

所有其他累积流都相同。流本身例如ManagedObjectCreated或AlarmUpdated等不是直接的对象。它们始终具有这样的属性,在这种情况下为managedObject,对于AlarmUpdated,则为警报。此属性是实际的有效载荷。

诸如getString之类的辅助方法以可以传递有效负载或完整流对象的方式编写,因此无关紧要。