Example #1
0
        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);
        }
Example #2
0
        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);
                }
            }
        }
Example #3
0
        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);
        }
Example #4
0
        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);
                                }
                            }
                        }
                    }
                }
            }
        }
Example #5
0
        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);
        }
Example #6
0
        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);
                }
            }
        }
Example #7
0
        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);
        }
Example #8
0
 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;
 }