public UserOperationLogContextEntryBuilder inContextOf(JobDefinitionEntity jobDefinition) { entry.setJobDefinitionId(jobDefinition.getId()); entry.setProcessDefinitionId(jobDefinition.getProcessDefinitionId()); entry.setProcessDefinitionKey(jobDefinition.getProcessDefinitionKey()); if (jobDefinition.getProcessDefinitionId() != null) { ProcessDefinitionEntity processDefinition = Context.getProcessEngineConfiguration() .getDeploymentCache() .findDeployedProcessDefinitionById(jobDefinition.getProcessDefinitionId()); entry.setDeploymentId(processDefinition.getDeploymentId()); } return this; }
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); } }