然后是在我们的 Web 应用程序中实现某种成就的时刻。我有一个或多或少类似于这个问题如何在 RoR 中实现成就系统中描述的层次结构的想法。
我们正在开发的应用程序是一种软件即服务,旨在在没有软件开发人员的情况下进行外部管理。问题是软件管理员应该可以通过 Web 界面创建新的成就运行时。然后层次结构变成一堵墙。
我在某处读过可以通过有限状态机来实现这种情况,但目前我没有足够的关于该主题的信息。
编辑:具体问题
我考虑过用一系列要满足的条件来建模一个成就类。这个基本类的成就将有一个布尔值,它递归地检查所有条件是否有效。然后条件可以是硬编码的类。然后系统管理员通过原子条件的组合创建新的成就。
我担心的是越来越多的原子条件类。我不想在项目中有 30 多个条件类。任何建议都非常感谢。
编辑:有关实施的更多详细信息
从 SpyrosP 的响应来看,构建所描述的 DSL 似乎是个好主意。然后必须以某种方式将成就保存在数据库中。保持相同的例子:
comments :less_than => 10
check_comments
comments :more_or_equal => 100
award_hundred_comments_badge
为了动态地创建成就,应该有一个表来存储要检查的条件:
Achievement
| id | name |
| 1 | "Houndred Comments" |
Condition
| achievement_id | expression |
| 1 | some sort of condition |