我有两种事件类型(A 和 B)。我想编写一个模式来检测在具有相同 id: 的A事件之后发生的每个B事件。但是,它应该是不同的 ID。换句话说,模式应该忽略第一个之后的所有具有相同 id 的A事件,直到上面的表达式为真,意味着具有相同 id 的B事件来了。every A -> B (A.id = B.id)
例如,假设这是一个事件流:
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 具有相同的 id。当事件 No6 到来时,模式应该匹配1. A (id: 1) -> 6. B (id: 1)
。然后,该模式应该允许 id=1 的新A事件。因此不应忽略事件 No8,但应忽略事件 No10。当事件 No11 到来时,模式应该再次匹配8. A(id: 1) -> 11. B(id: 1)
。
此外,事件No2 应该匹配事件No7,事件No3 应该匹配事件No9。
我曾尝试使用EVERY-DISTINCT(A.id) A -> B (A.id=B.id)
,但它会忽略第一个之后具有相同 id 的所有A事件。然后我尝试EVERY (A -> B (A.id = B.id))
了,但它也不起作用,因为它忽略了所有A事件而不管 id 直到具有相同 id 的B事件出现。