Присоединяйтесь к обновлению/удалению таблицы событий WSO2 CEP с помощью Siddhi

У меня есть userStream с name,address,status

Я хочу сохранить эти данные в UserDetailsTable (в таблице памяти)

Результат UserDetailsTable ниже

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

У меня есть еще один triggerStream с именем,triggerStatus

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

Случай 1) Когда triggerStream появляется как "Rockey", я хочу присоединиться к этому триггерному потоку с UserDetailsTable в соответствии с (имя и триггерСтатус) и удалить строку из UserDetailsTable.

Случай 2) Когда triggerStream появляется как "Хосе", я хочу соединить этот triggerStream с UserDetailsTable в соответствии с (имя и триггерСтатус) и обновить статус как "истинный" в UserDetailsTable.

Окончательное состояние таблицы UserDetailsTable показано ниже.

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

как это можно сделать с помощью WSO2 CEP?


person sarath    schedule 21.05.2015    source источник


Ответы (1)


Предполагая, что вы определили потоки и таблицы и запрос на вставку для заполнения таблицы в памяти.

Для случая 1 вы можете использовать запрос на удаление следующим образом с условием:

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

Если вы хотите удалить определенные имена, такие как «роки», вы можете добавить фильтр к приведенному выше запросу следующим образом:

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» в «статус», чтобы сделать его равным имени атрибута таблицы.

person Rajeev Sampath    schedule 26.05.2015