The Context object is analagous to the call stack in languages like C
and Java. Just as there's no language-level mechanism in those
languages to call a function with a user-specified stack, there's no
such mechanism in Jess, either.

You can, of course, pass a Context as a regular argument to a
function, which perhaps makes more sense here, anyway; or the function
might get the context using (fetch), or a defglobal, or some Java
global or static function -- or member function in the POC
class... there are many possibilities.

I think Mahesh Gandhe wrote:
> 
> Hi ,
> I am calling user defined function in the rule (in the  body of the rule).
> This function is called using  the �test CE�.
> My query is  how to explicitly pass the Context object to this user function call in 
>the defrule?.I tried looking the manual and API but was not able to get the syntax.
> My requirement is that  called  user function  does some modifications to  the 
>Context object passed to it.
> 
> Here is an example
> 
> This is the class for defining the user function:
> 
> package edu.umbc.cs.D2J;
> import jess.*;
> 
> public class POC implements Userfunction{
> 
>       public String getName() { return "try"; }
> 
>       public Value call(ValueVector vv, Context context) throws JessException
>         {
>           System.out.println("I am being called");
>           /****** passed context changed *****/
>           context.setVariable("third", new Value("check" ,RU.STRING));
>           System.out.println("context aft= " + context); 
>           return new Value( new Boolean(true));
>         }
>     }
> 
>  
> 
> This is the class which calls the function:
> 
> package edu.umbc.cs.D2J;
> 
> import jess.*;
>   public class ExAddUF
>   {
>     public static void main(String[] argv) throws JessException
>     {
>       Rete r = new Rete();
>       r.addUserfunction(new POC());
>   
>       r.executeCommand("(reset)");
>       r.executeCommand("(bind ?x  123)");
>       
>       Context myContext = null;
>       
>     
>       System.out.println(r.getGlobalContext());
>   
>   /****** here the unser function is called ****/
>       r.executeCommand("(defrule abc (test(try 123)) => (assert (check 345)))");
>       r.executeCommand("(run)");
>       r.executeCommand("(facts)");
>     } 
>   }
> 
> in the defrule when I am calling try method I want to pass the myContext object as 
>an parameter.
> What is the syntax for it?
> 
> Thank you.
> 
> Regards,
> Mahesh G.
> 
> 
>  
> 
> 
> 
> ---------------------------------
> Do You Yahoo!?
> Yahoo! Greetings - send greetings for Easter,  Passover



---------------------------------------------------------
Ernest Friedman-Hill  
Distributed Systems Research        Phone: (925) 294-2154
Sandia National Labs                FAX:   (925) 294-2234
Org. 8920, MS 9012                  [EMAIL PROTECTED]
PO Box 969                  http://herzberg.ca.sandia.gov
Livermore, CA 94550

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