private boolean isCandidateGroupEntity(IdentityLink identityLinkEntity) { return CANDIDATE.equalsIgnoreCase(identityLinkEntity.getType()) && identityLinkEntity.getGroupId() != null; } }
private boolean isCandidateGroupEntity(IdentityLink identityLinkEntity) { return CANDIDATE.equalsIgnoreCase(identityLinkEntity.getType()) && identityLinkEntity.getGroupId() != null; } }
@Override public List<String> groupCandidates(String taskId) { List<IdentityLink> identityLinks= getIdentityLinks(taskId); List<String> groupCandidates = new ArrayList<String>(); if (identityLinks!=null) { for (IdentityLink i : identityLinks) { if (i.getGroupId()!=null) { if (i.getType().equals(IdentityLinkType.CANDIDATE) ) { groupCandidates.add(i.getGroupId()); } } } } return groupCandidates; }
@Override public List<String> groupCandidates(String taskId) { List<IdentityLink> identityLinks= getIdentityLinks(taskId); List<String> groupCandidates = new ArrayList<String>(); if (identityLinks!=null) { for (IdentityLink i : identityLinks) { if (i.getGroupId()!=null) { if (i.getType().equals(IdentityLinkType.CANDIDATE) ) { groupCandidates.add(i.getGroupId()); } } } } return groupCandidates; }
@Override public TaskCandidateGroup from(IdentityLink identityLink) { return new TaskCandidateGroupImpl(identityLink.getGroupId(), identityLink.getTaskId()); } }
private void retrieveCandidateUserIdsAndGroupIds(TaskEntity task, Map<String, Object> userIdMap, Map<String, Object> groupIdMap) { for (IdentityLink link : task.getCandidates()) { String userId = link.getUserId(); if (userId != null) { userIdMap.put(userId, 0); } String groupId = link.getGroupId(); if (groupId != null) { groupIdMap.put(groupId, 0); } } }
/** * 获取任务候选人 * * @param taskId 任务ID * @return */ @Override public Set<User> getTaskCandidate(String taskId) { Set<User> users = new HashSet(); List identityLinkList = taskService.getIdentityLinksForTask(taskId); if (identityLinkList != null && identityLinkList.size() > 0) { for (Iterator iterator = identityLinkList.iterator(); iterator.hasNext(); ) { IdentityLink identityLink = (IdentityLink) iterator.next(); if (identityLink.getUserId() != null) { User user = identityPageService.getUser(identityLink.getUserId()); if (user != null) users.add(user); } if (identityLink.getGroupId() != null) { // 根据组获得对应人员 List userList = identityService.createUserQuery() .memberOfGroup(identityLink.getGroupId()).list(); if (userList != null && userList.size() > 0) users.addAll(userList); } } } return users; }
String groupId = link.getGroupId(); if (groupId != null)
@NotNull public List<ObjectReferenceType> getMidpointAssignees(TaskExtract taskExtract) { List<ObjectReferenceType> rv = new ArrayList<>(); for (IdentityLink link : taskExtract.getTaskIdentityLinks()) { if (CommonProcessVariableNames.MIDPOINT_ASSIGNEE.equals(link.getType())) { if (link.getUserId() != null) { rv.add(MiscDataUtil.stringToRef(link.getUserId())); } if (link.getGroupId() != null) { // just for completeness (currently we don't expect groups to be here) rv.add(MiscDataUtil.stringToRef(link.getGroupId())); } } } return rv; }
public List<NodeRef> getPooledActorsReference(Collection<IdentityLink> links) { List<NodeRef> pooledActorRefs = new ArrayList<NodeRef>(); if(links != null) { for(IdentityLink link : links) { if(IdentityLinkType.CANDIDATE.equals(link.getType())) { String id = link.getGroupId(); if(id == null) { id = link.getUserId(); } NodeRef pooledNodeRef = authorityManager.mapNameToAuthority(id); if (pooledNodeRef != null) { pooledActorRefs.add(pooledNodeRef); } } } } return pooledActorRefs; }
protected IdentityLink getIdentityLink(String family, String identityId, String processDefinitionId) { boolean isUser = family.equals(RestUrls.SEGMENT_IDENTITYLINKS_FAMILY_USERS); // Perhaps it would be better to offer getting a single identitylink // from // the API List<IdentityLink> allLinks = repositoryService.getIdentityLinksForProcessDefinition(processDefinitionId); for (IdentityLink link : allLinks) { boolean rightIdentity = false; if (isUser) { rightIdentity = identityId.equals(link.getUserId()); } else { rightIdentity = identityId.equals(link.getGroupId()); } if (rightIdentity && link.getType().equals(IdentityLinkType.CANDIDATE)) { return link; } } throw new ActivitiObjectNotFoundException("Could not find the requested identity link.", IdentityLink.class); } }
protected IdentityLink getIdentityLink(String family, String identityId, String type, String taskId) { boolean isUser = family.equals(RestUrls.SEGMENT_IDENTITYLINKS_FAMILY_USERS); // Perhaps it would be better to offer getting a single identitylink // from the API List<IdentityLink> allLinks = taskService.getIdentityLinksForTask(taskId); for (IdentityLink link : allLinks) { boolean rightIdentity = false; if (isUser) { rightIdentity = identityId.equals(link.getUserId()); } else { rightIdentity = identityId.equals(link.getGroupId()); } if (rightIdentity && link.getType().equals(type)) { return link; } } throw new ActivitiObjectNotFoundException("Could not find the requested identity link.", IdentityLink.class); } }
public List<NodeRef> getPooledActorsReference(Collection<IdentityLink> links) { List<NodeRef> pooledActorRefs = new ArrayList<NodeRef>(); if(links != null) { for(IdentityLink link : links) { if(IdentityLinkType.CANDIDATE.equals(link.getType())) { String id = link.getGroupId(); if(id == null) { id = link.getUserId(); } NodeRef pooledNodeRef = authorityManager.mapNameToAuthority(id); if (pooledNodeRef != null) { pooledActorRefs.add(pooledNodeRef); } } } } return pooledActorRefs; }
@ApiOperation(value = "Delete a candidate starter from a process definition", tags = {"Process Definitions"}) @ApiResponses(value = { @ApiResponse(code = 204, message = "Indicates the process definition was found and the identity link was removed. The response body is intentionally empty."), @ApiResponse(code = 404, message = "Indicates the requested process definition was not found or the process definition doesn’t have an identity-link that matches the url.") }) @RequestMapping(value = "/repository/process-definitions/{processDefinitionId}/identitylinks/{family}/{identityId}", method = RequestMethod.DELETE) public void deleteIdentityLink(@ApiParam(name = "processDefinitionId", value="The id of the process definition.") @PathVariable("processDefinitionId") String processDefinitionId,@ApiParam(name = "family", value="Either users or groups, depending on the type of identity link.") @PathVariable("family") String family,@ApiParam(name = "identityId", value="Either the user or group of the identity to remove as candidate starter.") @PathVariable("identityId") String identityId, HttpServletResponse response) { ProcessDefinition processDefinition = getProcessDefinitionFromRequest(processDefinitionId); validateIdentityLinkArguments(family, identityId); // Check if identitylink to delete exists IdentityLink link = getIdentityLink(family, identityId, processDefinition.getId()); if (link.getUserId() != null) { repositoryService.deleteCandidateStarterUser(processDefinition.getId(), link.getUserId()); } else { repositoryService.deleteCandidateStarterGroup(processDefinition.getId(), link.getGroupId()); } response.setStatus(HttpStatus.NO_CONTENT.value()); }
private void fillProcessAssignmentData(final ProcessInstance pi, ProcessToolContext ctx) { Set<String> assignees = new HashSet<String>(); Set<String> queues = new HashSet<String>(); TaskService taskService = getProcessEngine().getTaskService(); for (Task t : findProcessTasks(pi, ctx, false)) { if (t.getAssignee() != null) { assignees.add(t.getAssignee()); } else { //some optimization could be possible for (IdentityLink participation : taskService.getIdentityLinksForTask(t.getId())) { if ("candidate".equals(participation.getType())) { queues.add(participation.getGroupId()); } } } } pi.setAssignees(assignees.toArray(new String[assignees.size()])); pi.setTaskQueues(queues.toArray(new String[queues.size()])); }
public RestIdentityLink createRestIdentityLink(IdentityLink link, RestUrlBuilder urlBuilder) { return createRestIdentityLink(link.getType(), link.getUserId(), link.getGroupId(), link.getTaskId(), link.getProcessDefinitionId(), link.getProcessInstanceId(), urlBuilder); }
/** * if is it possible claim task * * @param task */ private boolean claimTask(TaskEntity task) { if (task.getAssignee() != null && isUserFree( task.getAssignee() )) { taskService.claim(task.getId(), task.getAssignee()); return true; } else if ( !task.getCandidates().isEmpty() ) { // check task's candidates whether they are free and claim task for (IdentityLink identityLink : task.getCandidates()) { if (identityLink.getGroupId() != null) { String freeUserId = getFreeUserInGroup( identityLink.getGroupId() ); if (freeUserId != null) { taskService.claim(task.getId(), freeUserId); task.setAssignee( freeUserId ); return true; } } else if (identityLink.getUserId() != null && isUserFree( identityLink.getUserId() )) { taskService.claim(task.getId(), identityLink.getUserId()); task.setAssignee( identityLink.getUserId() ); return true; } } } return false; }
private void updateTaskCandidates(DelegateTask task, UserAndGroupUpdates updates) { // Only new candidates are present in pooledUsers and pooledGroups, create Links for these for (String user : updates.getUsers()) { task.addCandidateUser( user); } for (String group : updates.getGroups()) { task.addCandidateGroup( group); } // Remove all candidates which have been removed for (IdentityLink link : updates.linksToRemove) { if (link.getUserId() != null) { task.deleteUserIdentityLink(link.getUserId(), link.getType()); } else { task.deleteGroupIdentityLink(link.getGroupId(), link.getType()); } } }
private void updateTaskCandidates(DelegateTask task, UserAndGroupUpdates updates) { // Only new candidates are present in pooledUsers and pooledGroups, create Links for these for (String user : updates.getUsers()) { task.addCandidateUser( user); } for (String group : updates.getGroups()) { task.addCandidateGroup( group); } // Remove all candidates which have been removed for (IdentityLink link : updates.linksToRemove) { if (link.getUserId() != null) { task.deleteUserIdentityLink(link.getUserId(), link.getType()); } else { task.deleteGroupIdentityLink(link.getGroupId(), link.getType()); } } }
private void updateTaskCandidates(String taskId, UserAndGroupUpdates updates) { // Only new candidates are present in pooledUsers and pooledGroups, create Links for these for (String user : updates.getUsers()) { taskService.addCandidateUser(taskId, user); } for (String group : updates.getGroups()) { taskService.addCandidateGroup(taskId, group); } // Remove all candidates which have been removed for (IdentityLink link : updates.getLinksToRemove()) { if (link.getUserId() != null) { taskService.deleteUserIdentityLink(link.getTaskId(), link.getUserId(), link.getType()); } else { taskService.deleteGroupIdentityLink(link.getTaskId(), link.getGroupId(), link.getType()); } } }