Ejemplo n.º 1
0
        public virtual void Insert(ITaskEntity taskEntity, IExecutionEntity execution)
        {
            // Inherit tenant id (if applicable)
            if (execution != null && execution.TenantId is object)
            {
                taskEntity.TenantId = execution.TenantId;
            }

            if (execution != null)
            {
                execution.Tasks.Add(taskEntity);
                taskEntity.ProcessInstanceId   = execution.ProcessInstanceId;
                taskEntity.ProcessDefinitionId = execution.ProcessDefinitionId;
                taskEntity.ExecutionId         = execution.Id;

                HistoryManager.RecordTaskExecutionIdChange(taskEntity.Id, taskEntity.ExecutionId);
            }

            Insert(taskEntity, true);

            if (execution != null && IsExecutionRelatedEntityCountEnabled(execution))
            {
                ICountingExecutionEntity countingExecutionEntity = (ICountingExecutionEntity)execution;
                countingExecutionEntity.TaskCount += 1;
            }

            HistoryManager.RecordTaskCreated(taskEntity, execution);
            HistoryManager.RecordTaskId(taskEntity);
            if (taskEntity.FormKey is object)
            {
                HistoryManager.RecordTaskFormKeyChange(taskEntity.Id, taskEntity.FormKey);
            }
        }
Ejemplo n.º 2
0
        protected internal virtual bool DoInsert(IJobEntity jobEntity, bool fireCreateEvent)
        {
            // add link to execution
            if (jobEntity.ExecutionId is object)
            {
                IExecutionEntity execution = ExecutionEntityManager.FindById <IExecutionEntity>(jobEntity.ExecutionId);
                if (execution != null)
                {
                    execution.Jobs.Add(jobEntity);

                    // Inherit tenant if (if applicable)
                    if (execution.TenantId is object)
                    {
                        jobEntity.TenantId = execution.TenantId;
                    }

                    if (IsExecutionRelatedEntityCountEnabled(execution))
                    {
                        ICountingExecutionEntity countingExecutionEntity = (ICountingExecutionEntity)execution;
                        countingExecutionEntity.JobCount += 1;
                    }
                }
                else
                {
                    return(false);
                }
            }

            base.Insert(jobEntity, fireCreateEvent);
            return(true);
        }
Ejemplo n.º 3
0
        protected internal virtual bool DoInsert(ITimerJobEntity jobEntity, bool fireCreateEvent)
        {
            // add link to execution
            if (jobEntity.ExecutionId is object)
            {
                IExecutionEntity execution = ExecutionEntityManager.FindById <IExecutionEntity>(jobEntity.ExecutionId);
                if (execution != null)
                {
                    execution.TimerJobs.Add(jobEntity);

                    // Inherit tenant if (if applicable)
                    if (execution.TenantId is object)
                    {
                        jobEntity.TenantId = execution.TenantId;
                    }

                    if (IsExecutionRelatedEntityCountEnabled(execution))
                    {
                        ICountingExecutionEntity countingExecutionEntity = (ICountingExecutionEntity)execution;
                        countingExecutionEntity.TimerJobCount += 1;
                    }
                }
                else
                {
                    // In case the job has an executionId, but the Execution is not found,
                    // it means that for example for a boundary timer event on a user task,
                    // the task has been completed and the Execution and job have been removed.
                    return(false);
                }
            }

            base.Insert(jobEntity, fireCreateEvent);
            return(true);
        }
        public override void Insert(IDeadLetterJobEntity jobEntity, bool fireCreateEvent)
        {
            // add link to execution
            if (!(jobEntity.ExecutionId is null))
            {
                IExecutionEntity execution = ExecutionEntityManager.FindById <IExecutionEntity>(jobEntity.ExecutionId);

                // Inherit tenant if (if applicable)
                if (!(execution.TenantId is null))
                {
                    jobEntity.TenantId = execution.TenantId;
                }

                if (ExecutionRelatedEntityCountEnabledGlobally)
                {
                    ICountingExecutionEntity countingExecutionEntity = (ICountingExecutionEntity)execution;
                    if (IsExecutionRelatedEntityCountEnabled(countingExecutionEntity))
                    {
                        countingExecutionEntity.DeadLetterJobCount += 1;
                    }
                }
            }

            base.Insert(jobEntity, fireCreateEvent);
        }
