Thanks that explained it very well.  

Amitesh Kumar | Middleware Services | Business Infrastructure Technology
| Standard Bank CIB International | Ground Floor, 20 Gresham Street,
London, EC2V 7JE 
T: +44 [0]203 145 5575 | E: [email protected]

-----Original Message-----
From: [email protected] [mailto:[email protected]]
On Behalf Of Ernest Friedman-Hill
Sent: 18 February 2010 14:05
To: jess-users
Subject: Re: JESS: Shadow facts and user functions

Jess likes to work with JavaBeans properties, and your 'Message' class
isn't very Bean-like, so it will be somewhat awkward to work with. I  
think what you want your rule to do is print "valid" whenever a   
RoutingMessage with a non-nil "EBID" property is asserted, right? So
your rule could look like

       (defrule valid-message

        (RoutingMessage (OBJECT ?o&:(neq (?o getProperty "EBID") nil)))

        =>

        (printout t "valid " crlf))



The lines on the left-hand-side of the rule -- i.e., before the "=>
--  are "patterns" that match facts in working memory. They are not
function calls. In the "{}" syntax you were using (but that I have not
used here) the left-hand-side of each expression is the name of a
property (a "slot") in a fact; since your object has no JavaBeans
properties of interest, this syntax is basically useless (see, I told
you your class would be awkward to work with.)

The syntax I've used here is a color followed by a function call that
returns boolean; it's called a "predicate constraint" and you can read
about that in the manual.




On Feb 17, 2010, at 11:59 AM, Kumar, Amitesh wrote:

> Hi guys ,
>
> I new to Jess rules and im struggling on the syntax
>
> What im trying to do is execute a function on an object added to the 
> rete engine
>
> Object been added
>
> engine.getEngine().add(message);
> engine.getEngine().run();
>
>
> CLP file
> 1       (import com.standardbank.cibi.infra.zippy.dataobject.*)
> 2       (import com.standardbank.cibi.infra.zippy.jess.functions.*)
> 3
> 4       (deftemplate RoutingMessage  (declare (from-class  
> RoutingMessage)))
> 5       (load-function GetProperties)
> 6
> 7       (defrule valid-message
> 8               ?ebid<- ( get-property OBJECT "EBID" )
> 9               (RoutingMessage {?ebid <> nil})
> 10              =>
> 11                      (printout t "valid " crlf)
> 12      )
>
> I get an exception
>
> Caused by: Jess reported an error in routine Jesp.parsePattern.
>   Message: Bad slot name at token '?ebid'.
>   Program text: ( defrule valid-message ?ebid <- ( get-property OBJECT

> "EBID" ) ( RoutingMessage { ?ebid  at line 9 in file zippy.clp.
>
> If I remove line 9) then it compiles but the rule doesn't fire
>
> Can anyone help me out
>
> All my Function does Is
>
> public class GetProperties implements Userfunction {
>     public String getName() {
>         return "get-property";
>     }
>
>     public Value call(ValueVector valueVector, Context context) throws

> JessException
>     {
>         String key = valueVector.get(2).stringValue(context);
>         RoutingMessage routingMessage = (RoutingMessage) 
> valueVector.get(1).externalAddressValue(context);
>          try {
>             return new Value(routingMessage.getProperty(key));
>         } catch (JMSException e) {
>             e.printStackTrace();
>         }
>         return null;
>     }
> }
>
>
>
>
************************************************************************
******************
> More information on Standard Bank is available at www.standardbank.com
>
> Everything in this email and any attachments relating to the  
> official business
> of Standard Bank Group Limited and any or all subsidiaries, ("the  
> Company"), is
> proprietary to the Company. It is confidential, legally privileged  
> and protected
> by relevant laws. The Company does not own and endorse any other  
> content.
> Views and opinions are those of the sender unless clearly stated as  
> being
> that of the Company.
>
> The person or persons addressed in this email are the sole authorised
> recipient. Please notify the sender immediately if it has  
> unintentionally,
> or inadvertently reached you and do not read, disclose or use the  
> content
> in any way and delete this e-mail from your system.
>
> The Company cannot ensure that the integrity of this email has been
> maintained nor that it is free of errors, virus, interception or  
> interference.
> The sender therefore does not accept liability for any errors or  
> omissions
> in the contents of this message which arise as a result of e-mail  
> transmission.
> If verification is required please request a hard-copy version. This  
> message
> is provided for informational purposes and should not be construed  
> as a
> solicitation or offer to buy or sell any securities or related  
> financial instruments.
>
************************************************************************
******************
>
>
> This message has been scanned for viruses by BlackSpider MailControl
>

---------------------------------------------------------
Ernest Friedman-Hill
Informatics & Decision Sciences          Phone: (925) 294-2154
Sandia National Labs
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].
--------------------------------------------------------------------



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