あなたの質問は少し広範であり、論理ゲートから数学関数までとりとめのないものにすることができます。この特定のビットに焦点を当てます。
「if>thenルールエンジンをグラフィカルに理論的に構築する最も直感的な方法を探しています」.
まず、2 つの注意事項:
- 最適な表現は、可能なルールの数によって異なります。3 ~ 4 のルールで機能するものは、おそらく 30 ~ 40 のルールでは機能しません。
else
条件が存在しないふりをするつもりです。
「X then Y」が要約される場合: 1 つの条件と、その実行が条件に依存する 1 つの命令。X -> Y
「X が true の場合、Y が実行される」という意味にしましょう。2 つのセットを作成しましょう。1 つはC
、考えられるすべての条件を含むセットです。もう 1 つはI
、可能なすべての命令を含むものです。
これで気になるX ∈ C
しY ∈ I
。あなたの特定のケースでは、Y ∈ C
(Yは条件にすることができますか)できますか?もしそうなら、あなたはネストされたifを持っています。
ネストされた if は、and
演算子で結合された一連の条件として表すことができます。
if (x > 3) {
if (y > 5) {
# do something
}
}
次のように記述できます。
if (x > 3 and y > 5) {
# do something
}
コードだけを考えている場合、ネストされた条件が多数ある場合、後者が問題になる可能性がありますが、グラフィカルにすると、ネスト (おそらくツリーのような構造を使用) が雑然と見えますが、チェーンは通常、一連の命令のように見えます (の方が良いと思います)。
ルールでネスト (連鎖) を考慮しない場合、要素 (ボックス、円など) を接続するのX -> Y
は簡単な方法です。これの表現は、取得したいグラフィカルな方法によって異なります (いくつかの例については、以下のリンクを参照してください)。
ネストを検討している場合、次の 3 つのランダムなアイデアが頭に浮かびます。
- ベン図: 視覚的に魅力的ですが、3 ~ 4 を超える条件では役に立ちません。これらは、データベース表現によく適合します。参照: http://share.mheroin.com/image/3i3l1y0S2F39
- フローチャート: 非常に機能的で読みやすく、作成するのも面倒ではありません。10以上の要素で手に負えなくなる可能性があります。参照: http://share.mheroin.com/image/2g071j3U1u29
- テーブル: あなたが言及したように、テーブルは、適用可能なルールのセットを制限できる限り、条件を表す適切な方法です。これは iTunes からの例です: http://share.mheroin.com/image/390y2G18123q . 「次のルールの [all/any] に一致」は の代わりとして機能し
if/else
ます。