[jboss-dev-forums] [jBPM Development] - Process instance execution do not continue to the next task after completing a previous task.

Feki Ahmed do-not-reply at jboss.com
Fri Feb 22 09:39:54 EST 2013


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

"Process instance execution do not continue to the next task after completing a previous task."

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

--------------------------------------------------------------
Hi, 

i m using jbpm 5.4 embeded on a web application and i ve a problem after completing a task, getting the next task with the "getTasksAssignedAsPotentialOwner" do not return anything.
When i created  the session which contain the process i registered a "LocalHTWorkItemHandler", so i don't think i need to complete it in order to the process to be continued.

After the task is completed , i checked on the database and found its status "completed" so i think nothing wrong have happened in completing/persisting operations.

i also don't have any exception and nothing happen in the application , i just can't get the next task.




h6. The following is the service java class which contain methods used for creating the session and completing the task.

public class JbpmAPIUtil {


          public static StatefulKnowledgeSession ksession=null;
          public static ProcessInstance processInstance;

          public static List<LunchedProc> lunchedprocs = new ArrayList<LunchedProc>();
          public static List<ProcessInstanceInfo> procsListfrmdb = new ArrayList<ProcessInstanceInfo>();
          private static TaskService client;




     /*
           * Complete a task with a taskid and data for a user 
           */

          public static void completeTask(long taskId, Map<String,String> data, String userId){


                    UserTransaction ut=null;

                    try {
                              ut = (UserTransaction) new InitialContext().lookup( "java:comp/UserTransaction" );
                    } catch (NamingException e1) { 
                              e1.printStackTrace();
                    }


                    try {
                              ut.begin();
                    } catch (NotSupportedException e) { 
                              e.printStackTrace();
                    } catch (SystemException e) { 
                              e.printStackTrace();
                    } 

                      client.start(taskId, userId);

                    try {
                              ut.commit();
                    } catch (IllegalStateException e) { 
                              e.printStackTrace();
                    } catch (SecurityException e) { 
                              e.printStackTrace();
                    } catch (HeuristicMixedException e) { 
                              e.printStackTrace();
                    } catch (HeuristicRollbackException e) { 
                              e.printStackTrace();
                    } catch (RollbackException e) { 
                              e.printStackTrace();
                    } catch (SystemException e) { 
                              e.printStackTrace();
                    }

                    ContentData contentData = null;
                    if (data != null) {
                              ByteArrayOutputStream bos = new ByteArrayOutputStream();
                              ObjectOutputStream out;
                              try {
                                        out = new ObjectOutputStream(bos);
                                        out.writeObject(data);
                                        out.close();
                                        contentData = new ContentData();
                                        contentData.setContent(bos.toByteArray());
                                        contentData.setAccessType(AccessType.Inline);
                              } catch (IOException e) {
                                        e.printStackTrace();
                              }
                    }


                    try {
                              ut.begin();
                    } catch (NotSupportedException e) { 
                              e.printStackTrace();
                    } catch (SystemException e) { 
                              e.printStackTrace();
                    }

                    client.complete(taskId, userId, contentData);

                    try {
                              ut.commit();
                    } catch (IllegalStateException e) { 
                              e.printStackTrace();
                    } catch (SecurityException e) { 
                              e.printStackTrace();
                    } catch (HeuristicMixedException e) { 
                              e.printStackTrace();
                    } catch (HeuristicRollbackException e) { 
                              e.printStackTrace();
                    } catch (RollbackException e) { 
                              e.printStackTrace();
                    } catch (SystemException e) { 
                              e.printStackTrace();
                    }

    }




private static StatefulKnowledgeSession CreateSession(String process){

    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(new ClassPathResource(process), ResourceType.BPMN2);


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


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


    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();


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



    //  creating a Persistence Knowledge Session
    System.out.println(" >>> Let's create a Persistent Knowledge Session");
    final StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession(kbase, null, env);



    int sessionId = ksession.getId();
    System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    System.out.println("sessionId : "+sessionId);

    // We need to register the WorkItems and Listeners that the session will use
    createTaskService(emf);
    LocalHTWorkItemHandler localHTWorkItemHandler = new LocalHTWorkItemHandler(client, ksession);



    ksession.getWorkItemManager().registerWorkItemHandler("Human Task", localHTWorkItemHandler);

    KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);    

          return ksession;
}


private static void createTaskService(EntityManagerFactory emf) {

    org.jbpm.task.service.TaskService taskService = new org.jbpm.task.service.TaskService(emf, SystemEventListenerFactory.getSystemEventListener());
    Map<String, User> users = new HashMap<String, User>();
    users.put("Administrator", new User("Administrator"));
    users.put("user1", new User("user1"));
    users.put("user2", new User("user2"));


    Map<String, Group> groups = new HashMap<String, Group>();
    taskService.addUsersAndGroups(users, groups);
    client = new LocalTaskService(taskService);



  }


}


Please , can someone guess what is wrong ??
--------------------------------------------------------------

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

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/20130222/e23f1408/attachment-0001.html 


More information about the jboss-dev-forums mailing list