Hi,
I tried that also, kept RuleTable and the Rule name initial in one cell,
but I am encountering the same errors.
I re-created the Application, but I am not able to run it properly.
When I check the generated drl string, it seems fine to me. It would be
very helpful, if I get guidance on this. I am not able to find out what is
going wrong in this case...
Student.java and College.java are normal POJOs with variables and getter
and setter methods.
My Main class:
public class AllocationClass {
public static void main(String[] args) {
Student s1 = new Student();
College c1 = new College();
s1.setMarks(70);
s1.setAge(20);
c1.setRanking("A");
c1.setLocation("Delhi");
try{
KnowledgeBase kb = fromFunction();
StatefulKnowledgeSession ks =
kb.newStatefulKnowledgeSession();
ks.insert(s1);
ks.insert(c1);
ks.fireAllRules();
System.out.println("Department is :
"+s1.getDepartment());
System.out.println("Status is : "+c1.getStatus());
ks.dispose();
}
catch (Exception ex)
{
System.out.println(" In main method......."+ ex);
ex.printStackTrace();
}
}
private static KnowledgeBase fromFunction()
{
DecisionTableConfiguration dc =
KnowledgeBuilderFactory.newDecisionTableConfiguration();
dc.setInputType(DecisionTableInputType.XLS);
KnowledgeBuilder kbd =
KnowledgeBuilderFactory.newKnowledgeBuilder();
kbd.add(ResourceFactory.newClassPathResource("com/sample/allocate.xls"),
ResourceType.DTABLE,dc);
String drlString = null;
try {
drlString =
DecisionTableFactory.loadFromInputStream(ResourceFactory.newClassPathResource("com/sample/allocate.xls").getInputStream(),
dc);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("..........."+drlString);
if(kbd.hasErrors())
{
RuntimeException r1 = new
RuntimeException(kbd.getErrors().toString());
r1.printStackTrace();
}
KnowledgeBase kb =
KnowledgeBaseFactory.newKnowledgeBase();
kb.addKnowledgePackages(kbd.getKnowledgePackages());
return kb;
}
}
The xls that I have created :
RuleSet
com.sample
Import
com.sample.Student,com.sample.College
RuleTable Allocation Rules
CONDITION
CONDITION
CONDITION
CONDITION
ACTION
ACTION
$s:Student
$c:College
marks
age
ranking
location
$s.setDepartment(?$param?);
$c.setStatus(?$param?);
Student Marks
Student Age
College Ranking
College Location
Department Allocated
Status Allocated
60
20
A
Mumbai
Maths
NA
86
22
B
Kolkata
Arts
Approved
70
20
A
Delhi
Science
Approved
The drlString that gets generated is :
...........package com.sample;
#generated from Decision Table
import com.sample.Student;
import com.sample.College;
#From row number: 10
rule "Allocation Rules_10"
when
$s:Student(marks == "60", age == "20")
$c:College(ranking == "A", location == "Mumbai")
then
$s.setDepartment(?Maths?);
$c.setStatus(?NA?);
end
#From row number: 11
rule "Allocation Rules_11"
when
$s:Student(marks == "86", age == "22")
$c:College(ranking == "B", location == "Kolkata")
then
$s.setDepartment(?Arts?);
$c.setStatus(?Approved?);
end
#From row number: 12
rule "Allocation Rules_12"
when
$s:Student(marks == "70", age == "20")
$c:College(ranking == "A", location == "Delhi")
then
$s.setDepartment(?Science?);
$c.setStatus(?Approved?);
end
The output Error that I get is :
java.lang.RuntimeException:
[12,19]: [ERR 101] Line 12:19 no viable alternative at input ''[12,25]:
[ERR 101] Line 12:25 no viable alternative at input ''[13,15]: [ERR 101]
Line 13:15 no viable alternative at input ''[13,18]: [ERR 101] Line 13:18
no viable alternative at input ''[23,19]: [ERR 101] Line 23:19 no viable
alternative at input ''[23,24]: [ERR 101] Line 23:24 no viable alternative
at input ''[24,15]: [ERR 101] Line 24:15 no viable alternative at input
''[24,24]: [ERR 101] Line 24:24 no viable alternative at input ''[34,19]:
[ERR 101] Line 34:19 no viable alternative at input ''[34,27]: [ERR 101]
Line 34:27 no viable alternative at input ''[35,15]: [ERR 101] Line 35:15
no viable alternative at input ''[35,24]: [ERR 101] Line 35:24 no viable
alternative at input ''
at com.sample.AllocationClass.fromFunction(AllocationClass.java:75)
at com.sample.AllocationClass.main(AllocationClass.java:31)
Department is : null
Status is : null
Regards,
Manohar Kokkula
Mailto: manohar.kokkula(a)tcs.com
From:
Wolfgang Laun <wolfgang.laun(a)gmail.com>
To:
Rules Users List <rules-users(a)lists.jboss.org>
Date:
08/25/2011 05:19 PM
Subject:
Re: [rules-users] Error is Java.lang.RuntimeException
Sent by:
rules-users-bounces(a)lists.jboss.org
The cell with the keyword RuleTable must also contain the string for the
initial part of the rule name. It seems that you have this in the
adjoining cell. - See the docs, section "Rule Tables".
-W
2011/8/25 Manohar Kokkula <manohar.kokkula(a)tcs.com>
Hi Frank and Wolfgang,
Thank you for your help,
I did everything as you both said,still i am getting the same error,
java.lang.RuntimeException: [12,19]: [ERR 101] Line 12:19 no viable
alternative at input ''[12,27]: [ERR 101] Line 12:27 no viable alternative
at input ''[13,15]: [ERR 101] Line 13:15 no viable alternative at input
''[13,21]: [ERR 101] Line 13:21 no viable alternative at input ''[23,19]:
[ERR 101] Line 23:19 no viable alternative at input ''[23,27]: [ERR 101]
Line 23:27 no viable alternative at input ''[24,15]: [ERR 101] Line 24:15
no viable alternative at input ''[24,21]: [ERR 101] Line 24:21 no viable
alternative at input ''[34,19]: [ERR 101] Line 34:19 no viable alternative
at input ''[34,25]: [ERR 101] Line 34:25 no viable alternative at input
''[35,15]: [ERR 101] Line 35:15 no viable alternative at input ''[35,21]:
[ERR 101] Line 35:21 no viable alternative at input ''[45,19]: [ERR 101]
Line 45:19 no viable alternative at input ''[45,27]: [ERR 101] Line 45:27
no viable alternative at input ''[46,15]: [ERR 101] Line 46:15 no viable
alternative at input ''[46,21]: [ERR 101] Line 46:21 no viable alternative
at input ''
Error in kbuildefr ......
Error in main ...
Error is java.lang.RuntimeException: [12,19]: [ERR 101] Line 12:19 no
viable alternative at input ''[12,27]: [ERR 101] Line 12:27 no viable
alternative at input ''[13,15]: [ERR 101] Line 13:15 no viable alternative
at input ''[13,21]: [ERR 101] Line 13:21 no viable alternative at input
''[23,19]: [ERR 101] Line 23:19 no viable alternative at input ''[23,27]:
[ERR 101] Line 23:27 no viable alternative at input ''[24,15]: [ERR 101]
Line 24:15 no viable alternative at input ''[24,21]: [ERR 101] Line 24:21
no viable alternative at input ''[34,19]: [ERR 101] Line 34:19 no viable
alternative at input ''[34,25]: [ERR 101] Line 34:25 no viable alternative
at input ''[35,15]: [ERR 101] Line 35:15 no viable alternative at input
''[35,21]: [ERR 101] Line 35:21 no viable alternative at input ''[45,19]:
[ERR 101] Line 45:19 no viable alternative at input ''[45,27]: [ERR 101]
Line 45:27 no viable alternative at input ''[46,15]: [ERR 101] Line 46:15
no viable alternative at input ''[46,21]: [ERR 101] Line 46:21 no viable
alternative at input ''
at com.model.Student_College.readBase(Student_College.java:90)
at com.model.Student_College.main(Student_College.java:31)
Now i am sending my main class and .xls file.
public class Student_College {
public static void main(String args[]) throws IOException
{
Student s=new Student();
College c=new College();
s.setAge(20);
s.setMarks(35);
c.setRanking("B");
c.setLocation("elhi");
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(RuntimeException re)
{
System.out.println("Error in main ...");
re.printStackTrace();
System.out.println("Error is "+re);
}
}
private static KnowledgeBase readBase() throws IOException
{
DecisionTableConfiguration dconf =
KnowledgeBuilderFactory.newDecisionTableConfiguration();
dconf.setInputType(DecisionTableInputType.XLS);
KnowledgeBuilder kbuilder =
KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("manohar.xls",
Student_College.class), ResourceType.DTABLE, dconf);
if(kbuilder.hasErrors())
{
System.out.println("Error in kbuildefr ......");
throw new
RuntimeException(kbuilder.getErrors().toString());
}
KnowledgeBase kbase =
KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return kbase;
}
}
In above main class i used the following code to interpret my manohar.xls
file...
String drlString = null;
try {
drlString =
DecisionTableFactory.loadFromInputStream(ResourceFactory.newClassPathResource("manohar.xls",
Student_College.class).getInputStream(), dconf);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Error in drl String .....");
e.printStackTrace();
}
System.out.println("..........."+drlString);
manohar.xls:
RuleSet
com.model
Import
com.model.Student, com.model.College
RuleTable
Allocation Rule
CONDITION
CONDITION
CONDITION
CONDITION
ACTION
ACTION
$s:Student
$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
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
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users