gpt4 book ai didi

language-agnostic - 将成就添加到企业级软件的技术

转载 作者:行者123 更新时间:2023-12-02 17:31:38 25 4
gpt4 key购买 nike

我正在考虑向我们的内部错误跟踪和时间记录系统添加一些成就。它连接到 SQL Server 后端。

起初我认为系统可以在数据库上运行,使用触发器来例如知道何时:

  • 您已记录 1000 小时
  • 创建了 1000 张门票
  • 关闭了您自己的票证
  • 处理了一张已经有一段时间没有碰过的票证。
  • 等等(你知道的——数据库相关的东西)

但后来我意识到我也想要纯粹的前端成就

  • 使用了高级搜索功能
  • 按列排序
  • 将设置重置为默认值
  • 搜索 500 次

似乎每个成就的逻辑都必须手动编码。有人能想象某种成就规则引擎,例如您为其创建脚本吗?

如何存储它们?如果成就是:

  • 在一个 session 中更改列排序顺序 50 次

这意味着每次他们对 ListView 列进行排序时,它都会更新数据库。

对这个 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);
}

然后可以向该对象添加逻辑来决定要对哪些事件进行计数。但更合理的是,各种事件监听器可以附加到中央事件监听器,并具有其自定义的实现逻辑。

最佳答案

诀窍不在于规则的编码,实际上,这些规则很简单,并且可能是简单的表达式(bug 数量 > 1000)。

诀窍在于积累统计数据。您应该查看一种事件流处理形式来记录您的成就。例如,您并不真的希望始终通过“select count(*) from bugs where user= :user”来实现“1000 bugs”成就(您可以这样做,但可以说不应该这样做)。相反,您应该在每次他们发布错误时收到一个事件,并且您的成就系统记录“发现另一个错误”。然后该规则可以检查“number_of_bugs > 1000”。

显然,您可能需要“启动泵”,可以这么说,在启动成就系统时将 number_of_bugs 设置为数据库中的当前数量。

但目标是保持实际事件处理的轻量级,因此让它在事件发生时跟踪事件,所有事件都在公共(public)内部管道或总线上运行。

脚本语言也是一个好主意,因为它们可以轻松地评估表达式和更复杂的逻辑。例如,“number_of_bugs > 1000”是一个完全有效的 Javascript 程序。游戏刚刚建立环境。

如果您愿意,您还可以将脚本存储在数据库中并创建一个“成就”编辑器来动态添加它们(假设您正在捕获所有相关事件)。

关于language-agnostic - 将成就添加到企业级软件的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/272528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com