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); } }
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); }
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); }
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)); } }
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); }
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; } } }
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; } } }
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; } } } }
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)); } }
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); }