packagesample;importorg.drools.KnowledgeBase;importorg.drools.KnowledgeBaseFactory;importorg.drools.builder.KnowledgeBuilder;importorg.drools.builder.KnowledgeBuilderError;importorg.drools.builder.KnowledgeBuilderErrors;importorg.drools.builder.KnowledgeBuilderFactory;importorg.drools.builder.ResourceType;importorg.drools.io.ResourceFactory;importorg.drools.logger.KnowledgeRuntimeLogger;importorg.drools.logger.KnowledgeRuntimeLoggerFactory;importorg.drools.runtime.StatefulKnowledgeSession;public classEmployTest {public static voidmain(String[] args) {try{//load up the knowledge base
KnowledgeBase kbase =readKnowledgeBase();
StatefulKnowledgeSession ksession=kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger= KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");//go !
Employ emp = newEmploy();
emp.setEduInfo("master");
emp.setResume("tech");
emp.setAnnualExam("good");
emp.setAwardPunish("award");
ksession.insert(emp);
ksession.startProcess("myrules.salary");
ksession.fireAllRules();
System.out.println("Basic Salary: " +emp.getBasicSalary());
System.out.println("Duty Salary: " +emp.getDutySalary());
System.out.println("Bonus : " +emp.getBonus());
System.out.println("rate : " +emp.getPercent());
System.out.printf("Total Salary: %.0f", emp.getTotalSalary());
logger.close();
}catch(Throwable t) {
t.printStackTrace();
}
}private static KnowledgeBase readKnowledgeBase() throwsException {
KnowledgeBuilder kbuilder=KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("rules/EduInfoRule.drl"), ResourceType.DRL);
kbuilder.add(ResourceFactory.newClassPathResource("rules/ResumeRule.drl"), ResourceType.DRL);
kbuilder.add(ResourceFactory.newClassPathResource("rules/BonusRule.drl"), ResourceType.DRL);
kbuilder.add(ResourceFactory.newClassPathResource("rules/AwardPunish.drl"), ResourceType.DRL);
kbuilder.add(ResourceFactory.newClassPathResource("rules/TotalRule.drl"), ResourceType.DRL);
kbuilder.add(ResourceFactory.newClassPathResource("rules/salary.rf"), ResourceType.DRF);
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();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());returnkbase;
}
}