JBoss Community

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

created by Feki Ahmed in jBPM Development - View the full discussion

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

Start a new discussion in jBPM Development at Community