3 Replies Latest reply on Jul 15, 2010 7:45 AM by tcr

    Get all users that participated on a given process

    imjorge

      I would like to get all the users that participated in a given process instance.

       

      The following code:

       

              List<HistoryTask> history = historyService.createHistoryTaskQuery().executionId(processInstance.getId()).list();
              System.out.println("----------");
              for (HistoryTask e : history) {
                  System.out.println(e.getAssignee());
              }
              System.out.println("----------");

       

      Has a limitation for my needs. Imagine that I have a process with one task task1. task1 is assigned to user a. User a delegates task1 to user b, and then b delegates task1 to user c. The above code will only show user c while I would like to receive all the users [a, b, c].

       

      What is the best way to achieve this requirement? If you could provide some processes + source code fragments it would be great.

       

      --- Jorge

        • 1. Re: Get all users that participated on a given process
          rebody

          Hi Jorge,

           

          As jBPM 4 wouldn't store re-assignment history.  We could get previous assignee information from history.  So if you want to achieve this feature, you have to create a new table, and store these infos by yourself.

          • 2. Re: Get all users that participated on a given process
            imjorge

            Thanks @HuiSheng Xu I ended up using the HistorySessionChain to track TaskActivityStart and TaskAssign events and save every assignment in a custom application table.

            • 3. Re: Get all users that participated on a given process
              tcr

              Hi Jorge,

               

              we had the requirement to provide an "audit trail" including reassignments. Just as you did, we implemented a custom history listener and recorded all events we are interested in.

               

              At least in 4.2 we faced an issue here: The "old" assignee is not a member of the Reassign-Event! As we had several other requirements regarding reassignments, we implemented a custom reassign-CMD and a corresponding custom reassign-event. Sounds costly, but actually wasn't.

               

              Regards

              Torsten