You need to specifically request the specificUser property of the JessUser object. You could do something like

(defrule lockRule
    "Testing the rule."
(JessUser { reportsLock == TRUE } (reportsLock ?value) (specificUser ?su))
    =>
    (printout t "ReportsLock: " ?value crlf)
    (calling DynamicReplanning ?su))


On Jan 9, 2008, at 12:00 PM, Manolis Nikoloudakis wrote:

That's exactly right.After I have batched the clp file and before I run it,
I add a JessUser instance in the jess memory.Then I want to retreive a
field(java bean-specificUser) of this instance from the jess memory via the
defrule(as an argument of my userfunction).

public class JessUser {
    private boolean reportsLock;
private User specificUser;//<--this field I want to put as second argument

    public JessUser() {
        this.reportsLock=false;
    }

    public boolean isReportsLock(){
        return this.specificUser.hasReportsLock();
    }
    public void setReportsLock(boolean rep){
        this.reportsLock=rep;
    }

    public User getSpecificUser(){
        return this.specificUser;
    }
    public void setSpecificUser(User usr){
        this.specificUser=usr;
    }
}

If I finally get this specificUser field,will it be the field of the exact JessUser instance that I added in the engine before running it?

> From: [EMAIL PROTECTED]
> Subject: Re: JESS: Userfunction arguments
> Date: Wed, 9 Jan 2008 11:04:51 -0500
> To: [email protected]
>
> On Jan 9, 2008, at 10:14 AM, Manolis Nikoloudakis wrote:
>
> > (defrule lockRule
> > "Testing the rule."
> > (JessUser { reportsLock == TRUE } (reportsLock ?value))=>
> > (printout t "ReportsLock: " ?value crlf)(calling DynamicReplanning
> > specificUser)
> > )
> > where i want to express that if reportsLock bean of JessUser class
> > is true,call(through calling variable) JessCaller file with a
> > String argument(DynamicReplanning) and a User Object argument
> > (specificUser).
> >
> > When I batch and run the clp file,I get the first argument
> > right,but when I get the java object:
> > 'User specificUser=(User)vv.get(2).javaObjectValue(context);'
> > I have a java.lang.ClassCastException: java.lang.String cannot be
> > cast to ProtegeCode.User.
> > I imagine that the wrong part is in the defrule and I should
> > declare 'specificUser' Object in another way,but I don't know exactly.
>
> OK. In the rule as you've written it, "specificUser" is just a Jess
> symbol; calling javaObjectValue() is indeed going to convert that
> symbol to a String. What you want there instead is something that
> refers to an instance of your User class, yes? So where should this
> User object come from? Is is a property of the JessUser object, or
> would it come from somewhere else?
>
>
>
> ---------------------------------------------------------
> Ernest Friedman-Hill
> Informatics & Decision Sciences Phone: (925) 294-2154
> Sandia National Labs FAX: (925) 294-2234
> PO Box 969, MS 9012 [EMAIL PROTECTED]
> Livermore, CA 94550 http://www.jessrules.com
>
> --------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
> in the BODY of a message to [EMAIL PROTECTED], NOT to the list
> (use your own address!) List problems? Notify owner-jess- [EMAIL PROTECTED]
> --------------------------------------------------------------------
>


Express yourself instantly with MSN Messenger! MSN Messenger

---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences          Phone: (925) 294-2154
Sandia National Labs                FAX:   (925) 294-2234
PO Box 969, MS 9012                 [EMAIL PROTECTED]
Livermore, CA 94550                 http://www.jessrules.com

--------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the list
(use your own address!) List problems? Notify [EMAIL PROTECTED]
--------------------------------------------------------------------

Reply via email to