I have tried<br><br>declare EventA<br>  @role( event )<br>  x : Void<br>end<br>declare EventB<br>  @role( event )<br>  x : Void<br>end<br>rule &quot;mock-A&quot;  # only rule for EventA, EventB<br>when<br>    $b: EventB()<br>
    $a: EventA( this after[0,10s] $b )<br>then<br>end<br><br>and <br>    org.drools.rule.TypeDeclaration tda = (org.drools.rule.TypeDeclaration)rpkg.pkg.getTypeDeclaration( &quot;EventA&quot; );<br>    System.out.println( &quot;EventA expires: &quot; + tda.getExpirationOffset() + &quot; role:&quot; + tda.getRole());<br>
    org.drools.rule.TypeDeclaration tdb = (org.drools.rule.TypeDeclaration)rpkg.pkg.getTypeDeclaration( &quot;EventB&quot; );<br>    System.out.println( &quot;EventB expires: &quot; + tdb.getExpirationOffset() + &quot; role:&quot; + tdb.getRole());<br>
<br>which prints<br>   EventA expires: -1 role:EVENT<br>   EventB expires: -1 role:EVENT<br><br>Since the DRL code is equivalent to example 2.19 (&quot;correlate orders&quot;) in Fusion, this raises the question whether the inferred expiration offset is actually computed as described.<br>
<br>-W<br><br><br>