Я думал о добавлении некоторых достижений в нашу внутреннюю систему отслеживания ошибок и регистрации времени. Он подключен к серверной части SQL Server.
Сначала я подумал, что систему можно запустить в базе данных, используя триггеры, чтобы, например, узнать, когда:
- вы вошли 1000 часов
- создано 1000 билетов
- закрыл свой билет
- работал над билетом, который не был затронут в течение некоторого времени.
- и т. Д. (Вы знаете - вещи из базы данных)
Но потом я понял, что мне тоже нужны чисто входные достижения
- используется расширенный поиск по способу
- отсортировано по столбцу
- сброс настроек по умолчанию
- искали 500 раз
Кажется, что логика каждого достижения должна быть закодирована вручную. Может ли кто-нибудь представить себе какой-нибудь движок правил достижений , для которого вы, например, создаете сценарии?
А как их хранить? Если достижение:
- изменить порядок сортировки столбцов 50 раз за один сеанс
это означает, что каждый раз, когда они сортируют столбец списка, он обновляет базу данных.
Есть какие-нибудь мысли по поводу этой проблемы дизайна приложений Win32? Я не думаю, что у Банды Четырех есть дизайн Достижения .
Примечание: Это клиентское приложение Win32, а не веб-сайт.
Мне определенно нравится идея системы событий. Различные действия, предпринимаемые пользователем, могут вызывать события через один объект событий:
protected void TimeEntriesListView_ColumnSort(object sender, EventArgs e)
{
_globalListener.RaiseEvent(EventType.ListViewColumnSort, sender, e);
}
protected void TimeEntriesListView_ColumnDrag(object sender, EventArgs e)
{
_globalListener.RaiseEvent(EventType.ListViewColumnDrag, sender, e);
}
Затем к этому объекту может быть добавлена логика, чтобы решить, какие события он хочет считать. Но, что более разумно, различные слушатели событий могут подключаться к центральному слушателю событий и иметь собственную логику достижения.