Hello all,
 
I am about a day old to Drools. I have had success in executing the examples in a Windows, JDK1.6 environment.
Based on the success of the examples, I am trying to put together a sample usecase myself to understand Drools. I write to you since I havent had much success in that.
My use case is:
1) Check the type of person.
2) If person is an Employee, then print the Employee ID.
3) If person is a customer then print the customer first and last name.
4) If the person is an Employee and the employee id is missing, then throw an exception, so that the calling API can handle the error.
 
To realize this, I have three interfaces, IPerson, IEmployee extends IPerson and ICustomer extends IPerson.
IPerson has the common attribute getters such as; getFirstName, getLastName
IEmployee has the getter getEmployeeId, while the ICustomer is only a marker interface (at the moment).
 
The DRL file with the rules contains:
 
rule "If no Employee Number, then print error"
 dialect "java"
 when
  IPerson( empNumber <= -1 )
 then
  System.out.println( "Invalid Employee number" );
end
 

rule "Rule to print the Employee number"
    dialect "mvel"
 when
  $person : IPerson( personType == IPerson.EMPLOYEE_PERSON_TYPE )
 then
  System.out.println( "The Employee Number is "+$person.empNumber);
end
 

rule "Rule to print the first name and last name if it is a Customer"
    dialect "mvel"
 when
  $person : IPerson( personType == IPerson.CUSTOMER_PERSON_TYPE )
 then
  System.out.println( "The Customers' name is "+$person.firstName+" "+$person.lastName );
end
 
The error I get for the rule is:
Unable to create Field Extractor for 'empNumber' of '[ClassObjectType class=com.drools.local.samples.model.IPerson]
 
The above error did suggest that the IPerson doesnot expose any methods to retrieve the empNumber, such as getEmpNumber. But then, when I do a $person.empNumber, it does print the empNumber. Hence, the Drools framework must somehow be able to *auto-magically* cast down the object. This is what is confusing me.
 
Could you advice if my usecase is possible with Drools and if yes, then what am I missing? Is my rules approach wrong? Also, if there a way to throw exceptions in the then case?
The JSR-94 provides mechanism to get the results, is there a similar way in Drools?
 
Thanks.
 
Cheers
Gautham Kasinath
 
 
*******************************************************
This email message and any attached files may contain
information that is confidential and subject of legal
privilege intended only for use by the individual or
entity to whom they are addressed. If you are not the
intended recipient or the person responsible for
delivering the message to the intended recipient be
advised that you have received this message in error
and that any use, copying, circulation, forwarding,
printing or publication of this message or attached
files is strictly forbidden, as is the disclosure of
the information contained therein. If you have received
this message in error, please notify the sender
immediately and delete it from your Inbox.
*******************************************************