我正在考虑在我们的内部错误跟踪和时间记录系统中添加一些成就。它连接到SQL Server后端。向业务级软件添加成就的技巧
起初我以为,该系统可以在数据库上运行,使用触发器,例如,知道什么时候:
- 你登录千小时 1000票
- 关闭你自己的票
- 工作了一段时间以来一直没有触及的票。
- 等(你知道 - 数据库十岁上下的东西)
但后来我意识到,我也想纯粹前端achivements
- 使用abiltiy
- 排序高级搜索按列
- 重置设置为默认值
- 搜索500次
看来每个成就的逻辑必须是手工编码的。任何人都可以想象某种成就规则引擎,你为例如创建脚本?
以及如何存储它们?如果成绩是:
- 更改列的排序顺序在一个会话
50倍,将意味着他们每次排序列表视图列它更新数据库。
有关此Win32应用程序设计问题的任何想法?我不认为Gang of Four有成就设计模式。
注:这是一个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);
}
这个对象就可以有逻辑添加到它决定它要数它的事件。但更合理的是,各种事件监听器可以附加到中央事件监听器,并具有他们的自定义成就逻辑。
我确定喜欢事件系统的想法。 – 2008-11-07 19:46:31