我一直在开发一种软件,它需要一个形式为'A不允许B'或'X需要Y'的规则来创建一个允许你配置一个复杂项目的应用程序。配置规则引擎 - 替代方法?
为了更充分地描述它,想象你有文件夹,其中有子文件夹的一些数量的水平,而且每个子文件夹的项目有一定数量。其目的是以帮助用户创建有效选择集合的方式表达项目之间的关系。
所以实际的规则看起来更像是'All(A,B,C)Disallows Any(X,Y,Z)',它表示如果用户选择A,B和C,他们不能选择X,Y或Z中的任何一个。它基本上只是布尔逻辑。
还有其他类型,如那些如果你选择一个,那么你还必须选择B,但不值得进入的所有细节是说。
它不是业务逻辑(至少不是正常的意义上的),规则可以随时改变(他们将会改变),所以它们需要从字符串中读取,并通过一个复杂的数据库结构来解释或连接我宁愿远离)。
真正的问题是:有没有某种系统或框架在那里的,在这种运行时行为涉及?我知道Oracle有一个叫做“Oracle Configurator”的东西,它完全符合我所说的内容,但是我认为这是非常昂贵的。
该项目几乎已经结束,我已经构建了一个“工作”系统,但我正在尝试进行验尸,看它能否做得更好/更快/更便宜。
我还没有弄清楚所有细节,但在阅读了关于Prolog和玩弄一些简单的KB之后,它显示了很多的承诺。我会继续研究它并抓取几本书来阅读。在此期间,享受您的选中标记! – 2011-01-14 18:58:43