Estaba pensando en agregar algunos Logros a nuestro sistema interno de registro de errores y cronometraje. Está conectado a un back-end de SQL Server.Técnicas para agregar logros al software de clase empresarial
Al principio pensé que el sistema podría ser ejecutado en la base de datos, el uso de disparadores para, por ejemplo, saber cuándo:
- que haya iniciado sesión 1000 horas
- creado 1.000 entradas
- cerrados su propio boleto
- trabajó en un boleto que no ha sido tocado por un tiempo.
- etc (ya saben - cosas de bases de datos-ish)
Pero luego me di cuenta que yo también querría puramente LOGROS front-end
- utilizan la búsqueda avanzada abiltiy
- ordenados por una columna
- restablecer la configuración predeterminada
- buscar 500 veces
Parece que la lógica de cada logro debe estar codificada a mano. ¿Alguien podría imaginar un tipo de motor de reglas de logros , para el que, por ejemplo, cree scripts?
¿Y cómo almacenarlos? Si el logro es:
- cambio columna de orden 50 veces en una sola sesión
eso implicaría que cada vez que ordenar una columna de vista de lista que se actualiza la base de datos.
¿Alguna idea sobre este problema de diseño de la aplicación Win32? No creo que el Gang of Four tenga un patrón de diseño de Logros.
Nota: Es una aplicación cliente de Win32, no un sitio web.
Definitivamente me gusta la idea de un sistema de eventos. Diversas acciones que el usuario toma pueden provocar eventos a través de un único objeto: concurso completo
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);
}
Ese objeto puede entonces han añadido a la lógica para decidir qué eventos se quiere contar. Pero, de forma más razonable, varios oyentes de eventos pueden vincularse al oyente central de eventos y tener su lógica de logros personalizada.
Definitivamente me gusta la idea de un sistema de eventos. –