I'm using Drools 7 as rule engine. Initially I loaded rules from classpath with the following code to build a StatelessKieSession:
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
StatelessKieSession statelessKieSession = kContainer.newStatelessKieSession();
then I decided to load rules from DB, here's the code:
KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
SqlRowSet sqlRowSet = new JdbcTemplate(ds).queryForRowSet("select drl_code from rule");
while(sqlRowSet.next()) {
Resource r = ResourceFactory.newReaderResource(new StringReader(sqlRowSet.getString("drl_code")));
knowledgeBuilder.add(r, ResourceType.DRL);
}
KieBase kieBase = knowledgeBuilder.newKieBase();
StatelessKieSession statelessKieSession = kieBase.newStatelessKieSession();
What worries me is that KnowledgeBuilder interface is in an internal package ("org.kie.internal").
Is there another way to build a StatelessKieSession when loading rules from DB using a "public" API?