[jboss-dev-forums] [jBPM Development] - Re: jbpm 5.4.0 - NullPointerException completing workItem. is this bug not resolved yet ?

Feki Ahmed do-not-reply at jboss.com
Wed Mar 6 09:57:03 EST 2013


Feki Ahmed [https://community.jboss.org/people/bardelman] created the discussion

"Re: jbpm 5.4.0 - NullPointerException completing workItem. is this bug not resolved yet ?"

To view the discussion, visit: https://community.jboss.org/message/801076#801076

--------------------------------------------------------------
You are pointing to the right place ! i resolved this problem and i remember that i had to instanciate a new kbuilder, a new  kbase ,a new  env , a new  emf for the session to reload as it is a new created session and even a new client for dealing with tasks. 

here is the code :

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        kbuilder.add(new ClassPathResource(proctoreloadname+".bpmn"), ResourceType.BPMN2);


        if (kbuilder.hasErrors()) {
            for (KnowledgeBuilderError error : kbuilder.getErrors()) {
                System.out.println(">>> Error:" + error.getMessage());


            }
            System.out.println(">>> Knowledge couldn't be parsed! ");
        }


        kbase = KnowledgeBaseFactory.newKnowledgeBase();


        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
        env = EnvironmentFactory.newEnvironment();
        emf = Persistence.createEntityManagerFactory("org.jbpm.runtime.ht");
        env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
        env.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager());



        processInstance = null;


               // Let's reload the session 
                  ksessions.add(JPAKnowledgeService.loadStatefulKnowledgeSession(Integer.parseInt(idSessionToReload), kbase, null, env));
                  ksessions.remove(ksessions.size()-2);

                  sessionId= ksessions.get(ksessions.size()-1).getId();
                  // All the listeners and WorkItemHandlers are volatile, so we need to register them each time that we reload the session
                  //  from the DB.
                  clients.add(createTaskService(emf));
                  clients.remove(clients.size()-2);
                  clients.get(clients.size()-1).connect();
                  localHTWorkItemHandlers.add(new LocalHTWorkItemHandler(clients.get(clients.size()-1), ksessions.get(ksessions.size()-1)));
                  localHTWorkItemHandlers.remove(localHTWorkItemHandlers.size()-2);
                  try {
                                        clients.get(clients.size()-1).disconnect();
                              } catch (Exception e1) {
                                        // TODO Auto-generated catch block
                                        e1.printStackTrace();
                              }

                  ksessions.get(ksessions.size()-1).getWorkItemManager().registerWorkItemHandler("Human Task", localHTWorkItemHandlers.get(localHTWorkItemHandlers.size()-1));
--------------------------------------------------------------

Reply to this message by going to Community
[https://community.jboss.org/message/801076#801076]

Start a new discussion in jBPM Development at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2035]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-dev-forums/attachments/20130306/d7527c64/attachment-0001.html 


More information about the jboss-dev-forums mailing list