protected void checkAuthorization(CommandContext commandContext) { AuthorizationManager authorizationManager = commandContext.getAuthorizationManager(); if (jobId != null) { JobManager jobManager = commandContext.getJobManager(); JobEntity job = jobManager.findJobById(jobId); if (job != null) { String processInstanceId = job.getProcessInstanceId(); if (processInstanceId != null) { authorizationManager.checkUpdateProcessInstanceById(processInstanceId); } else { // start timer job is not assigned to a specific process // instance, that's why we have to check whether there // exists a UPDATE_INSTANCES permission on process definition or // a UPDATE permission on any process instance String processDefinitionKey = job.getProcessDefinitionKey(); if (processDefinitionKey != null) { authorizationManager.checkUpdateProcessInstanceByProcessDefinitionKey( processDefinitionKey); } } // if (processInstanceId == null && processDefinitionKey == null): // job is not assigned to any process instance nor process definition // then it is always possible to activate/suspend the corresponding job // -> no authorization check necessary } } else if (jobDefinitionId != null) { JobDefinitionManager jobDefinitionManager = commandContext.getJobDefinitionManager(); JobDefinitionEntity jobDefinition = jobDefinitionManager.findById(jobDefinitionId); if (jobDefinition != null) { String processDefinitionKey = jobDefinition.getProcessDefinitionKey(); authorizationManager.checkUpdateProcessInstanceByProcessDefinitionKey(processDefinitionKey); } } else if (processInstanceId != null) { authorizationManager.checkUpdateProcessInstanceById(processInstanceId); } else if (processDefinitionId != null) { authorizationManager.checkUpdateProcessInstanceByProcessDefinitionId(processDefinitionId); } else if (processDefinitionKey != null) { authorizationManager.checkUpdateProcessInstanceByProcessDefinitionKey(processDefinitionKey); } }
protected void updateSuspensionState( CommandContext commandContext, SuspensionState suspensionState) { JobManager jobManager = commandContext.getJobManager(); if (jobId != null) { jobManager.updateJobSuspensionStateById(jobId, suspensionState); } else if (jobDefinitionId != null) { jobManager.updateJobSuspensionStateByJobDefinitionId(jobDefinitionId, suspensionState); } else if (processInstanceId != null) { jobManager.updateJobSuspensionStateByProcessInstanceId(processInstanceId, suspensionState); } else if (processDefinitionId != null) { jobManager.updateJobSuspensionStateByProcessDefinitionId( processDefinitionId, suspensionState); } else if (processDefinitionKey != null) { jobManager.updateJobSuspensionStateByProcessDefinitionKey( processDefinitionKey, suspensionState); } }