Drools:未使用change-set.xml执行规则文件
下面是我的主java文件,它调用changeset.xml。在changeset.xml中提供的规则文件在不使用changeset.xml的情况下执行时不会执行Drools:未使用change-set.xml执行规则文件,drools,Drools,下面是我的主java文件,它调用changeset.xml。在changeset.xml中提供的规则文件在不使用changeset.xml的情况下执行时不会执行 ResourceFactory.getResourceChangeNotifierService().start(); ResourceFactory.getResourceChangeScannerService().start(); ResourceChangeScannerCo
ResourceFactory.getResourceChangeNotifierService().start();
ResourceFactory.getResourceChangeScannerService().start();
ResourceChangeScannerConfiguration sconf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
sconf.setProperty("drools.resource.scanner.interval", "10");
ResourceFactory.getResourceChangeScannerService().configure(sconf);
KnowledgeAgentConfiguration aconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
aconf.setProperty("drools.agent.scanDirectories", "true");
aconf.setProperty("drools.agent.scanResources", "true");
aconf.setProperty("drools.agent.newInstance", "false");
// KnowledgeBuilder kbuilder1 = KnowledgeBuilderFactory.newKnowledgeBuilder();
// kbuilder1.add( ResourceFactory.newFileResource("file:C://Users//latika.vashishtha.in//Workspace 2//AppChangeset1//src//test//resources//change-set.xml"),ResourceType.CHANGE_SET );
KnowledgeAgent knowledgeAgent = KnowledgeAgentFactory.newKnowledgeAgent("AGENT", aconf);
knowledgeAgent.applyChangeSet(ResourceFactory.newFileResource("file:C://Users//latika.vashishtha.in//Workspace 2//AppChangeset1//src//test//resources//Sample.drl" ));
knowledgeAgent.addEventListener(new DebugKnowledgeAgentEventListener());
return knowledgeAgent.getKnowledgeBase();
/******************************Changeset.xml****************************/
<?xml version="1.0" encoding="UTF-8"?>
<change-set xmlns='http://drools.org/drools-5.0/change-set'
xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
xs:schemaLocation='http://drools.org/drools-5.0/change-set.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd'>
<add>
<resource source='C:/Users/latika.vashishtha.in/Workspace 2/AppChangeset1/src/test/resources/Sample.drl' type='DRL'> </resource>
</add>
</change-set>
<?xml version="1.0" encoding="UTF-8"?>
<change-set xmlns='http://drools.org/drools-5.0/change-set'
xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
xs:schemaLocation='http://drools.org/drools-5.0/change-set.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd'>
<add>
<resource source='C:/Users/latika.vashishtha.in/Workspace 2/AppChangeset1/src/test/resources/Sample.drl' type='DRL'> </resource>
</add>
</change-set>
您通过的是drl而不是变更集
KnowledgeAgentConfiguration aconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
aconf.setProperty("drools.agent.scanDirectories", "true");
aconf.setProperty("drools.agent.scanResources", "true");
aconf.setProperty("drools.agent.newInstance", "false");
KnowledgeBuilder kbuilder1 = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder1.add( ResourceFactory.newFileResource("file:C://Users//latika.vashishtha.in//Workspace 2//AppChangeset1//src//test//resources//Sample.drl"),ResourceType.DRL );
assertFalse( kbuilder.hasErrors());
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
KnowledgeAgent knowledgeAgent = KnowledgeAgentFactory.newKnowledgeAgent("AGENT", kbase, aconf);
knowledgeAgent.applyChangeSet(ResourceFactory.newFileResource("file:C://Users//latika.vashishtha.in//Workspace 2//AppChangeset1//src//test//resources//change-set.xml" ));
knowledgeAgent.addEventListener(new DebugKnowledgeAgentEventListener());
ResourceChangeScannerConfiguration sconf = ResourceFactory.getResourceChangeScannerService().newResourceChangeScannerConfiguration();
sconf.setProperty("drools.resource.scanner.interval", "10");
ResourceFactory.getResourceChangeScannerService().configure(sconf);
ResourceFactory.getResourceChangeNotifierService().start();
ResourceFactory.getResourceChangeScannerService().start();
return knowledgeAgent.getKnowledgeBase();
您将drl指向更改集knowledgeAgent.applyChangeSet(ResourceFactory.newFileResource(“文件:C://Users//latika.vashishtha.in//Workspace 2//AppChangeset1//src//test//resources//change set.xml”);这可能会解决问题