我有一个拥有name,address,status
我想将这些详细信息存储在UserDetailsTable
(内存表)
UserDetailsTable的结果在
之下"Jose", "address1","false"
"Rockey","address2","false"
"sibin", "address3","false"
我有另一个triggerStream
名称,triggerStatus
"Rockey","delete"
"Jose" ,"update"
案例1)
当triggerStream
出现" Rockey"时,我想根据(name和triggerStatus)将此triggerStream与UserDetailsTable
连接起来,并从UserDetailsTable中删除该行。
案例2)当triggerStream
来到" Jose"时,我想根据{名称triggerStream
加入UserDetailsTable
和triggerStatus)并将状态更新为" true"在UserDetailsTable中。
UserDetailsTable的最终状态如下所示。
"Jose", "address1","true"
"sibin", "address3","false"
如何使用WSO2 CEP做到这一点?
答案 0 :(得分:1)
假设您已定义了流和表以及插入查询以填充内存表。
对于案例1,您可以使用以下条件使用删除查询:
from triggerStream
delete userDetailsTable
on name == userDetailsTable.name and triggerStatus == userDetailsTable.status;
如果您想删除特定名称,例如'rockey',您可以在上面的查询中添加一个过滤器,如下所示:
from triggerStream[name == 'rockey']
delete userDetailsTable
on name == userDetailsTable.name and triggerStatus == userDetailsTable.status;
对于案例2,您可以使用带有'jose'过滤器的更新查询,如下所示:
from triggerStream[name == 'jose']
select name, triggerStatus as status
update userDetailsTable on name == userDetailsTable.name
在此查询中,我们将属性“triggerStatus”重命名为“status”,使其等于表的属性名称。