[rules-dev] Inferred expiration offset: does it really work?

Wolfgang Laun wolfgang.laun at gmail.com
Fri Nov 12 16:07:15 EST 2010


On 12 November 2010 18:21, Edson Tirelli <tirelli at post.com> wrote:

>    Wolfgang,
>
>   TypeDeclaration.getExpirationOffset() returns the value of the user
> defined expiration policy:
>
> @expires( 1h )
>

OK...


>
>   The final, inferred result is stored in the ObjectTypeNodes
> themselves, as it might be different for different entry points.
>
>
There's no simple way to get at 'em, I suppose. So, as a user, how do I
determine whether my current set of rules implies a finite expiry limit? If
it isn't finite, I'll have to set an explicit @expires; if I do that, it
could be too short...

Much along the lines I have carped in another thread: a "clever" system is
allright, but it must not leave me in the dark about its cleverness.

Getting down to brass tacks: the stable API should provide access to any
data

   - set by the user or
   - determined by the compiler, and both
   - for Java types honed in by DRL declares as well as
   - for types declared in the DRL.

Given all that, it might still be useful to have a way of turning the
inferred expiry time off *without* setting an @expires for all types, which
can be done with an @expires(1000000000d) or so).  Also, see that hint in a
recent thread about how easy it is to implement a retraction strategy based
on data in the events. One use case I was thinking of was with events (or
even plain facts) having a variable duration attribute, to be retracted at
timestamp+duration.

Wolfgang


>    Edson
>
> 2010/11/12 Wolfgang Laun <wolfgang.laun at gmail.com>:
> > I have tried
> >
> > declare EventA
> >   @role( event )
> >   x : Void
> > end
> > declare EventB
> >   @role( event )
> >   x : Void
> > end
> > rule "mock-A"  # only rule for EventA, EventB
> > when
> >     $b: EventB()
> >     $a: EventA( this after[0,10s] $b )
> > then
> > end
> >
> > and
> >     org.drools.rule.TypeDeclaration tda =
> > (org.drools.rule.TypeDeclaration)rpkg.pkg.getTypeDeclaration( "EventA" );
> >     System.out.println( "EventA expires: " + tda.getExpirationOffset() +
> "
> > role:" + tda.getRole());
> >     org.drools.rule.TypeDeclaration tdb =
> > (org.drools.rule.TypeDeclaration)rpkg.pkg.getTypeDeclaration( "EventB" );
> >     System.out.println( "EventB expires: " + tdb.getExpirationOffset() +
> "
> > role:" + tdb.getRole());
> >
> > which prints
> >    EventA expires: -1 role:EVENT
> >    EventB expires: -1 role:EVENT
> >
> > Since the DRL code is equivalent to example 2.19 ("correlate orders") in
> > Fusion, this raises the question whether the inferred expiration offset
> is
> > actually computed as described.
> >
> > -W
> >
> >
> >
> > _______________________________________________
> > rules-dev mailing list
> > rules-dev at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-dev
> >
> >
>
>
>
> --
>   Edson Tirelli
>   JBoss Drools Core Development
>   JBoss by Red Hat @ www.jboss.com
>
> _______________________________________________
> rules-dev mailing list
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20101112/383559af/attachment.html 


More information about the rules-dev mailing list