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

问题描述 投票:0回答:1

我需要能够创建一个事件处理规则,当您添加新设备时,您从一个片段中获取一个字符串值(例如: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") != "";

任何关于我们弄乱语法的指导都将非常感激。

cumulocity
1个回答
1
投票

它应该是:m.managedObject.id作为id。

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

同样适用于所有其他Cumulocity流。流本身例如ManagedObjectCreated或AlarmUpdated等不是直接对象。它们总是具有类似于managedObject的属性,或者对于AlarmUpdated它是警报。此属性是实际有效负载。

像getString这样的辅助方法是以可以传递有效负载或完整流对象的方式编写的,因此无关紧要。

© www.soinside.com 2019 - 2024. All rights reserved.