0

Drools Expert KnowledgeAgent の簡単な使用例があります。Drools 5.3.0.Final を使用していますが、私のルールはすでに Guvnor 5.3.0.Final でコンパイルされています。

私の変更セットxmlファイルは次のようになります。

   <add>
       <resource type="PKG" source="http://ssmdeoasd01.susalud.com:7777/drools-guvnor/org.drools.guvnor.Guvnor/package/co.com.sura.seguros.adultomayor.consultas/LATEST"/>
   </add>

PKG には、単一の単純な DTABLE からのルールが含まれています。

DTABLE を変更して (アプリの実行中に) Guvnor にアップロードすると、Drools Expert は実際に変更を識別しますが、適用しません。コンソールは次のようになります。

Compilando reglas ...
Reglas compiladas ...
Tiempo de compilacion de reglas: 0 ms
Obteniendo manager ...
Manager obtenido ...
Obteniendo sesión de conocimiento ...
listKnowledgePackages.size(): 1
Sesión de conocimiento obtenida ... 
3 Padre
2 Hermanos
1 Conyuge
[2013-01-16 15:54:17,670:debug] ResourceChangeScanner attempt to scan 1 resources
[2013-01-16 15:54:17,684:debug] ResourceChangeScanner modified resource=[UrlResource path='http://ssmdeoasd01.susalud.com:7777/drools-guvnor/org.drools.guvnor.Guvnor/package/co.com.sura.seguros.adultomayor.consultas/LATEST'] : 1358369287000 : 1358369637000
[2013-01-16 15:54:17,684:debug] ResourceChangeNotification received ChangeSet notification
[2013-01-16 15:54:17,684:debug] ResourceChangeScanner thread is waiting for 60 seconds.
[2013-01-16 15:54:17,684:debug] ResourceChangeNotification processing ChangeSet
[2013-01-16 15:54:17,684:debug] ResourceChangeNotification ChangeSet modified resource=[UrlResource path='http://ssmdeoasd01.susalud.com:7777/drools-guvnor/org.drools.guvnor.Guvnor/package/co.com.sura.seguros.adultomayor.consultas/LATEST'] for listener=org.drools.agent.impl.KnowledgeAgentImpl@10655dd
[2013-01-16 15:54:17,686:debug] ResourceChangeNotification thread is waiting for queue update
Compilando reglas ...
Reglas compiladas ...
Tiempo de compilacion de reglas: 0 ms
Obteniendo manager ...
Manager obtenido ...
Obteniendo sesión de conocimiento ...
listKnowledgePackages.size(): 1
Sesión de conocimiento obtenida ... 
3 Padre
2 Hermanos
1 Conyuge

KnowledgeAgent が変更を識別しても、ルールは同じようにコンパイルされたままになり、変更は結果に反映されません。

KnowledgeAgent にも特定の拡張機能にも特別な構成はありません。代わりにデフォルトのリスナーなどを使用しました。

なぜこうなった?

4

1 に答える 1

0

私は間違いを犯していました。

既存の KnowledgeBase を使用してエージェントを構築していました。次に、エージェントがインスタンス化されたときに、そのエージェントからベースを取得し、そのベースから常にセッションを取得するために、そのベースへの参照を保持していました。エージェントのベースが変われば、エージェントから得た私のベースも変わると思いました。

その後、Guvnor でルールが変更されたとき、エージェントは実際にその仕事を行い、KnowledgeBase を再作成しましたが、エージェントのインスタンス化直後に取得したベースを常に参照し、その古い KnowledgeBase からセッションを取得していたため、実行されたルールは旧基地のもの。

参照はOKになり、ルールの変更が実行に反映されます:)

于 2013-01-17T00:48:44.327 に答える