У меня есть два типа событий (A и B). Я хотел бы написать образец, который определяет каждое событие B, которое происходит после события A с тем же идентификатором: every A -> B (A.id = B.id)
. Однако это должны быть разные идентификаторы. Другими словами, шаблон должен игнорировать все события с одним и тем же идентификатором после первого, пока это выражение не будет истинным, означает B событие с тем же идентификатором.Как сохранить отличимость до тех пор, пока на EPL EPLER не будет выполнено определенное условие.
Например, предположим, что это поток событий:
1. A (id: 1); 2. A(id: 2); 3. A (id: 3); 4. A(id: 1); 5. A (id: 2); 6. B (id: 1); 7. B (id: 2); 8. A (id: 1); 9. B(id: 3); 10. A (id: 1); 11. B (id: 1)
Шаблон должен игнорировать событие No4, как это имеет тот же идентификатор события с No1. Когда наступит событие No6, шаблон должен соответствовать 1. A (id: 1) -> 6. B (id: 1)
. Затем шаблон должен разрешить новое событие A с id = 1. Поэтому событие №8 нельзя игнорировать, но событие №10 следует игнорировать. Когда наступит событие №11, образец должен снова совпасть с номером 8. A(id: 1) -> 11. B(id: 1)
.
Кроме того, событие No2 должно соответствовать событию No7, а событие No3 должно соответствовать событию No9.
Я попытался использовать EVERY-DISTINCT(A.id) A -> B (A.id=B.id)
, но он игнорирует все события A с таким же идентификатором после первого. Затем я попробовал EVERY (A -> B (A.id = B.id))
, но это не сработало, так как он игнорирует все события, независимо от ID до B Событие с тем же идентификатором приходит.