Hi to All,
I am new to Drools 5.0...
I created three classes(Student, College and StudentCollege) and Decistion
table(manohar.xls) like this:-
Student.java:
package com.model;
public class Student {
private int age;
private int marks;
public String department;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getMarks() {
return marks;
}
public void setMarks(int marks) {
this.marks = marks;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
College.java:
package com.model;
public class College {
private String ranking;
private String location;
public String status;
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public void setRanking(String ranking) {
this.ranking = ranking;
}
public String getRanking() {
return ranking;
}
}
StudentCollege.java:
package com.model;
import java.io.IOException;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.DecisionTableConfiguration;
import org.drools.builder.DecisionTableInputType;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.compiler.DecisionTableFactory;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
public class Student_College {
public static void main(String args[])
{
Student s=new Student();
College c=new College();
s.setAge(18);
s.setMarks(85);
c.setRanking("A");
c.setLocation("Delhi");
try
{
KnowledgeBase kbase = readBase();
StatefulKnowledgeSession ksession =
kbase.newStatefulKnowledgeSession();
ksession.insert(s);
ksession.insert(c);
ksession.fireAllRules();
System.out.println("Department is
"+s.getDepartment());
System.out.println("Status is " + c.getStatus());
ksession.dispose();
}
catch(Exception e)
{
System.out.println("Error is "+e);
}
}
private static KnowledgeBase readBase()
{
DecisionTableConfiguration dconf =
KnowledgeBuilderFactory.newDecisionTableConfiguration();
dconf.setInputType(DecisionTableInputType.XLS);
KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("manohar.xls",
Student_College.class), ResourceType.DTABLE, dconf);
//Printing the rules in detail
String drlString = null;
try {
drlString =
DecisionTableFactory.loadFromInputStream(ResourceFactory.newClassPathResource("com/model/manohar.xls").getInputStream(),
dconf);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("..........."+drlString);
if(kbuilder.hasErrors())
{
throw new
RuntimeException(kbuilder.getErrors().toString());
}
KnowledgeBase kbase =
KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return kbase;
}
}
manohar.xls:
RuleSet
com.model
Import
com.model.Student, com.model.College
RuleTable for gettingthe Department and Status of the College
CONDITION
CONDITION
CONDITION
CONDITION
ACTION
ACTION
$s:Student
$s:Student
$c:College
$c:College
age==
marks==
ranking==
location==
$s.setDepartment($param);
$c.setStatus($param);
18
85
A
Delhi
Science
AICTE
18
90
B
Kanpur
Science
AICTE
20
90
A
Mumbai
Maths
AICTE
23
87
C
Hyderabad
Physics
AICTE
I am getting following errors while executing the StudentCollege.java,
Please help me in getting output...
Error is java.lang.RuntimeException: Duplicate declaration for variable
'$s' in the rule 'for gettingthe Department and Status of the College_10'
: [Rule name='for gettingthe Department and Status of the College_10']
Duplicate declaration for variable '$c' in the rule 'for gettingthe
Department and Status of the College_10' : [Rule name='for gettingthe
Department and Status of the College_10']
Duplicate declaration for variable '$s' in the rule 'for gettingthe
Department and Status of the College_11' : [Rule name='for gettingthe
Department and Status of the College_11']
Duplicate declaration for variable '$c' in the rule 'for gettingthe
Department and Status of the College_11' : [Rule name='for gettingthe
Department and Status of the College_11']
Duplicate declaration for variable '$s' in the rule 'for gettingthe
Department and Status of the College_12' : [Rule name='for gettingthe
Department and Status of the College_12']
Duplicate declaration for variable '$c' in the rule 'for gettingthe
Department and Status of the College_12' : [Rule name='for gettingthe
Department and Status of the College_12']
Duplicate declaration for variable '$s' in the rule 'for gettingthe
Department and Status of the College_13' : [Rule name='for gettingthe
Department and Status of the College_13']
Duplicate declaration for variable '$c' in the rule 'for gettingthe
Department and Status of the College_13' : [Rule name='for gettingthe
Department and Status of the College_13']
Rule Compilation error : [Rule name='for gettingthe Department and Status
of the College_10']
com/model/Rule_for__gettingthe_Department_and_Status_of_the_College_10_0.java
(7:513) : Science cannot be resolved
com/model/Rule_for__gettingthe_Department_and_Status_of_the_College_10_0.java
(8:538) : AICTE cannot be resolved
Rule Compilation error : [Rule name='for gettingthe Department and Status
of the College_12']
com/model/Rule_for__gettingthe_Department_and_Status_of_the_College_12_0.java
(7:513) : Maths cannot be resolved
com/model/Rule_for__gettingthe_Department_and_Status_of_the_College_12_0.java
(8:536) : AICTE cannot be resolved
Rule Compilation error : [Rule name='for gettingthe Department and Status
of the College_11']
com/model/Rule_for__gettingthe_Department_and_Status_of_the_College_11_0.java
(7:513) : Science cannot be resolved
com/model/Rule_for__gettingthe_Department_and_Status_of_the_College_11_0.java
(8:538) : AICTE cannot be resolved
Rule Compilation error : [Rule name='for gettingthe Department and Status
of the College_13']
com/model/Rule_for__gettingthe_Department_and_Status_of_the_College_13_0.java
(7:513) : Physics cannot be resolved
com/model/Rule_for__gettingthe_Department_and_Status_of_the_College_13_0.java
(8:538) : AICTE cannot be resolved
Thanks and Regards
Manohar Kokkula
Mailto: manohar.kokkula(a)tcs.com
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain
confidential or privileged information. If you are
not the intended recipient, any dissemination, use,
review, distribution, printing or copying of the
information contained in this e-mail message
and/or attachments to it are strictly prohibited. If
you have received this communication in error,
please notify us by reply e-mail or telephone and
immediately and permanently delete the message
and any attachments. Thank you