Ejemplo n.º 5
0
        public override void Delete(IVariableInstanceEntity entity, bool fireDeleteEvent)
        {
            base.Delete(entity, false);
            IByteArrayRef byteArrayRef = entity.ByteArrayRef;

            if (byteArrayRef != null)
            {
                byteArrayRef.Delete();
            }
            entity.Deleted = true;

            if (!(entity.ExecutionId is null) && ExecutionRelatedEntityCountEnabledGlobally)
            {
                ICountingExecutionEntity executionEntity = ExecutionEntityManager.FindById <ICountingExecutionEntity>(entity.ExecutionId);
                if (IsExecutionRelatedEntityCountEnabled(executionEntity))
                {
                    executionEntity.VariableCount -= 1;
                }
            }

            IActivitiEventDispatcher eventDispatcher = EventDispatcher;

            if (fireDeleteEvent && eventDispatcher.Enabled)
            {
                eventDispatcher.DispatchEvent(ActivitiEventBuilder.CreateEntityEvent(ActivitiEventType.ENTITY_DELETED, entity));

                eventDispatcher.DispatchEvent(CreateVariableDeleteEvent(entity));
            }
        }
Ejemplo n.º 6
0
 public override void Delete(IJobEntity entity, bool fireDeleteEvent)
 {
     if (entity.ExecutionId is object && ExecutionRelatedEntityCountEnabledGlobally)
     {
         ICountingExecutionEntity executionEntity = ExecutionEntityManager.FindById <ICountingExecutionEntity>(entity.ExecutionId);
         if (IsExecutionRelatedEntityCountEnabled(executionEntity))
         {
             executionEntity.JobCount -= 1;
         }
     }
     base.Delete(entity, fireDeleteEvent);
 }
 public override void Delete(IEventSubscriptionEntity entity, bool fireDeleteEvent)
 {
     if (!(entity.ExecutionId is null) && ExecutionRelatedEntityCountEnabledGlobally)
     {
         ICountingExecutionEntity executionEntity = (ICountingExecutionEntity)entity.Execution;
         if (IsExecutionRelatedEntityCountEnabled(executionEntity))
         {
             executionEntity.EventSubscriptionCount -= 1;
         }
     }
     base.Delete(entity, fireDeleteEvent);
 }
Ejemplo n.º 8
0
        public override void Delete(ITaskEntity entity, bool fireDeleteEvent)
        {
            base.Delete(entity, fireDeleteEvent);

            if (entity.ExecutionId is object && ExecutionRelatedEntityCountEnabledGlobally)
            {
                ICountingExecutionEntity countingExecutionEntity = (ICountingExecutionEntity)entity.Execution;
                if (IsExecutionRelatedEntityCountEnabled(countingExecutionEntity))
                {
                    countingExecutionEntity.TaskCount -= 1;
                }
            }
        }
Ejemplo n.º 9
0
        public override void Insert(IVariableInstanceEntity entity, bool fireCreateEvent)
        {
            base.Insert(entity, fireCreateEvent);

            if (!(entity.ExecutionId is null) && ExecutionRelatedEntityCountEnabledGlobally)
            {
                ICountingExecutionEntity executionEntity = ExecutionEntityManager.FindById <ICountingExecutionEntity>(entity.ExecutionId);
                if (IsExecutionRelatedEntityCountEnabled(executionEntity))
                {
                    executionEntity.VariableCount += 1;
                }
            }
        }
        public override void Insert(IEventSubscriptionEntity entity, bool fireCreateEvent)
        {
            base.Insert(entity, fireCreateEvent);

            if (!(entity.ExecutionId is null) && ExecutionRelatedEntityCountEnabledGlobally)
            {
                ICountingExecutionEntity executionEntity = (ICountingExecutionEntity)entity.Execution;
                if (IsExecutionRelatedEntityCountEnabled(executionEntity))
                {
                    executionEntity.EventSubscriptionCount += 1;
                }
            }
        }
