0

我有一个 userStreamname,address,status

我想将此详细信息存储在UserDetailsTable(内存表中)

UserDetailsTable 的结果如下

"Jose",  "address1","false" 
"Rockey","address2","false" 
"sibin", "address3","false"

我还有另一个triggerStream名字,triggerStatus

"Rockey","delete"
"Jose"  ,"update"

案例1)triggerStream作为“Rockey”出现时,我想UserDetailsTable根据(名称和triggerStatus)加入这个triggerStream并从UserDetailsTable中删除该行。

案例2)triggerStream作为“Jose”出现时,我想根据(名称和triggerStatus)加入这个triggerStream并在UserDetailsTable中将状态更新为“true”。UserDetailsTable

UserDetailsTable 的最终状态如下。

"Jose",  "address1","true"
"sibin", "address3","false"

怎么能用 WSO2 CEP 做到这一点?

4

1 回答 1

1

假设您已经定义了流和表以及一个插入查询来填充内存表。

对于案例 1,您可以使用如下的删除查询和条件:

from triggerStream 
delete userDetailsTable
on name == userDetailsTable.name and triggerStatus == userDetailsTable.status;

如果要删除特定名称,例如“rokey”,可以向上述查询添加过滤器,如下所示:

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

于 2015-05-26T10:48:26.710 回答