After looking at ../integrationtests/test_CEP_DelayingNot.drl I'm getting
closer, but not really understanding. I can get a greenbar with the below.
However if change the last advanceTime() value to anything less than 30 the
test fails. So it seems that the the conditional not clause does not start
its window until the first two clauses are true.
Why would this be? Why does it not start ticking when the first StartEvent
is inserted?
----
rule "[every s->f&&!a] How do I use patterns to correlate events arriving
in-order or out-of-order?"
when
$se : StartEvent($exchangeId : exchangeId)
from entry-point "stream"
$fe : FinishedEvent(exchangeId == $exchangeId, this after[0s,30s] $se)
from entry-point "stream"
not (AbortedEvent(exchangeId == $exchangeId, this after[0s,30s] $se)
from entry-point "stream")
then
results.put("startEvent", $se);
results.put("finishedEvent", $fe);
end
----
@Test
def void
How_do_I_use_patterns_to_correlate_events_arriving_in_order_or_out_of_order__B()
{
insert new StartEvent(id: "se1", exchangeId: "BBB")
advanceTime 10, SECONDS
fireAllRules()
assert results.isEmpty()
advanceTime 10, SECONDS
insert new FinishedEvent(id: "fe1", exchangeId: "BBB")
fireAllRules()
assert results.isEmpty()
advanceTime 30, SECONDS
assert results["startEvent"].id == "se1"
assert results["finishedEvent"].id == "fe1"
}
----
--
View this message in context:
http://www.nabble.com/Conditional-%27not%27-invalid-for-event-streams--tp...
Sent from the drools - user mailing list archive at
Nabble.com.