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]
--------------------------------------------------------------------