[rules-users] Newbie question: can I create a variable in the rules file?

Rented User rented at gmail.com
Sat Mar 10 01:57:39 EST 2007


Hi Michael,

Thanks for the reply. While waiting for a reply to my question, I came up
with the following:

...
when
  c: PermissionCheck(name == "stuff", action == "do", granted = false)
  AppProp(now == (new Date()), s: startDate -> (s.getTime() < now.getTime()),
e: endDate -> (e.getTime() > now.getTime()) )
  Role(name == "A Role")
then
...

Yours looks a lot simpler than mine, though :)

Could you explain why the value of "now" would be what would be expected?
Would it not be the time when the rule fires? I'm a bit worried now :/

Best Regards,
Kris


On 3/9/07, Michael Neale <michael.neale at gmail.com> wrote:
>
> hi Kris.
>
> Well, you can't bind a variable to a new instance on the LHS - on the LHS
> you have no control over when conditions are evaluated, so the value of
> "now" would not necessarily be what you think.
>
> Nevertheless, I can see what you want:
>
>
> rule CanDoHisStuff
>   activation-group "permissions"
> when
>   c: PermissionCheck(name == "stuff", action == "do", granted = false)
>
>   ap: AppProps(startDate < ( now() ), endDate > ( now() ) )
>   Role(name == "A Role")
>
> then
>   c.grant();
> end;
>
> this assumes you have a function :
>
> function Date now()
>  return new Date();
> end
>
> (I havent' tested this, just a suggestion).
>
>
>  On 3/8/07, Rented User < rented at gmail.com> wrote:
>
> > Hi,
> >
> > I'm mew to this rules stuff, and although I've looked at rules engines
> > such as Corticon before, I got introduced to JBoss Rules through JBoss
> > Seam's security mechanism.
> >
> > I'm trying to expand on Seam's built in functionality to assess a user's
> > permissions. My use case is that a user of the system may or may not have
> > permission to a resource based on the user's role AND the current date. The
> > system accepts certain actions only if "now" is between a certain start and
> > end date. What I'd like to do is something like this:
> >
> > rule CanDoHisStuff
> >   activation-group "permissions"
> > when
> >   c: PermissionCheck(name == "stuff", action == "do", granted = false)
> >   now: new Date()
> > <--------------------------------------------------------------How can I
> > accomplish this?
> >   ap: AppProps()
> >   Role(name == "A Role")
> >  eval(now >= ap.startDate, now <= ap.endDate)
> > then
> >   c.grant();
> > end;
> >
> > Now, I understand that in my code, I could assert an object "now".
> > However, a lot of the security is hidden behind the scenes in Seam. For
> > example, this rules will be fired from an XML definition file. E.g.
> >
> >     <page view-id="/restricted/doStuff.xhtml">
> >         <restrict>#{s:hasPermission('stuff', 'do', null)}</restrict>
> >         <navigation from-action="#{ createStuffManager.yesConfirmSave}">
> >             <end-conversation/>
> >             <redirect view-id="/restricted/viewStuff.xhtml"/>
> >         </navigation>
> >     </page>
> >
> > While I could start extending Seam's security model, that seems a bit
> > invasive for such a simple task.
> >
> > Thanks
> >
> > /Kris
> >
> >
> >
> >
> > _______________________________________________
> > rules-users mailing list
> > rules-users at lists.jboss.org
> > https://lists.jboss.org/mailman/listinfo/rules-users
> >
> >
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070310/a55d7b1b/attachment.html 


More information about the rules-users mailing list