Hi,

Have a look at KnowledgeBuilder's use of ResourceFactory.

There's a newReaderResource() static method which could be passed a StringReader rather than writing to an intermediate file.

AFAIK kbase.addKnowledgePackages(kbuilder.getKnowledgePackages()) is effectively the "addRule" you desire.

With kind regards,

Mike

2010/11/18 Pierre de Leusse <pdl@agh.edu.pl>

Hello all,

 

I’m trying to add rules through my java code to a KnowledgeBase and I cannot find any easy way to do so. So far, the only solution I could think of, is to write the rule as DRL in a file that is “observed” by a KnowledgeAgent (same with a RuleAgent I suppose). Is it possible to create a new KnowledgePackage with the same name as the existing one and load it into the KnowledgeBuilder?

 

I manage to remove rules using the following code: statefulKnowledgeSession.getKnowledgeBase().removeRule(knowledgeSetName, ruleName);

 

I thought that there would be a addRule method somewhere but not luck so far.

 

The code I’m using to create my KnowledgeBase and StatefulKnowledgeSession is shown below.

 

All the best,

Pierre

 

StatefulKnowledgeSession creation code:

 

StatefulKnowledgeSession ksession;

KnowledgeBuilder kbuilder;

KnowledgeBase kbase;

 

kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

                               

kbuilder.add(ResourceFactory.newFileResource(Demo.class.getResource(Demo.drlFile).getPath()), ResourceType.DRL);

 

if (kbuilder.hasErrors()) {

                System.out.println(kbuilder.getErrors());

}

kbase = KnowledgeBaseFactory.newKnowledgeBase();

kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());

ksession = kbase.newStatefulKnowledgeSession();

ksession.insert(…);

ksession.fireAllRules();


_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users