diff --git a/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/instance/ProcessInstanceImpl.java b/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/instance/ProcessInstanceImpl.java index 2d6c5c7f420..763bef05dd6 100644 --- a/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/instance/ProcessInstanceImpl.java +++ b/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/instance/ProcessInstanceImpl.java @@ -1461,11 +1461,7 @@ public String[] getAssignedStates(User user, String roleName) throws WorkflowExc boolean userGroupsMatch = false; if (StringUtil.isDefined(wkUser.getGroupId())) { // check if one of userGroups matches with working group - List groupIds = Arrays.asList(OrganisationControllerFactory.getOrganisationController() - .getAllGroupIdsOfUser(wkUser.getId())); - if (groupIds != null) { - userGroupsMatch = groupIds.contains(wkUser.getGroupId()); - } + userGroupsMatch = user.getGroupIds().contains(wkUser.getGroupId()); } SilverTrace.debug("workflowEngine", "ProcessInstanceImpl.getAssignedStates", diff --git a/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/user/UserImpl.java b/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/user/UserImpl.java index d09b37f74cc..7ca049945aa 100644 --- a/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/user/UserImpl.java +++ b/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/user/UserImpl.java @@ -29,7 +29,10 @@ import com.stratelia.webactiv.beans.admin.AdminReference; import com.stratelia.webactiv.beans.admin.UserDetail; import com.stratelia.webactiv.beans.admin.UserFull; +import org.silverpeas.core.admin.OrganisationControllerFactory; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** @@ -120,10 +123,14 @@ public boolean equals(Object user) { @Override public List getGroupIds() { + if (groupIds == null) { + String[] ids = OrganisationControllerFactory.getOrganisationController().getAllGroupIdsOfUser(getUserId()); + if (ids != null) { + groupIds = Arrays.asList(ids); + } else { + groupIds = new ArrayList(); + } + } return groupIds; } - - public void setGroupIds(List groupIds) { - this.groupIds = groupIds; - } } diff --git a/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/user/UserManagerImpl.java b/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/user/UserManagerImpl.java index 3fa05b8a162..40002bd5e39 100644 --- a/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/user/UserManagerImpl.java +++ b/ejb-core/formtemplate/src/main/java/com/silverpeas/workflow/engine/user/UserManagerImpl.java @@ -69,11 +69,6 @@ public UserManagerImpl() { @Override public User getUser(String userId) throws WorkflowException { UserImpl user = new UserImpl(getUserDetail(userId)); - String[] groupIds = OrganisationControllerFactory.getOrganisationController() - .getAllGroupIdsOfUser(userId); - if (groupIds != null) { - user.setGroupIds(Arrays.asList(groupIds)); - } return user; }