使用Siddhi加入更新/删除WSO2 CEP事件表

时间:2015-05-21 15:16:55

标签: wso2 wso2cep siddhi

我有一个拥有name,address,status

的userStream

我想将这些详细信息存储在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做到这一点?

1 个答案:

答案 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”,使其等于表的属性名称。