Esempio n. 1
0
        protected internal override void updateSuspensionState(CommandContext commandContext, SuspensionState suspensionState)
        {
            JobManager jobManager = commandContext.JobManager;

            if (!string.ReferenceEquals(jobId, null))
            {
                jobManager.updateJobSuspensionStateById(jobId, suspensionState);
            }
            else if (!string.ReferenceEquals(jobDefinitionId, null))
            {
                jobManager.updateJobSuspensionStateByJobDefinitionId(jobDefinitionId, suspensionState);
            }
            else if (!string.ReferenceEquals(processInstanceId, null))
            {
                jobManager.updateJobSuspensionStateByProcessInstanceId(processInstanceId, suspensionState);
            }
            else if (!string.ReferenceEquals(processDefinitionId, null))
            {
                jobManager.updateJobSuspensionStateByProcessDefinitionId(processDefinitionId, suspensionState);
            }
            else if (!string.ReferenceEquals(processDefinitionKey, null))
            {
                if (!processDefinitionTenantIdSet)
                {
                    jobManager.updateJobSuspensionStateByProcessDefinitionKey(processDefinitionKey, suspensionState);
                }
                else
                {
                    jobManager.updateJobSuspensionStateByProcessDefinitionKeyAndTenantId(processDefinitionKey, processDefinitionTenantId, suspensionState);
                }
            }
        }
Esempio n. 2
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);
                                }
                            }
                        }
                    }
                }
            }
        }