7

これが私がやりたかったことです。

データベーステーブルに「ルール」を入れたかったのです。これは、すべてのルールがテーブル内の行になることを除いて、droolsxls決定テーブル形式に似ています。このようにして、ルールを簡単に変更できます。ルールが頻繁に変更される可能性があるため、これをxlsではなくテーブルに配置する必要があります。これはよだれで可能ですか?(DRLまたはxlsファイルの代わりに)DBから取得したルールを使用してナレッジベースを構築できますか?ルールが変更されるたびに、ナレッジベースを最初から再構築できますか(またはナレッジベースの一部のみで、基本的に変更されたルールのみを更新できます) ..)

4

1 に答える 1

7

それはあなたがどのようなルールを考えているかによります。同じ構造を持ち、特定の「パラメータ」によってのみ変化するルールがたくさんある場合は、データベースに裏打ちされたアプローチが理にかなっています。この場合、単一の汎用ルールを記述し、データベースを使用して、適用されるすべての組み合わせを格納できます。たとえば、注文について、国ごとの配送料を計算するルールがあるとします。

rule "Shipping rates to France"
when
    $order : Order(country == 'fr')
then
    $order.setShippingRate(10.0);
    update(order);
end

// Similar rules for other countries…

データベースのこれらのルールデータを置き換えることができます。各ルールデータは、CountryShippingRate1つの国のレートを指定します。次に、すべてのCountryShippingRate行をファクトオブジェクトとしてルールセッションに挿入し、次のような単一のルールを挿入します。

rule "Shipping rates"
when
    $order : Order($country : country)
    CountryShippingRate($rate : rate, country == $country)
then
    $order.setShippingRate($rate);
    update(order);
end

実際には、多くのデシジョンテーブルタイプのルールをこの方法で書き直すことができます。

于 2010-08-09T10:45:59.577 に答える