[rules-users] no visitor implementation for : class org.drools.rule.TypeDeclaration

Esteban Aliverti esteban.aliverti at gmail.com
Mon Aug 23 17:33:01 EDT 2010


When working on incremental change-set processing mode, Knowledge Agent
performs a diff between the original and the modified resources. Modified
resources are compiled, and a visitor pattern is used to loop over knowledge
definitions (such as rules, functions, queries, etc.).
So if rule1 was modified in the new resource, it is removed from the
original kbase and replaced with the new implementation. The thing is that
kagent doesn't implement a visitor for TypeDeclaration (when you use *
declare* in your DRL to define your model) so it doesn't know how to handle
them.
I have recently fix a typo in the visitor implementation that prevented you
to receive a better message:

"BinaryResourceDiffProducerImpl: Couldn't handle "+yourDefinitionName+". We
must leave it in the new Package."

This means that kagent doesn't support modifications on declared types yet.

Best,


XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Esteban Aliverti
- Developer @ http://www.plugtree.com
- Blog @ http://ilesteban.wordpress.com


2010/8/23 Tina Vießmann <tviessmann at stud.hs-bremen.de>

>  Hi,
>
> I'm getting a two red highlighted outputs in eclipse if I modify my rules
> file during run time. Besides that the modifications seem to work.
> What does it mean?
>
> The full output I get when the resource change is detected is listed below.
> The bold lines are the concerned ones.
>
> Thanks for any help! :)
> Tina
>
>
> [2010:08:235 21:08:296:debug] ResourceChangeScanner attempt to scan 1
> resources
> [2010:08:235 21:08:296:debug] ResourceChangeScanner modified
> resource=[ClassPathResource path='testRule.drl'] : 1282559206875 :
> 1282591705000
> [2010:08:235 21:08:296:debug] ResourceChangeNotification received ChangeSet
> notification
> [2010:08:235 21:08:296:debug] ResourceChangeScanner thread is waiting for
> 10 seconds.
> [2010:08:235 21:08:296:debug] ResourceChangeNotification processing
> ChangeSet
> [2010:08:235 21:08:296:debug] ResourceChangeNotification ChangeSet modified
> resource=[ClassPathResource path='testRule.drl'] for
> listener=org.drools.agent.impl.KnowledgeAgentImpl at b40ec4
> [2010:08:235 21:08:296:debug] KnowledgeAgent received ChangeSet changed
> notification
> [2010:08:235 21:08:296:info] KnowledgeAgent applying ChangeSet
> [2010:08:235 21:08:296:debug] KnowledgeAgent removing mappings for
> resource=[ClassPathResource path='testRule.drl'] with unsubscribe=true
> [2010:08:235 21:08:296:debug] KnowledgeAgent notifier unsubscribing to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:296:debug] ResourceChangeNotification unsubscribing
> listener=org.drools.agent.impl.KnowledgeAgentImpl at b40ec4 to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:296:debug] ResourceChangeScanner unsubcribing
> notifier=org.drools.io.impl.ResourceChangeNotifierImpl at 13576a2 to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:296:debug] ResourceChangeScanner
> resource=[ClassPathResource path='testRule.drl'] now has no subscribers
> [2010:08:235 21:08:296:debug] KnowledgeAgent rebuilding KnowledgeBase using
> ChangeSet
> [2010:08:235 21:08:296:info] KnowledgeAgent performing an incremental build
> of the ChangeSet
> [2010:08:235 21:08:296:debug] ResourceChangeNotification thread is waiting
> for queue update
> [INFO ] 21:30:10,375 [main] "Event retracted."  (DRL Logger)
> [2010:08:235 21:08:453:debug] KnowledgeAgent: Diffing: [ClassPathResource
> path='testRule.drl']
> [INFO ] 21:30:10,453 [main] "Event retracted."  (DRL Logger)
> [2010:08:235 21:08:500:debug] BinaryResourceDiffProducerImpl: [Rule
> name=delete parameter values, agendaGroup=MAIN, salience=0, no-loop=false]
> is not present anymore. Adding to removed list.
> [2010:08:235 21:08:500:debug] BinaryResourceDiffProducerImpl:
> org.drools.rule.Function at 67fe80 did change. Marking as removed so it new
> version could be added later.
> [2010:08:235 21:08:500:debug] BinaryResourceDiffProducerImpl: Comparing
> [Rule name=Warning threshold exceeded to many times, agendaGroup=MAIN,
> salience=0, no-loop=false] against [Rule name=Warning threshold exceeded to
> many times, agendaGroup=MAIN, salience=0, no-loop=false]
> *no visitor implementation for : class org.drools.rule.TypeDeclaration :
> org.drools.rule.TypeDeclaration at 95f290
> no visitor implementation for : class org.drools.rule.TypeDeclaration :
> org.drools.rule.TypeDeclaration at bfd66a*
> [2010:08:235 21:08:546:debug] BinaryResourceDiffProducerImpl: [Rule
> name=Warning threshold exceeded to many times, agendaGroup=MAIN, salience=0,
> no-loop=false] didn't change. Removing from diff package and adding it to
> unmodified list.
> [2010:08:235 21:08:546:debug] BinaryResourceDiffProducerImpl: Comparing
> [Rule name=Insert Watcher Into Knowledge Base, agendaGroup=MAIN, salience=0,
> no-loop=false] against [Rule name=Insert Watcher Into Knowledge Base,
> agendaGroup=MAIN, salience=0, no-loop=false]
> [2010:08:235 21:08:546:debug] BinaryResourceDiffProducerImpl: The rules
> have different LHS
> [2010:08:235 21:08:546:debug] BinaryResourceDiffProducerImpl: Comparing
> [Rule name=Add Event to Watcher Set, agendaGroup=MAIN, salience=0,
> no-loop=false] against [Rule name=Add Event to Watcher Set,
> agendaGroup=MAIN, salience=0, no-loop=false]
> [2010:08:235 21:08:546:debug] BinaryResourceDiffProducerImpl: The rules
> have different LHS
> [2010:08:235 21:08:546:debug] KnowledgeAgent: Removing: [Rule name=delete
> parameter values, agendaGroup=MAIN, salience=0, no-loop=false]
> [2010:08:235 21:08:546:debug] KnowledgeAgent removing Rule=[Rule
> name=delete parameter values, agendaGroup=MAIN, salience=0, no-loop=false]
> from package=net.eads.astrium.aits.cep.rules
> [2010:08:235 21:08:546:debug] KnowledgeAgent: Removing:
> org.drools.rule.Function at 67fe80
> [2010:08:235 21:08:562:debug] KnowledgeAgent mapping
> resource=[ClassPathResource path='testRule.drl'] to
> KnowledgeDefinition=[Rule name=Warning threshold exceeded to many times,
> agendaGroup=MAIN, salience=0, no-loop=false]
> [2010:08:235 21:08:562:debug] KnowledgeAgent obtaining pkg
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] KnowledgeAgent mapping
> resource=[ClassPathResource path='testRule.drl'] to
> KnowledgeDefinition=[Rule name=Insert Watcher Into Knowledge Base,
> agendaGroup=MAIN, salience=0, no-loop=false]
> [2010:08:235 21:08:562:debug] KnowledgeAgent notifier subscribing to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] ResourceChangeNotification subscribing
> listener=org.drools.agent.impl.KnowledgeAgentImpl at b40ec4 to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] ResourceChangeScanner subcribing
> notifier=org.drools.io.impl.ResourceChangeNotifierImpl at 13576a2 to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] KnowledgeAgent mapping
> resource=[ClassPathResource path='testRule.drl'] to
> KnowledgeDefinition=[Rule name=Add Event to Watcher Set, agendaGroup=MAIN,
> salience=0, no-loop=false]
> [2010:08:235 21:08:562:debug] KnowledgeAgent notifier subscribing to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] ResourceChangeNotification subscribing
> listener=org.drools.agent.impl.KnowledgeAgentImpl at b40ec4 to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] KnowledgeAgent mapping
> resource=[ClassPathResource path='testRule.drl'] to
> KnowledgeDefinition=org.drools.rule.TypeDeclaration at 17dff15
> [2010:08:235 21:08:562:debug] KnowledgeAgent notifier subscribing to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] ResourceChangeNotification subscribing
> listener=org.drools.agent.impl.KnowledgeAgentImpl at b40ec4 to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] KnowledgeAgent mapping
> resource=[ClassPathResource path='testRule.drl'] to
> KnowledgeDefinition=org.drools.rule.TypeDeclaration at f5cbda
> [2010:08:235 21:08:562:debug] KnowledgeAgent notifier subscribing to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] ResourceChangeNotification subscribing
> listener=org.drools.agent.impl.KnowledgeAgentImpl at b40ec4 to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] KnowledgeAgent mapping
> resource=[ClassPathResource path='testRule.drl'] to
> KnowledgeDefinition=org.drools.rule.Function at 11a59ce
> [2010:08:235 21:08:562:debug] KnowledgeAgent notifier subscribing to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] ResourceChangeNotification subscribing
> listener=org.drools.agent.impl.KnowledgeAgentImpl at b40ec4 to
> resource=[ClassPathResource path='testRule.drl']
> [2010:08:235 21:08:562:debug] KnowledgeAgent adding
> KnowledgeDefinitionsPackage net.eads.astrium.aits.cep.rules
> [2010:08:235 21:08:578:info] KnowledgeAgent incremental build of
> KnowledgeBase finished and in use
> [2010:08:235 21:08:578:debug] KnowledgeAgent finished rebuilding
> KnowledgeBase using ChangeSet
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100823/fc86ab53/attachment.html 


More information about the rules-users mailing list