Re[3]: Редактирование истории операций с единицей
От: sentyaev  
Дата: 13.05.10 18:06
Оценка:
Здравствуйте, 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>По сути система складского учета. История нужна якобы для расследований, а также для анализа.

Ха))) Интересная история для расследований, которую можно поправить!

Главное чтобы вас не попросили сделать историю изменения истории изменения истории)))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.