public override void Delete(KeyValuePair <string, object> id)
        {
            if (HistoryManager.HistoryEnabled)
            {
                IHistoricTaskInstanceEntity historicTaskInstance = FindById <IHistoricTaskInstanceEntity>(new KeyValuePair <string, object>("historicTaskInstanceId", id.Value));
                if (historicTaskInstance != null)
                {
                    IList <IHistoricTaskInstanceEntity> subTasks = historicTaskInstanceDataManager.FindHistoricTasksByParentTaskId(historicTaskInstance.Id);
                    foreach (IHistoricTaskInstance subTask in subTasks)
                    {
                        Delete(new KeyValuePair <string, object>("id", subTask.Id));
                    }

                    var sid = id.Value.ToString();
                    HistoricDetailEntityManager.DeleteHistoricDetailsByTaskId(sid);
                    HistoricVariableInstanceEntityManager.DeleteHistoricVariableInstancesByTaskId(sid);
                    CommentEntityManager.DeleteCommentsByTaskId(sid);
                    AttachmentEntityManager.DeleteAttachmentsByTaskId(sid);
                    HistoricIdentityLinkEntityManager.DeleteHistoricIdentityLinksByTaskId(sid);

                    Delete(historicTaskInstance);
                }
            }
        }