Здравствуйте, welvist, Вы писали:
W>В том то вся и фишка, что еще хотят аудит манипулирования историей. А редактирование истории должно быть для возможности исправить ошибку.
А по другому скорее всего вы и не решите задачу. Придется делать аудит истории.
Фактически можно сделать так: при изменении какого либо элемента истории вы перезаписываете сам элемент, а его старое значение добавляете к новому в его историю.
Постараюсь пояснить в коде:
// Эта структура представляет собой простую операцию
// которая содержит только описание операции и время
// когда она была создана
struct Operation
{
public string Text { get; set; }
public DateTime Date { get; set; }
}
// Этот клас представляет собой элемент истории
// который содержит операцию и стек из предыдущих операций
class HistoryEntry
{
public Operation Current { get; set; }
public Stack<Operation> OldOperations { get; set; }
public HistoryEntry()
{
OldOperations = new Stack<Operation>();
}
}
class Program
{
static void Main(string[] args)
{
// Создаем операцию
Operation operation = new Operation()
{
Text = "Operation_1",
Date = DateTime.Now
};
// Создаем запись истории и заносим созданную операцию
HistoryEntry entry = new HistoryEntry()
{
Current = operation
};
// Создаем операцию для редактирования,
// копируем в нее нужную операцию и редактируем ее
Operation operationToEdit = entry.Current;
operationToEdit.Text = "Edited Operation_1";
operationToEdit.Date = DateTime.Now;
// Заносим в стек старых операций, ту которая сейчас текущаа
entry.OldOperations.Push(entry.Current);
// Делаем текущей операцией ту, которую отредактировали.
entry.Current = operationToEdit;
}
}
Как то так.
W>Система исключительно ручного ввода данных. Факт выполнения чего-либо производится на бумаге. А в программе затем фиксируется согласно бумаге.
W>По сути система складского учета. История нужна якобы для расследований, а также для анализа.
Ха))) Интересная история для расследований, которую можно поправить!
Главное чтобы вас не попросили сделать историю изменения истории изменения истории)))