Ejemplo n.º 11
0
        public override void Insert(IIdentityLinkEntity entity, bool fireCreateEvent)
        {
            base.Insert(entity, fireCreateEvent);
            HistoryManager.RecordIdentityLinkCreated(entity);

            if (!(entity.ProcessInstanceId is null) && ExecutionRelatedEntityCountEnabledGlobally)
            {
                ICountingExecutionEntity executionEntity = (ICountingExecutionEntity)ExecutionEntityManager.FindById <ICountingExecutionEntity>(entity.ProcessInstanceId);
                if (IsExecutionRelatedEntityCountEnabled(executionEntity))
                {
                    executionEntity.IdentityLinkCount += 1;
                }
            }
        }
        public override void Insert(IIdentityLinkEntity entity, bool fireCreateEvent)
        {
            //当审核登记设置为Audit时候,再记录identity link,否则会抛出外键异常
            if (HistoryManager.IsHistoryLevelAtLeast(HistoryLevel.AUDIT))
            {
                base.Insert(entity, fireCreateEvent);
                HistoryManager.RecordIdentityLinkCreated(entity);

                if (entity.ProcessInstanceId is object && ExecutionRelatedEntityCountEnabledGlobally)
                {
                    ICountingExecutionEntity executionEntity = (ICountingExecutionEntity)ExecutionEntityManager.FindById <ICountingExecutionEntity>(entity.ProcessInstanceId);
                    if (IsExecutionRelatedEntityCountEnabled(executionEntity))
                    {
                        executionEntity.IdentityLinkCount += 1;
                    }
                }
            }
        }
Ejemplo n.º 13
0
        protected internal virtual bool IsExecutionRelatedEntityCountEnabled(ICountingExecutionEntity executionEntity)
        {
            /*
             * There are two flags here: a global flag and a flag on the execution entity.
             * The global flag can be switched on and off between different reboots,
             * however the flag on the executionEntity refers to the state at that particular moment.
             *
             * Global flag / ExecutionEntity flag : result
             *
             * T / T : T (all true, regular mode with flags enabled)
             * T / F : F (global is true, but execution was of a time when it was disabled, thus treating it as disabled)
             * F / T : F (execution was of time when counting was done. But this is overruled by the global flag and thus the queries will be done)
             * F / F : F (all disabled)
             *
             * From this table it is clear that only when both are true, the result should be true,
             * which is the regular AND rule for booleans.
             */

            return(ExecutionRelatedEntityCountEnabledGlobally && executionEntity.IsCountEnabled);
        }
        public override void Delete(IDeadLetterJobEntity jobEntity)
        {
            base.Delete(jobEntity);

            DeleteExceptionByteArrayRef(jobEntity);

            if (!(jobEntity.ExecutionId is null) && ExecutionRelatedEntityCountEnabledGlobally)
            {
                ICountingExecutionEntity executionEntity = ExecutionEntityManager.FindById <ICountingExecutionEntity>(jobEntity.ExecutionId);
                if (IsExecutionRelatedEntityCountEnabled(executionEntity))
                {
                    executionEntity.DeadLetterJobCount -= 1;
                }
            }

            // Send event
            if (EventDispatcher.Enabled)
            {
                EventDispatcher.DispatchEvent(ActivitiEventBuilder.CreateEntityEvent(ActivitiEventType.ENTITY_DELETED, this));
            }
        }
        public virtual void DeleteIdentityLink(IIdentityLinkEntity identityLink, bool cascadeHistory)
        {
            Delete(identityLink, false);
            if (cascadeHistory)
            {
                HistoryManager.DeleteHistoricIdentityLink(identityLink.Id);
            }

            if (identityLink.ProcessInstanceId is object && ExecutionRelatedEntityCountEnabledGlobally)
            {
                ICountingExecutionEntity executionEntity = (ICountingExecutionEntity)ExecutionEntityManager.FindById <ICountingExecutionEntity>(identityLink.ProcessInstanceId);
                if (IsExecutionRelatedEntityCountEnabled(executionEntity))
                {
                    executionEntity.IdentityLinkCount -= 1;
                }
            }

            if (EventDispatcher.Enabled)
            {
                EventDispatcher.DispatchEvent(ActivitiEventBuilder.CreateEntityEvent(ActivitiEventType.ENTITY_DELETED, identityLink));
            }
        }
Ejemplo n.º 16
0
        public override void Insert(ISuspendedJobEntity jobEntity, bool fireCreateEvent)
        {
            // add link to execution
            if (jobEntity.ExecutionId is object)
            {
                IExecutionEntity execution = ExecutionEntityManager.FindById <IExecutionEntity>(jobEntity.ExecutionId);

                // Inherit tenant if (if applicable)
                if (execution.TenantId is object)
                {
                    jobEntity.TenantId = execution.TenantId;
                }

                if (IsExecutionRelatedEntityCountEnabled(execution))
                {
                    ICountingExecutionEntity countingExecutionEntity = (ICountingExecutionEntity)execution;
                    countingExecutionEntity.SuspendedJobCount += 1;
                }
            }

            base.Insert(jobEntity, fireCreateEvent);
        }