我一直在开发一款软件,它采用“A Disallows B”或“X Requires Y”形式的规则来制作一个允许您配置复杂项目的应用程序。
为了更全面地描述它,假设您有一个文件夹级别,其中有一些子文件夹,每个子文件夹都有一些项目。目的是以帮助用户创建有效选择集合的方式表达项目之间的关系。
所以实际的规则看起来更像'All(A, B, C) Disallows Any(X, Y, Z)',它规定如果用户选择A、B和C,他们就不能选择X中的任何一个, Y 或 Z。它基本上只是布尔逻辑。
还有其他类型,例如那些说如果您选择 A,那么您还必须选择 B,但不值得深入了解所有这些细节。
这不是业务逻辑(至少不是正常意义上的),并且规则可以随时更改(并且它们会)因此需要从字符串中读取它们并通过复杂的数据库结构进行解释或连接(我会宁愿远离)。
真正的问题是:是否有某种系统或框架可以处理这种运行时行为?我知道甲骨文有一个叫做“甲骨文配置器”的东西,它完全符合我的意思,但我认为它非常昂贵。
该项目几乎结束了,我已经建立了一个“工作”系统,但我正在尝试进行事后分析,看看它是否可以做得更好/更快/更便宜。