2

現在の時刻を認識する必要がある累積関数を作成しようとしています。私は明らかに System.currentTimeMillis() を使用できますが、疑似クロックで drools セッションを実行してテストするために、この関数をテストできるようにしたいと考えています。

getResult() メソッド内から、またはそれが不可能な場合は drools コード自体から (te when セクションで) セッション クロック (または、KnowledgeRuntime) を取得する方法を探しているので、関数へのクロック

4

2 に答える 2

4

かなりの数の驚きがある可能性があるため、時計を扱うときは注意してください。ファクト/イベントがセッションに挿入されるか、update/modify 呼び出しで変更されると、制約が評価されることに注意してください。これは、制約が評価される時刻が、ルールが実行される時刻と異なる可能性があることを意味します。これが、drools が現在の時刻を LHS パターンに直接公開しない理由です。

そうは言っても、それを行う方法は、セッションクロックをファクトとしてセッションに挿入し、それを他のファクトとしてバインドすることです:

rule X
when
    $clock : SessionClock()
    ... your patterns / accumulate / etc  ...
then
    ...
end
于 2012-05-23T19:30:23.317 に答える