9

私は現在、Drools Expert/Flow と GWT を独学で学んでいます。Drools Flow をイベント/コマンド バスおよびビジネス ルール エンジンとして使用して、アプリケーションのさまざまな部分間の疎結合を実現したいと考えています。

これまでのところ、テスト ケースから Expert と Flow の両方が動作するようになりましたが、Web コンテナー内に Flow を最適に実装する方法を理解するのに苦労しています。

すべてのスキャフォールディングをステートレス セッション EJB に配置し、各リクエストですべてを最初から設定してから、フロー/ルールを実行する必要がありますか? これは私にはリソースの無駄のように思えます。代わりに、単一のナレッジ セッションを保存し、そのセッションを Web リクエスト間で共有して同時にアクセスすることはできますか? そのシナリオはスケーリングされ、スレッド セーフになりますか? 知識セッションをプールすることは良い考えですか?

私が求めているのは、基本的に上記のベストプラクティスがあるかどうかです? ドキュメントと例は、それ以外は非常に優れていますが、これらの特定の点については明確ではありません。

Drools Grid について何か読んだことがありますが、それで問題が解決するかどうかはわかりませんが、開発中のようです。私の質問が不明な場合は、そう言ってください。

BRマグナス

4

1 に答える 1

4

KnowledgeBase はスレッド セーフであり、重量が重い (作成コストが高くない) ため、おそらくアプリケーション スコープ内に保持することをお勧めします。

今のところ、ほとんどの人はステートレス アーキテクチャを使用し、ステートレス セッション Bean (または seam/CDI Bean または Spring Bean) などのすべての Web 要求に対して StatelessKnowlegdeSession (スレッドが安全でなく、安価に作成できる) を作成する傾向があります。ただし、ステートフル EJB の能力がある場合は、1 つの StafefulKnowlegdeSession を使用して、同じ会話ですべての要求を処理し続けることが有益な場合があります。

StatefulKnowlegdeSessionがスレッドセーフかどうかはわかりません (そうは思わないでください) 。

于 2010-12-21T08:20:56.427 に答える