I am working on drools Drools/Java program (Drools 6.2). I have 3 separate drools files (.drl) where the rules are stored. When I build and deploy this program with Maven it creates a JAR file and the rules are inside this JAR file in a "rules" folder. However, when I run this program, it can not find the Drools files and not fire them.
The error I get is:
"java.io.FileNotFoundException: /src/main/resources/rules/Rule1.drl (No such file or directory)"
The program is structured:
src - main
- java - com - Java files
- resources - rules - Drools files.
This is the method that calles and fires the rules.
String drlFileName = "./src/main/resources/rules/Rule1.drl");
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
FileInputStream fis = null;
try {
fis = new FileInputStream(drlFileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
kbuilder.add( ResourceFactory.newInputStreamResource(fis), ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error: errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
//Create a kbase using the generated kpackages
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
StatefulKnowledgeSession kSession = kbase.newStatefulKnowledgeSession();
What should I do so when the program is run and it tries to fire the rules, it know where these Drools files are?
Should I include anything in my .classpath file or in pom.xml file? Should I fire the rules differently?