@Override public Void execute(CommandContext commandContext) { CaseInstanceEntityManager caseInstanceEntityManager = CommandContextUtil.getCaseInstanceEntityManager(commandContext); CaseInstanceEntity caseInstance = caseInstanceEntityManager.findById(caseInstanceId); if (caseInstance == null) { throw new FlowableObjectNotFoundException("Cannot find case instance with id " + caseInstanceId, CaseInstanceEntity.class); } IdentityLinkUtil.createCaseInstanceIdentityLink(caseInstance, userId, groupId, type); return null; }
@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 CaseInstanceEntity createCaseInstanceEntityFromDefinition(CommandContext commandContext, CaseDefinition caseDefinition) { CaseInstanceEntityManager caseInstanceEntityManager = CommandContextUtil.getCaseInstanceEntityManager(commandContext); CaseInstanceEntity caseInstanceEntity = caseInstanceEntityManager.create(); caseInstanceEntity.setCaseDefinitionId(caseDefinition.getId()); caseInstanceEntity.setStartTime(CommandContextUtil.getCmmnEngineConfiguration(commandContext).getClock().getCurrentTime()); caseInstanceEntity.setState(CaseInstanceState.ACTIVE); caseInstanceEntity.setTenantId(caseDefinition.getTenantId()); String authenticatedUserId = Authentication.getAuthenticatedUserId(); caseInstanceEntity.setStartUserId(authenticatedUserId); caseInstanceEntityManager.insert(caseInstanceEntity); if (authenticatedUserId != null) { IdentityLinkUtil.createCaseInstanceIdentityLink(caseInstanceEntity, authenticatedUserId, null, IdentityLinkType.STARTER); } caseInstanceEntity.setSatisfiedSentryPartInstances(new ArrayList<>(1)); CmmnDeploymentManager deploymentManager = CommandContextUtil.getCmmnEngineConfiguration(commandContext).getDeploymentManager(); CmmnModel cmmnModel = deploymentManager.resolveCaseDefinition(caseDefinition).getCmmnModel(); Case caseModel = cmmnModel.getCaseById(caseDefinition.getKey()); if (caseModel.getInitiatorVariableName() != null) { caseInstanceEntity.setVariable(caseModel.getInitiatorVariableName(), Authentication.getAuthenticatedUserId()); } return caseInstanceEntity; }