0

こんにちは、サイトに少し変更を加えたいと思います。だから私は一連のルールを書きましたが、それらを機能させたい場所、つまり私のサイトの元のコードでそれらを起動する方法がわかりません。

4

2 に答える 2

0

少し情報が不足しているため (Drools のバージョン、実行している環境など)、一般的な方法で回答しようとします。より具体的な情報が必要な場合はお知らせください。

一般に、Drools ではオブジェクトをワーキング メモリに「アサート」します (assertObject などのメソッドを使用)。これにより、ルール エンジンがオブジェクトを認識できるようになり、後でそのワーキング メモリで「fireAllRules」を実行すると、すべてのルールが実行されます(したがって、必要なときに作業メモリで fireAllRules メソッドを明示的に呼び出します-これがあなたが求めていたものだと思います)。

詳細については、まだ見ていない場合は、http: //legacy.drools.codehaus.org/Working+Memoryを確認してください。

ありがとうガディ

于 2009-06-01T07:34:31.760 に答える
0

abc オブジェクトがある場合、これはワーキング メモリに挿入するという事実になります。例えば:

KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newFileSystemResource( fileName ), ResourceType.DRL );
if (kbuilder.hasErrors() ) {
    System.out.println( kbuilder.getErrors() );
} else {
    KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
    StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();
    ksession.execute( abc );
}

次に、実行が終了すると、変更された abc オブジェクトが作成されます。こちらをご覧ください

ルールが毎回作成されるのは望ましくないため (これは実際には時間の消費者です)、KnowledgeAgent を使用するか、または静的な KnowledgeBase を使用して、ルール ファイルが変更されるたびに再作成することができます。

于 2009-06-25T16:57:38.503 に答える