Правило CEP для обновления фрагментов в управляемом объекте - PullRequest
0 голосов
/ 26 марта 2019

Мне нужно иметь возможность создать правило обработки событий, согласно которому при добавлении нового устройства вы берете строковое значение из одного фрагмента (например, 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 Ответ

1 голос
/ 27 марта 2019

Это должно быть: m.managedObject.id как id.

Обычно вы также получаете сообщение об ошибке при компиляции, но может случиться так, что потоки также имеют идентификатор, чтобы он технически работал в CEP. Вы должны быть в состоянии проверить, запускается ли он в потоке отладки, и увидеть установленный идентификатор.

То же самое относится ко всем другим потокам Cumulocity. Сами потоки, например ManagedObjectCreated или AlarmUpdated и т. Д. Не являются объектами напрямую. У них всегда есть свойство, как в данном случае managedObject или для AlarmUpdated, это тревога. Это свойство является фактической полезной нагрузкой.

Вспомогательные методы, такие как getString, написаны таким образом, что вы можете передавать либо полезную нагрузку, либо объект полного потока, поэтому там это не имеет значения.

...