public override void Delete(KeyValuePair <string, object> id) { string historicProcessInstanceId = id.Value?.ToString(); if (HistoryManager.HistoryEnabled) { if (historicProcessInstanceId == null) { return; } IHistoricProcessInstanceEntity historicProcessInstance = FindById <IHistoricProcessInstanceEntity>(new KeyValuePair <string, object>("id", historicProcessInstanceId)); HistoricDetailEntityManager.DeleteHistoricDetailsByProcessInstanceId(historicProcessInstanceId); HistoricVariableInstanceEntityManager.DeleteHistoricVariableInstanceByProcessInstanceId(historicProcessInstanceId); HistoricActivityInstanceEntityManager.DeleteHistoricActivityInstancesByProcessInstanceId(historicProcessInstanceId); HistoricTaskInstanceEntityManager.DeleteHistoricTaskInstancesByProcessInstanceId(historicProcessInstanceId); HistoricIdentityLinkEntityManager.DeleteHistoricIdentityLinksByProcInstance(historicProcessInstanceId); CommentEntityManager.DeleteCommentsByProcessInstanceId(historicProcessInstanceId); Delete(historicProcessInstance, false); // Also delete any sub-processes that may be active (ACT-821) IList <IHistoricProcessInstanceEntity> selectList = historicProcessInstanceDataManager.FindHistoricProcessInstancesBySuperProcessInstanceId(historicProcessInstanceId); foreach (IHistoricProcessInstanceEntity child in selectList) { Delete(new KeyValuePair <string, object>("id", child.Id)); // NEEDS to be by id, to come again through this method! } } }
// Task related history /// <summary> /// /// </summary> /// <param name="task"></param> /// <param name="execution"></param> public virtual void RecordTaskCreated(ITaskEntity task, IExecutionEntity execution) { if (IsHistoryLevelAtLeast(HistoryLevel.AUDIT)) { IHistoricTaskInstanceEntity historicTaskInstance = HistoricTaskInstanceEntityManager.Create(task, execution); HistoricTaskInstanceEntityManager.Insert(historicTaskInstance, false); } RecordTaskId(task); }
/// <summary> /// /// </summary> /// <param name="taskId"></param> /// <param name="processDefinitionId"></param> public virtual void RecordTaskProcessDefinitionChange(string taskId, string processDefinitionId) { if (IsHistoryLevelAtLeast(HistoryLevel.ACTIVITY)) { IHistoricTaskInstanceEntity historicTaskInstance = HistoricTaskInstanceEntityManager.FindById <IHistoricTaskInstanceEntity>(new KeyValuePair <string, object>("historicTaskInstanceId", taskId)); if (historicTaskInstance != null) { historicTaskInstance.ProcessDefinitionId = processDefinitionId; } } }
/// <summary> /// /// </summary> /// <param name="taskId"></param> /// <param name="taskDefinitionKey"></param> public virtual void RecordTaskDefinitionKeyChange(string taskId, string taskDefinitionKey) { if (IsHistoryLevelAtLeast(HistoryLevel.AUDIT)) { IHistoricTaskInstanceEntity historicTaskInstance = HistoricTaskInstanceEntityManager.FindById <IHistoricTaskInstanceEntity>(new KeyValuePair <string, object>("historicTaskInstanceId", taskId)); if (historicTaskInstance != null) { historicTaskInstance.TaskDefinitionKey = taskDefinitionKey; } } }
/// <summary> /// /// </summary> /// <param name="taskId"></param> /// <param name="dueDate"></param> public virtual void RecordTaskDueDateChange(string taskId, DateTime dueDate) { if (IsHistoryLevelAtLeast(HistoryLevel.AUDIT)) { IHistoricTaskInstanceEntity historicTaskInstance = HistoricTaskInstanceEntityManager.FindById <IHistoricTaskInstanceEntity>(new KeyValuePair <string, object>("historicTaskInstanceId", taskId)); if (historicTaskInstance != null) { historicTaskInstance.DueDate = dueDate; } } }
/// <summary> /// /// </summary> /// <param name="taskId"></param> /// <param name="deleteReason"></param> public virtual void RecordTaskEnd(string taskId, string deleteReason) { if (IsHistoryLevelAtLeast(HistoryLevel.AUDIT)) { IHistoricTaskInstanceEntity historicTaskInstance = HistoricTaskInstanceEntityManager.FindById <IHistoricTaskInstanceEntity>(new KeyValuePair <string, object>("historicTaskInstanceId", taskId)); if (historicTaskInstance != null) { historicTaskInstance.markEnded(deleteReason); } } }
/// <summary> /// /// </summary> /// <param name="task"></param> public virtual void RecordTaskClaim(ITaskEntity task) { if (IsHistoryLevelAtLeast(HistoryLevel.AUDIT)) { IHistoricTaskInstanceEntity historicTaskInstance = HistoricTaskInstanceEntityManager.FindById <IHistoricTaskInstanceEntity>(new KeyValuePair <string, object>("historicTaskInstanceId", task.Id)); if (historicTaskInstance != null) { historicTaskInstance.ClaimTime = task.ClaimTime; } } }
/// <summary> /// /// </summary> /// <param name="taskId"></param> /// <param name="assignee"></param> /// <param name="assigneeUser"></param> public virtual void RecordTaskAssigneeChange(string taskId, string assignee, string assigneeUser) { if (IsHistoryLevelAtLeast(HistoryLevel.AUDIT)) { IHistoricTaskInstanceEntity historicTaskInstance = HistoricTaskInstanceEntityManager.FindById <IHistoricTaskInstanceEntity>(new KeyValuePair <string, object>("historicTaskInstanceId", taskId)); if (historicTaskInstance != null) { historicTaskInstance.Assignee = assignee; historicTaskInstance.AssigneeUser = assigneeUser; } } }
public virtual void DeleteTask(string taskId, string deleteReason, bool cascade) { ITaskEntity task = FindById <ITaskEntity>(taskId); if (task != null) { if (task.ExecutionId is object) { throw new ActivitiException("The task cannot be deleted because is part of a running process"); } DeleteTask(task, deleteReason, cascade, false); } else if (cascade) { HistoricTaskInstanceEntityManager.Delete(new KeyValuePair <string, object>("id", taskId)); } }
public virtual void DeleteTask(ITaskEntity task, string deleteReason, bool cascade, bool cancel) { if (!task.Deleted) { ProcessEngineConfiguration.ListenerNotificationHelper.ExecuteTaskListeners(task, BaseTaskListenerFields.EVENTNAME_DELETE); task.Deleted = true; string taskId = task.Id; IList <ITask> subTasks = FindTasksByParentTaskId(taskId); foreach (ITask subTask in subTasks) { DeleteTask((ITaskEntity)subTask, deleteReason, cascade, cancel); } IdentityLinkEntityManager.DeleteIdentityLinksByTaskId(taskId); VariableInstanceEntityManager.DeleteVariableInstanceByTask(task); if (cascade) { HistoricTaskInstanceEntityManager.Delete(new KeyValuePair <string, object>("id", taskId)); } else { HistoryManager.RecordTaskEnd(taskId, deleteReason); } Delete(task, false); if (EventDispatcher.Enabled) { if (cancel && !task.Canceled) { task.Canceled = true; EventDispatcher.DispatchEvent(ActivitiEventBuilder.CreateActivityCancelledEvent(task.Execution?.ActivityId, task.Name, task.ExecutionId, task.ProcessInstanceId, task.ProcessDefinitionId, "userTask", deleteReason)); } EventDispatcher.DispatchEvent(ActivitiEventBuilder.CreateEntityEvent(ActivitiEventType.ENTITY_DELETED, task)); } } }