前言:我没有规则引擎、构建规则、建模规则、为规则实现数据结构等方面的经验。因此,我不知道我在做什么,或者我在下面尝试的内容是否离谱。
我试图弄清楚如何存储和处理以下假设场景。为了简化我的问题,假设我有一种游戏,其中用户购买了一个对象,其中可能有 1000 个可能的对象,并且对象必须以指定的顺序购买,并且只能在某些组中购买。例如,假设我是用户,我想购买对象 F。在我购买对象 F 之前,我必须之前购买了对象 A OR (B AND C)。我不能同时购买 F 和 A,也不能同时购买 F 和 B、C。它们必须按照规则指定的顺序排列。先是A,然后是F。或者,首先是 B,C,然后是 F。我现在不关心购买之间的时间跨度或用户的任何其他特征,只是它们现在是正确的顺序。
为潜在的数千个对象存储此信息的最佳方法是什么,让我可以读取所购买对象的规则,然后将其与用户之前的购买历史记录进行核对?
我已经尝试过了,但是我一直在尝试实现诸如 A OR (B AND C) 之类的分组。我想将规则存储在我有这些表的数据库中:
Objects
(ID(int),Description(char))
ObjectPurchRules
(ObjectID(int),ReqirementObjectID(int),OperatorRule(char),Sequence(int))
但很明显,当你处理结果时,如果没有分组,你会得到错误的答案。如果可能的话,我想避免过多的字符串解析:)。一个对象可能有未知数量的先前所需购买。用于处理规则的 SQL 或伪代码片段将不胜感激。:)