У меня есть два типа событий (A и B). Я хотел бы написать шаблон, который обнаруживает каждое событие B, которое происходит после события A с тем же идентификатором: every A -> B (A.id = B.id)
. Однако это должны быть разные идентификаторы. Другими словами, шаблон должен игнорировать все события A с одним и тем же идентификатором после первого, пока приведенное выше выражение не станет истинным, что означает, что приходит событие B с тем же идентификатором.
Например, предположим, что это поток событий:
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)
Шаблон должен игнорировать событие №4, так как оно имеет тот же идентификатор, что и событие №1. Когда наступит событие №6, шаблон должен соответствовать 1. A (id: 1) -> 6. B (id: 1)
. Затем шаблон должен разрешить новое событие A с идентификатором = 1. Таким образом, событие №8 не должно быть проигнорировано, а событие №10 должно быть проигнорировано. Когда наступит событие №11, шаблон снова должен совпасть 8. A(id: 1) -> 11. B(id: 1)
.
Кроме того, событие №2 должно совпадать с событием №7, а событие №3 должно совпадать с событием №9.
Я пытался использовать EVERY-DISTINCT(A.id) A -> B (A.id=B.id)
, но он игнорирует все события A с одинаковым идентификатором после первого. Затем я попробовал EVERY (A -> B (A.id = B.id))
, но это тоже не сработало, поскольку игнорирует все события A независимо от идентификатора, пока не придет событие B с тем же идентификатором.