@Override public List<IdentityLinkEntity> getIdentityLinks() { if (!isIdentityLinksInitialized) { definitionIdentityLinkEntities = CommandContextUtil.getIdentityLinkService().findIdentityLinksByScopeDefinitionIdAndType(id, ScopeTypes.CMMN); isIdentityLinksInitialized = true; } return definitionIdentityLinkEntities; }
public static IdentityLinkService getIdentityLinkService() { return getIdentityLinkService(getCommandContext()); }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override public List<IdentityLink> execute(CommandContext commandContext) { CaseInstance caseInstance = CommandContextUtil.getCaseInstanceEntityManager(commandContext).findById(caseInstanceId); if (caseInstance == null) { throw new FlowableObjectNotFoundException("Cannot find case instance with id " + caseInstanceId, CaseInstanceEntity.class); } return (List) CommandContextUtil.getIdentityLinkService(commandContext).findIdentityLinksByScopeIdAndType( caseInstanceId, ScopeTypes.CMMN); }
public static void deleteTaskIdentityLinks(TaskEntity taskEntity, String userId, String groupId, String type) { List<IdentityLinkEntity> removedIdentityLinkEntities = CommandContextUtil.getIdentityLinkService().deleteTaskIdentityLink( taskEntity.getId(), taskEntity.getIdentityLinks(), userId, groupId, type); handleTaskIdentityLinkDeletions(taskEntity, removedIdentityLinkEntities, true); }
public static IdentityLinkEntity createCaseInstanceIdentityLink(CaseInstance caseInstance, String userId, String groupId, String type) { IdentityLinkEntity identityLinkEntity = CommandContextUtil.getIdentityLinkService().createScopeIdentityLink( null, caseInstance.getId(), ScopeTypes.CMMN, userId, groupId, type); CommandContextUtil.getCmmnHistoryManager().recordIdentityLinkCreated(identityLinkEntity); return identityLinkEntity; }
public static void deleteCaseInstanceIdentityLinks(CaseInstance caseInstance, String userId, String groupId, String type) { List<IdentityLinkEntity> removedIdentityLinkEntities = CommandContextUtil.getIdentityLinkService().deleteScopeIdentityLink( caseInstance.getId(), ScopeTypes.CMMN, userId, groupId, type); for (IdentityLinkEntity identityLinkEntity : removedIdentityLinkEntities) { CommandContextUtil.getCmmnHistoryManager().recordIdentityLinkDeleted(identityLinkEntity); } }
protected void addAuthorizationsFromIterator(List<String> expressions, CaseDefinitionEntity caseDefinition, String expressionType) { if (expressions != null) { IdentityLinkService identityLinkService = CommandContextUtil.getIdentityLinkService(); Iterator<String> iterator = expressions.iterator(); while (iterator.hasNext()) { @SuppressWarnings("cast") String expression = iterator.next(); IdentityLinkEntity identityLink = identityLinkService.createIdentityLink(); identityLink.setScopeDefinitionId(caseDefinition.getId()); identityLink.setScopeType(ScopeTypes.CMMN); if ("user".equals(expressionType)) { identityLink.setUserId(expression); } else if ("group".equals(expressionType)) { identityLink.setGroupId(expression); } identityLink.setType(IdentityLinkType.CANDIDATE); identityLinkService.insertIdentityLink(identityLink); } } }
@Override public Void execute(CommandContext commandContext) { CaseDefinitionEntity caseDefinition = CommandContextUtil.getCaseDefinitionEntityManager(commandContext).findById(caseDefinitionId); if (caseDefinition == null) { throw new FlowableObjectNotFoundException("Cannot find case definition with id " + caseDefinitionId, CaseDefinition.class); } IdentityLinkEntity identityLinkEntity = CommandContextUtil.getIdentityLinkService().createScopeDefinitionIdentityLink( caseDefinition.getId(), ScopeTypes.CMMN, userId, groupId); caseDefinition.getIdentityLinks().add(identityLinkEntity); return null; }
@Override public Void execute(CommandContext commandContext) { CaseDefinitionEntity caseDefinition = CommandContextUtil.getCaseDefinitionEntityManager(commandContext).findById(caseDefinitionId); if (caseDefinition == null) { throw new FlowableObjectNotFoundException("Cannot find case definition with id " + caseDefinitionId, CaseDefinition.class); } CommandContextUtil.getIdentityLinkService().deleteScopeDefinitionIdentityLink(caseDefinition.getId(), ScopeTypes.CMMN, userId, groupId); return null; }
IdentityLinkEntity identityLinkEntity = CommandContextUtil.getIdentityLinkService().createTaskIdentityLink(task.getId(), identityId, null, identityType); IdentityLinkUtil.handleTaskIdentityLinkAddition(task, identityLinkEntity); IdentityLinkEntity identityLinkEntity = CommandContextUtil.getIdentityLinkService().createTaskIdentityLink(task.getId(), null, identityId, identityType); IdentityLinkUtil.handleTaskIdentityLinkAddition(task, identityLinkEntity);
@Override public void addUserIdentityLinkToParent(Task task, String userId) { if (userId != null && ScopeTypes.CMMN.equals(task.getScopeType()) && StringUtils.isNotEmpty(task.getScopeId())) { CaseInstanceEntity caseInstanceEntity = CommandContextUtil.getCaseInstanceEntityManager().findById(task.getScopeId()); if (caseInstanceEntity != null) { List<IdentityLinkEntity> identityLinks = CommandContextUtil.getIdentityLinkService() .findIdentityLinksByScopeIdAndType(caseInstanceEntity.getId(), ScopeTypes.CMMN); for (IdentityLinkEntity identityLink : identityLinks) { if (identityLink.isUser() && identityLink.getUserId().equals(userId) && parentIdentityLinkType.equals(identityLink.getType())) { return; } } IdentityLinkUtil.createCaseInstanceIdentityLink(caseInstanceEntity, userId, null, parentIdentityLinkType); } } }
protected void handleCandidateUsers(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntity, ExpressionManager expressionManager, TaskEntity taskEntity) { List<String> candidateUsers = humanTask.getCandidateUsers(); if (candidateUsers != null && !candidateUsers.isEmpty()) { for (String candidateUser : candidateUsers) { Expression userIdExpr = expressionManager.createExpression(candidateUser); Object value = userIdExpr.getValue(planItemInstanceEntity); if (value instanceof String) { List<String> candidates = extractCandidates((String) value); handleIdentityLinks(commandContext, taskEntity, CommandContextUtil.getIdentityLinkService().addCandidateUsers(taskEntity.getId(), candidates)); } else if (value instanceof Collection) { handleIdentityLinks(commandContext, taskEntity, CommandContextUtil.getIdentityLinkService().addCandidateUsers(taskEntity.getId(), (Collection) value)); } else { throw new FlowableException("Expression did not resolve to a string or collection of strings"); } } } }
protected void handleCandidateGroups(CommandContext commandContext, PlanItemInstanceEntity planItemInstanceEntity, ExpressionManager expressionManager, TaskEntity taskEntity) { List<String> candidateGroups = humanTask.getCandidateGroups(); if (candidateGroups != null && !candidateGroups.isEmpty()) { for (String candidateGroup : candidateGroups) { Expression groupIdExpr = expressionManager.createExpression(candidateGroup); Object value = groupIdExpr.getValue(planItemInstanceEntity); if (value instanceof String) { List<String> candidates = extractCandidates((String) value); handleIdentityLinks(commandContext, taskEntity, CommandContextUtil.getIdentityLinkService().addCandidateGroups(taskEntity.getId(), candidates)); } else if (value instanceof Collection) { handleIdentityLinks(commandContext, taskEntity, CommandContextUtil.getIdentityLinkService().addCandidateGroups(taskEntity.getId(), (Collection) value)); } else { throw new FlowableIllegalArgumentException("Expression did not resolve to a string or collection of strings"); } } } }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override public List<IdentityLink> execute(CommandContext commandContext) { TaskEntity task = CommandContextUtil.getTaskService().getTask(taskId); List<IdentityLink> identityLinks = (List) task.getIdentityLinks(); // assignee is not part of identity links in the db. // so if there is one, we add it here. // @Tom: we discussed this long on skype and you agreed ;-) // an assignee *is* an identityLink, and so must it be reflected in the API // // Note: we cant move this code to the TaskEntity (which would be cleaner), // since the task.delete cascaded to all associated identityLinks // and of course this leads to exception while trying to delete a non-existing identityLink if (task.getAssignee() != null) { IdentityLinkEntity identityLink = CommandContextUtil.getIdentityLinkService().createIdentityLink(); identityLink.setUserId(task.getAssignee()); identityLink.setType(IdentityLinkType.ASSIGNEE); identityLink.setTaskId(task.getId()); identityLinks.add(identityLink); } if (task.getOwner() != null) { IdentityLinkEntity identityLink = CommandContextUtil.getIdentityLinkService().createIdentityLink(); identityLink.setUserId(task.getOwner()); identityLink.setTaskId(task.getId()); identityLink.setType(IdentityLinkType.OWNER); identityLinks.add(identityLink); } return identityLinks; }
@Override public void deleteDeploymentAndRelatedData(String deploymentId, boolean cascade) { CaseDefinitionEntityManager caseDefinitionEntityManager = getCaseDefinitionEntityManager(); List<CaseDefinition> caseDefinitions = caseDefinitionEntityManager.createCaseDefinitionQuery().deploymentId(deploymentId).list(); for (CaseDefinition caseDefinition : caseDefinitions) { CommandContextUtil.getIdentityLinkService().deleteIdentityLinksByScopeDefinitionIdAndType(caseDefinition.getId(), ScopeTypes.CMMN); if (cascade) { caseDefinitionEntityManager.deleteCaseDefinitionAndRelatedData(caseDefinition.getId(), true); } else { caseDefinitionEntityManager.delete(caseDefinition.getId()); } } getCmmnResourceEntityManager().deleteResourcesByDeploymentId(deploymentId); delete(findById(deploymentId)); }
CommandContextUtil.getIdentityLinkService(commandContext).deleteIdentityLinksByTaskId(task.getId());