你的问题有点宽泛,我们可以从逻辑门到数学函数。我将重点关注这一点:
“我正在寻找最直观的方法来理论上以图形方式构建 if>then 规则引擎”。
首先,有两个警告:
- 最佳表示取决于可能规则的数量。适用于 3-4 规则的方法可能不适用于 30-40。
- 我会假装
else
条件不存在。
如果“X then Y”归结为:一个条件和一条指令,其执行取决于条件。假设X -> Y
意味着“如果 X 为真,则执行 Y”。让我们创建两个集合:一个C
包含所有可能的条件。另一个是I
包含所有可能的指令。
有了这个心,X ∈ C
和Y ∈ I
。在您的具体情况下,可以Y ∈ C
(可以是条件)吗?如果是这样,你有嵌套的 ifs。
嵌套 if 可以表示为由and
运算符连接的条件链:
if (x > 3) {
if (y > 5) {
# do something
}
}
可以写成:
if (x > 3 and y > 5) {
# do something
}
如果您只考虑代码,那么当您有许多嵌套条件时后者可能会出现问题,但是当您使用图形时,嵌套(可能使用树状结构)可能看起来很混乱,而链接通常看起来像一系列指令(其中我认为更好)。
如果您不考虑在规则中嵌套(链接),那么连接元素(框、圆等)X -> Y
是一种简单的工作方式。这取决于您想要获得的图形方式(请参阅下面的链接以获取一些示例)。
如果您正在考虑嵌套,那么我会想到三个随机的想法:
- 维恩图:视觉上很有吸引力,对超过 3-4 个条件无用。它们非常适合数据库表示。见:http ://share.mheroin.com/image/3i3l1y0S2F39
- 流程图:功能强大且易于阅读,创建起来不太麻烦。可以使用 10 多个元素失控。见:http ://share.mheroin.com/image/2g071j3U1u29
- 表格:正如您所提到的,表格是表示条件的一种不错的方式,只要您可以限制适用的规则集。这是取自 iTunes 的示例: http: //share.mheroin.com/image/390y2G18123q。“匹配以下规则的 [所有/任何]”可替代
if/else
.