それはあなたがどのようなルールを考えているかによります。同じ構造を持ち、特定の「パラメータ」によってのみ変化するルールがたくさんある場合は、データベースに裏打ちされたアプローチが理にかなっています。この場合、単一の汎用ルールを記述し、データベースを使用して、適用されるすべての組み合わせを格納できます。たとえば、注文について、国ごとの配送料を計算するルールがあるとします。
rule "Shipping rates to France"
when
$order : Order(country == 'fr')
then
$order.setShippingRate(10.0);
update(order);
end
// Similar rules for other countries…
データベースのこれらのルールデータを置き換えることができます。各ルールデータは、CountryShippingRate
1つの国のレートを指定します。次に、すべてのCountryShippingRate
行をファクトオブジェクトとしてルールセッションに挿入し、次のような単一のルールを挿入します。
rule "Shipping rates"
when
$order : Order($country : country)
CountryShippingRate($rate : rate, country == $country)
then
$order.setShippingRate($rate);
update(order);
end
実際には、多くのデシジョンテーブルタイプのルールをこの方法で書き直すことができます。