2 Replies Latest reply on Dec 2, 2012 9:15 PM by joe.chuah

    ClassCastException in DynamicUtils when using JPAKnowledgeService.loadStatefulKnowledgeSession()




      I've encountered the problem as stated above when using DynamicUtils to addDynamicSubProcess at the following line


      ProcessEventSupport eventSupport = ((InternalProcessRuntime)((InternalKnowledgeRuntime)ksession).getProcessRuntime()).getProcessEventSupport();


      The reason as far as I know is because the ksession returned from JPAKnowledgeService.loadStatefulKnowledgeSession() or newStatefulKnowledgeSession()

      which is implemented using org.drools.persistence.jpa.KnowledgeStoreServiceImpl

      returns the ksession as a CommandBasedStatefulKnowledgeSession object instance.


      The CommandBasedStatefulKnowledgeSession does not implement InternalKnowledgeRuntime and hence we hit a class cast exception.


      The same problem does not occur when using a ksession from the KnowledgeBuilder>KnowledgeBase>ksession.


      Any idea if CommandBasedStatefulKnowledgeSession is going to implement InternalKnowledgeRuntime in the future or

      there's gonna be a fix for using sessions which are loaded from DB? or is it a limitation