public virtual Void execute(CommandContext commandContext) { ensureNotNull(typeof(NotValidException), "jobDefinitionId", jobDefinitionId); JobDefinitionEntity jobDefinition = commandContext.JobDefinitionManager.findById(jobDefinitionId); ensureNotNull(typeof(NotFoundException), "Job definition with id '" + jobDefinitionId + "' does not exist", "jobDefinition", jobDefinition); checkUpdateProcess(commandContext, jobDefinition); long?currentPriority = jobDefinition.OverridingJobPriority; jobDefinition.JobPriority = priority; UserOperationLogContext opLogContext = new UserOperationLogContext(); createJobDefinitionOperationLogEntry(opLogContext, currentPriority, jobDefinition); if (cascade && priority != null) { commandContext.JobManager.updateJobPriorityByDefinitionId(jobDefinitionId, priority.Value); createCascadeJobsOperationLogEntry(opLogContext, jobDefinition); } commandContext.OperationLogManager.logUserOperations(opLogContext); return(null); }
protected internal virtual void handleFailedJobIncident(MigratingInstanceParseContext parseContext, IncidentEntity incident) { MigratingJobInstance owningInstance = parseContext.getMigratingJobInstanceById(incident.Configuration); if (owningInstance != null) { parseContext.consume(incident); if (owningInstance.migrates()) { MigratingIncident migratingIncident = new MigratingIncident(incident, owningInstance.TargetScope); JobDefinitionEntity targetJobDefinitionEntity = owningInstance.TargetJobDefinitionEntity; if (targetJobDefinitionEntity != null) { migratingIncident.TargetJobDefinitionId = targetJobDefinitionEntity.Id; } owningInstance.addMigratingDependentInstance(migratingIncident); } } }
protected internal override long?getSpecificPriority <T1>(ExecutionEntity execution, JobDeclaration <T1> param, string jobDefinitionId) { long?specificPriority = null; JobDefinitionEntity jobDefinition = getJobDefinitionFor(jobDefinitionId); if (jobDefinition != null) { specificPriority = jobDefinition.OverridingJobPriority; } if (specificPriority == null) { ParameterValueProvider priorityProvider = param.JobPriorityProvider; if (priorityProvider != null) { specificPriority = evaluateValueProvider(priorityProvider, execution, describeContext(param, execution)); } } return(specificPriority); }
protected internal override void checkAuthorization(CommandContext commandContext) { foreach (CommandChecker checker in commandContext.ProcessEngineConfiguration.CommandCheckers) { if (!string.ReferenceEquals(jobId, null)) { JobManager jobManager = commandContext.JobManager; JobEntity job = jobManager.findJobById(jobId); if (job != null) { string processInstanceId = job.ProcessInstanceId; if (!string.ReferenceEquals(processInstanceId, null)) { checker.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.ProcessDefinitionKey; if (!string.ReferenceEquals(processDefinitionKey, null)) { checker.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 (!string.ReferenceEquals(jobDefinitionId, null)) { JobDefinitionManager jobDefinitionManager = commandContext.JobDefinitionManager; JobDefinitionEntity jobDefinition = jobDefinitionManager.findById(jobDefinitionId); if (jobDefinition != null) { string processDefinitionKey = jobDefinition.ProcessDefinitionKey; checker.checkUpdateProcessInstanceByProcessDefinitionKey(processDefinitionKey); } } else { if (!string.ReferenceEquals(processInstanceId, null)) { checker.checkUpdateProcessInstanceById(processInstanceId); } else { if (!string.ReferenceEquals(processDefinitionId, null)) { checker.checkUpdateProcessInstanceByProcessDefinitionId(processDefinitionId); } else { if (!string.ReferenceEquals(processDefinitionKey, null)) { checker.checkUpdateProcessInstanceByProcessDefinitionKey(processDefinitionKey); } } } } } } }
protected internal virtual void createJobDefinitionOperationLogEntry(UserOperationLogContext opLogContext, long?previousPriority, JobDefinitionEntity jobDefinition) { PropertyChange propertyChange = new PropertyChange(JOB_DEFINITION_OVERRIDING_PRIORITY, previousPriority, jobDefinition.OverridingJobPriority); UserOperationLogContextEntry entry = UserOperationLogContextEntryBuilder.entry(org.camunda.bpm.engine.history.UserOperationLogEntry_Fields.OPERATION_TYPE_SET_PRIORITY, EntityTypes.JOB_DEFINITION).inContextOf(jobDefinition).propertyChanges(propertyChange).category(org.camunda.bpm.engine.history.UserOperationLogEntry_Fields.CATEGORY_OPERATOR).create(); opLogContext.addEntry(entry); }
protected internal virtual void checkUpdateProcess(CommandContext commandContext, JobDefinitionEntity jobDefinition) { string processDefinitionId = jobDefinition.ProcessDefinitionId; foreach (CommandChecker checker in commandContext.ProcessEngineConfiguration.CommandCheckers) { checker.checkUpdateProcessDefinitionById(processDefinitionId); if (cascade) { checker.checkUpdateProcessInstanceByProcessDefinitionId(processDefinitionId); } } }
protected internal virtual void createCascadeJobsOperationLogEntry(UserOperationLogContext opLogContext, JobDefinitionEntity jobDefinition) { // old value is unknown PropertyChange propertyChange = new PropertyChange(SetJobPriorityCmd.JOB_PRIORITY_PROPERTY, null, jobDefinition.OverridingJobPriority); UserOperationLogContextEntry entry = UserOperationLogContextEntryBuilder.entry(org.camunda.bpm.engine.history.UserOperationLogEntry_Fields.OPERATION_TYPE_SET_PRIORITY, EntityTypes.JOB).inContextOf(jobDefinition).propertyChanges(propertyChange).category(org.camunda.bpm.engine.history.UserOperationLogEntry_Fields.CATEGORY_OPERATOR).create(); opLogContext.addEntry(entry); }
public MigratingTimerJobInstance(JobEntity jobEntity, JobDefinitionEntity jobDefinitionEntity, ScopeImpl targetScope, bool updateEvent, TimerDeclarationImpl targetTimerDeclaration) : base(jobEntity, jobDefinitionEntity, targetScope) { timerTriggerTargetScope = determineTimerTriggerTargetScope(jobEntity, targetScope); this.updateEvent = updateEvent; this.targetJobDeclaration = targetTimerDeclaration; }