12

ビジネス Web アプリケーションで使用するルール エンジンとして Drools を評価しています。

私のユースケースは注文管理アプリケーションです。
ルールは次のとおりです。
- ユーザー タイプが「SPECIAL」の場合、さらに 5% の割引が適用されます。
- ユーザーがすでに 10 回以上購入している場合は、さらに 3% の割引を提供します。
- 製品カテゴリが「OLD」の場合、$5 相当のギフト ハンパーをユーザーに提供します。
- 商品カテゴリが「NEW」の場合、1ドル相当のギフトバスケットをユーザーに贈る
- ユーザーが過去に1000ドル以上購入した場合、送料は無料

当面の課題は次のとおりです。
- ルールを変更するためにエンド ユーザーに提供できる意味のある UI がありません。
- drl ファイルを変更するための Guvnor UI または任意のエディターは、エンド ユーザーの観点からは受け入れられません - これらのルールのほとんどは、多くの場合、db で利用可能な巨大なデータで動作します

その
ため、管理者ユーザーが Web アプリ UI 内からこれらのルールを指定する方法が必要です。
- これらの「ルール」をデータベースに保存し、Drools を介して操作できますか? 少なくとも、「独自の」UI を介してこれらのルールを「変更」できます。つまり、これは DB のデシジョン テーブルのようなものです。
- これについて最善の方法は何ですか?

4

3 に答える 3

6

データ駆動型ビジネス ルールに対する私の回答を踏まえて、あなたの質問に回答するように求められました。その質問に対する私の答えは、データベースに格納されたビジネス ルールを実行するには、SQL は不適切なソリューションであるというものでした。その質問をした人は、保存されているビジネス ルールから SQL 式を生成することを望んでいました。セキュリティ、テスト容易性、パフォーマンス、およびメンテナンスの問題につながるため、私はそうしないように警告しました。

私は Drools を使用したことはありませんが、RDBMSをユーザー定義ルール のリポジトリとして使用することをサポートするビジネス ルール マネージャーである Guvnor が含まれていることをドキュメントから収集しました。

[Drools] Guvnor はルールなどのアセットを格納するために JCR 標準を使用します。デフォルトの実装は Apache Jackrabbit ( http://jackrabbit.apache.org )です。これには、すぐに使用できるストレージ エンジン/データベースが含まれており、そのまま使用することも、必要に応じて既存の RDBMS を使用するように構成することもできます。( http://docs.jboss.org/drools/release/5.2.0.Final/drools-guvnor-docs/html/chap-database_configuration.html )

Apache Jackrabbit は RDBMS ではなく、「コンテンツ リポジトリは、構造化および非構造化コンテンツ、全文検索、バージョン管理、トランザクション、観察などをサポートする階層型コンテンツ ストアです」。これは、Drools のより適切なリポジトリのようです。

しかし、Drools は、SQL を使用してこれらのビジネス ルールを実行しようとしているとは言いません。それを行うための別のコンポーネント、Drools Expert (ルール エンジン)があります。

Drools Expert は、宣言型のルールベースのコーディング環境です。これにより、「これを行う方法」ではなく、「やりたいこと」に集中できます。( http://www.jboss.org/drools/drools-expert.html )

SQL も宣言型プログラミング言語ですが、テーブル構造のデータに対してリレーショナル操作を実行するように設計されています。ルール エンジンを実装する言語にはさまざまな目標があり、おそらく SQL ではできないことを実行できます (その逆も同様です)。

したがって、Drools を使用している場合は、RDBMS をドキュメントとしてリポジトリとして自由に使用することをお勧めします (コンテンツ リポジトリの JCR 準拠の実装を使用し、独自に設計しようとしないでください)。次に、ルールを実行するために設計された特殊な言語として Drools Expert を使用します。

于 2013-08-23T15:55:21.093 に答える