[jboss-user] [jBPM] - jBPM 5.4 : how to forward / reassign a task to a group ?

gonzalad do-not-reply at jboss.com
Wed Feb 20 06:15:50 EST 2013


gonzalad [https://community.jboss.org/people/gonzalad] created the discussion

"jBPM 5.4 : how to forward / reassign a task to a group ?"

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

--------------------------------------------------------------
As mentioned in  https://community.jboss.org/thread/221465 https://community.jboss.org/thread/221465, I need to reassign a task to a group.

This isn't normally possible via taskService.forward as per the spec WS-Huma,Task 1.0 chapter 4.7.3 Delegating or Forwarding a Human Task :

Forwarding is possible if the task has a set of individually assigned potential owners, not if its potential owners are assigned using one or many groups.


Is there a good way to do it with jBPM ?

For the moment, here's my working code, but it's kind of ugly :


public void reassign(TaskSummary taskSummary, String username,
    String targetGroupname) {
 
  Task task = taskService.getTask(taskSummary.getId());
 
  // check if username is in potentialOwners
  boolean userInPotentialOwners = false;
  for (OrganizationalEntity entity : task.getPeopleAssignments()
      .getPotentialOwners()) {
    if (entity.getId().equals(username)) {
      userInPotentialOwners = true;
      break;
    }
  }
 
  if (!userInPotentialOwners) {
    org.jbpm.task.User actualOwner = task.getTaskData()
        .getActualOwner();
 
    // we claim the task just to set actualOwner to current user
    if (taskSummary.getStatus() == Status.Ready
        && (actualOwner == null || !actualOwner.getId().equals(
            username))) {
      taskService.claim(task.getId(), username);
      actualOwner = task.getTaskData().getActualOwner();
    }
 
    // if actualOwner is current user, we add it to potentialOwnersn,
    // just to call forward - see
    // https://community.jboss.org/thread/221465?tstart=0
    task.getPeopleAssignments().getPotentialOwners().add(actualOwner);
  }
 
  taskService.forward(taskSummary.getId(), username, targetGroupname);
 
  // forward reassigns the task.
  // if the task was already assigned to other groups / users, those groups / users are not removed from potentialOwners
  // we must do it explicitly
  PeopleAssignments peopleAssignments = task.getPeopleAssignments();
  List<OrganizationalEntity> clonedList = peopleAssignments
      .getPotentialOwners();
  for (OrganizationalEntity entity : clonedList) {
    if (!entity.getId().equals(targetGroupname)
        && !entity.getId().equals("Administrator")) {
      peopleAssignments.getPotentialOwners().remove(entity);
    }
  }
}


Thanks !
--------------------------------------------------------------

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

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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20130220/b33320be/attachment-0001.html 


More information about the jboss-user mailing list