Hello,
I am new to drools and trying to work with the knowledge agent for the automatic loading
of rules into the knowledge base from a directory and then firing all the rules. Am using
the ChangeSet xml File to configure the rule directory. Actually the problem is: the rules
are fired for the first time only, but when I put a new rule file in the directory the new
rules does't fire.
plz find the source code in the attachment
rgards,nadeem
MY CODE:public class KnowAgent { KnowledgeBase buildKBA(KnowledgeBase kb){ KnowledgeAgent
kagent =
KnowledgeAgentFactory.newKnowledgeAgent( "MyAgent" );
kagent.applyChangeSet(
ResourceFactory.newClassPathResource("resChangeSet.xml")
); ResourceFactory.getResourceChangeNotifierService().start(); ResourceFactory.getResourceChangeScannerService().start(); kb
= kagent.getKnowledgeBase(); return kb;
}}--------------------------------------------------public class RuleRunnerKnowledgeAgent
{ private KnowAgent myKnowAgent = new KnowAgent(); private KnowledgeBase kbase =
KnowledgeBaseFactory.newKnowledgeBase(); private KnowledgeRuntimeLogger logger; private
StatefulKnowledgeSession ksession;
public void RuleRunnerKnowledgeAgent(String[] rules, Object[]
facts) throws Exception { kbase = myKnowAgent.buildKBA(kbase);
ksession = kbase.newStatefulKnowledgeSession(); logger =
KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "agentkblog");
ksession.fireAllRules(); }}--------------------------------------------------<?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
drools-change-set-5.0.xsd' > <add> <resource
source='file:src/main/rules/org/drools/prepare/collection/' type='DRL'
/>
</add></change-set>--------------------------------------------------rule
"Rule 01" when eval (1==1) then
System.out.println("Rule 01 Works");end
2nd DRL file is also same like, but with diff rule and file name and
output.--------------------------------------------------CONSOLE OUTPUT[2009:11:329
00:11:762:info] ResourceChangeNotification created[2009:11:329 00:11:764:info]
ResourceChangeScanner created with default interval=60[2009:11:329 00:11:765:debug]
ResourceChangeNotification monitor added
monitor=org.drools.io.impl.ResourceChangeScannerImpl@19134f4[2009:11:329 00:11:766:info]
KnowledgAgent created, with
configuration:monitorChangeSetEvents=true scanResources=true
scanDirectories=true[2009:11:329 00:11:766:info] KnowledegAgent has started listening for
ChangeSet notifications
(null: 4, 101): schema_reference.4: Failed to read schema document
'drools-change-set-5.0.xsd', because 1) could not find the document; 2) the
document could not be read; 3) the root element of the document is not
<xsd:schema>.(null: 4, 101): cvc-elt.1: Cannot find the declaration of element
'change-set'.(null: 5, 9): schema_reference.4: Failed to read schema document
'drools-change-set-5.0.xsd', because 1) could not find the document; 2) the
document could not be read; 3) the root element of the document is not
<xsd:schema>.(null: 7, 90): schema_reference.4: Failed to read schema document
'drools-change-set-5.0.xsd', because 1) could not find the document; 2) the
document could not be read;
3) the root element of the document is not <xsd:schema>.[2009:11:329
00:11:873:info] KnowledgAgent applying ChangeSet[2009:11:329 00:11:875:debug]
KnowledgeAgent subscribing to directory=[UrlResource
path='file:src/main/rules/org/drools/prepare/collection/'][2009:11:329
00:11:875:debug] ResourceChangeNotification subscribing
listener=org.drools.agent.impl.KnowledgeAgentImpl@12d7a10 to resource=[UrlResource
path='file:src/main/rules/org/drools/prepare/collection/'][2009:11:329
00:11:875:debug] ResourceChangeScanner subcribing
notifier=org.drools.io.impl.ResourceChangeNotifierImpl@1feca64 to resource=[UrlResource
path='file:src/main/rules/org/drools/prepare/collection/'][2009:11:329
00:11:877:debug] KnowledgeAgent subscribing to directory content resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1.drl'][2009:11:329
00:11:877:debug]
ResourceChangeNotification subscribing
listener=org.drools.agent.impl.KnowledgeAgentImpl@12d7a10 to resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1.drl'][2009:11:329
00:11:877:debug] ResourceChangeScanner subcribing
notifier=org.drools.io.impl.ResourceChangeNotifierImpl@1feca64 to resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1.drl'][2009:11:329
00:11:878:debug] KnowledgeAgent ChangeSet requires KnowledgeBuilder[2009:11:329
00:11:878:debug] KnowledgeAgent rebuilding KnowledgeBase using ChangeSet[2009:11:329
00:11:171:debug] KnowledgeAgent building resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1.drl'][2009:11:329
00:11:601:info] KnowledgeAgent new KnowledgeBase now built and in use[2009:11:329
00:11:603:info] ResourceChangeNotification has started listening
for ChangeSet publications[2009:11:329 00:11:603:debug] ResourceChangeNotification thread
is waiting for queue update
[2009:11:329 00:11:604:info] ResourceChangeNotification scanner has started[2009:11:329
00:11:605:debug] ResourceChangeScanner attempt to scan 2 resources[2009:11:329
00:11:605:debug] ResourceChangeScanner scanning directory=[UrlResource
path='file:src/main/rules/org/drools/prepare/collection/'][2009:11:329
00:11:606:debug] ResourceChangeScanner thread is waiting for 60Rule 01 Works[2009:11:329
00:11:607:debug] ResourceChangeScanner attempt to scan 2 resources[2009:11:329
00:11:608:debug] ResourceChangeScanner scanning directory=[UrlResource
path='file:src/main/rules/org/drools/prepare/collection/'][2009:11:329
00:11:609:debug] ResourceChangeScanner new resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1A.drl'][2009:11:329
00:11:609:debug] ResourceChangeNotification subscribing directory=[UrlResource
path='file:src/main/rules/org/drools/prepare/collection/'] content
resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1A.drl'][2009:11:329
00:11:609:debug] ResourceChangeNotification subscribing
listener=org.drools.agent.impl.KnowledgeAgentImpl@12d7a10 to resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1A.drl'][2009:11:329
00:11:610:debug] ResourceChangeScanner subcribing
notifier=org.drools.io.impl.ResourceChangeNotifierImpl@1feca64 to resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1A.drl'][2009:11:329
00:11:611:debug] ResourceChangeScanner modified resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1A.drl'] : -1
: 1259108256456[2009:11:329 00:11:611:debug] ResourceChangeNotification received ChangeSet
notification[2009:11:329 00:11:612:debug] ResourceChangeScanner thread is waiting for
60[2009:11:329 00:11:612:debug] ResourceChangeNotification processing
ChangeSet[2009:11:329 00:11:612:debug] ResourceChangeNotification ChangeSet added
resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1A.drl'] for
listener=org.drools.agent.impl.KnowledgeAgentImpl@12d7a10[2009:11:329 00:11:613:debug]
ResourceChangeNotification ChangeSet modified resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1A.drl'] for
listener=org.drools.agent.impl.KnowledgeAgentImpl@12d7a10[2009:11:329 00:11:613:debug]
KnowledgeAgent received ChangeSet changed
notification[2009:11:329 00:11:613:debug] ResourceChangeNotification thread is waiting
for queue update[2009:11:329 00:11:613:info] KnowledgAgent applying ChangeSet[2009:11:329
00:11:613:debug] KnowledgeAgent subscribing to resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1A.drl'][2009:11:329
00:11:614:debug] ResourceChangeNotification subscribing
listener=org.drools.agent.impl.KnowledgeAgentImpl@12d7a10 to resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1A.drl'][2009:11:329
00:11:614:debug] KnowledgeAgent ChangeSet requires KnowledgeBuilder[2009:11:329
00:11:614:debug] KnowledgeAgent rebuilding KnowledgeBase using ChangeSet[2009:11:329
00:11:619:debug] KnowledgeAgent building resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1.drl'][2009:11:329
00:11:749:debug] KnowledgeAgent building resource=[FileResource
file='src\main\rules\org\drools\prepare\collection\objectCollection1A.drl'][2009:11:329
00:11:840:info] KnowledgeAgent new KnowledgeBase now built and in use