2017-06-06 13 views
0

私は動的にルールを更新するための要件に取り組んでいます。 1時間に1回DBからルールを選ぶスケジューラがあります。要件は、DBから読み取られた新しい一連のルールで以前ロードされたルールを完全に破棄することです。動的にルールを更新するDrools

現在、私はファイルシステムを初期化しており、スケジューラが毎回ルールを読み取るたびに再初期化されます。

private KieServices kieServices = KieServices.Factory.get(); 
private KieFileSystem kieFileSystem = kieServices.newKieFileSystem(); 

public reinitialize() { 
    kieServices = KieServices.Factory.get(); 
    kieFileSystem = kieServices.newKieFileSystem(); 
} 

しかし、これが良いアプローチであるかどうかはわかりません。 Droolsのドキュメントから読んだのは、ルールがPOMファイルを持つライブラリとして書かれていることです。私は、このアプローチがメモリファイルシステムの多くで終わるのかどうか分かりませんし、最終システムでは非常に遅くなります。

誰かが古いルールを新しいルールで動的に置き換える正しい方法を提案できますか?

答えて

0

実行時にルールを動的にロード/更新するには、KieScanner APIを使用できます。そのmavenベースのアプローチは、一旦更新されたkjarがmavenリポジトリクライアントで利用可能になると、kjarの最新バージョンを選択し、更新されたルールが実行されます。このアプローチの詳細については、documentを参照してください。

関連する問題