CEP 列表作为单个项目(遍历托管对象)
CEP List as single items (iterate over managed obejects)
在 CEP 中,我可以将托管对象作为列表获取,例如使用函数“...ManagedObjectByType”。获取列表后,我使用 AllOf 函数过滤列表。现在,我想将列表中的每个托管对象放入一个新流({A,B,C} - > A,B,C),因此它们彼此分开以便生成例如警报下一阶段。不幸的是,我不知道如何从列表中生成单个事件(托管对象)。有人可以帮忙吗?
最好的,
妮可
你可以这样做:
create schema Device as ManagedObject;
create schema CollectedDevices(
devices List
);
create schema SingleDevice(
device Device
);
insert into CollectedDevices
select
findAllManagedObjectByFragmentType("c8y_IsDevice") as devices
from pattern[timer:interval(10 seconds)];
insert into SingleDevice
select
singleDevice as device
from
CollectedDevices as devices unidirectional,
CollectedDevices[devices@type(Device)] as singleDevice;
然后将为列表中的每个元素触发最后一个语句。
您可以在此处找到连接的 esper 文档:
http://esper.espertech.com/release-5.4.0/esper-reference/html/epl_clauses.html#epl-join
在 CEP 中,我可以将托管对象作为列表获取,例如使用函数“...ManagedObjectByType”。获取列表后,我使用 AllOf 函数过滤列表。现在,我想将列表中的每个托管对象放入一个新流({A,B,C} - > A,B,C),因此它们彼此分开以便生成例如警报下一阶段。不幸的是,我不知道如何从列表中生成单个事件(托管对象)。有人可以帮忙吗?
最好的, 妮可
你可以这样做:
create schema Device as ManagedObject;
create schema CollectedDevices(
devices List
);
create schema SingleDevice(
device Device
);
insert into CollectedDevices
select
findAllManagedObjectByFragmentType("c8y_IsDevice") as devices
from pattern[timer:interval(10 seconds)];
insert into SingleDevice
select
singleDevice as device
from
CollectedDevices as devices unidirectional,
CollectedDevices[devices@type(Device)] as singleDevice;
然后将为列表中的每个元素触发最后一个语句。
您可以在此处找到连接的 esper 文档: http://esper.espertech.com/release-5.4.0/esper-reference/html/epl_clauses.html#epl-join