第6章 ルールの統合
6.1. ナレッジエージェント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ナレッジエージェントは、ナレッジ API に埋め込まれているコンポーネントであり、追加のコンポーネントの必要なしにナレッジエージェントを使用できます。JBoss Enterprise BRMS Platform を利用している場合、同アプリケーションは、クラスパスに
drools-core の依存関係しか含む必要はありません。つまり、drools と mvel JAR だけです。これ以外にルール固有の依存関係は存在しません。
パッケージにコンパイルされたルールは、ターゲットアプリケーションですぐに利用できます。
以下の例でエージェントを構築しますが、このエージェントはパスのストリングで指定したファイルから新たな KnowledgeBase を作成します。60秒ごと (デフォルト) にこれらのファイルをプルして更新されているか確認します。新規ファイルが見つかった場合は、新規の KnowledgeBase を作成します。変更セットがディレクトリのリソースを指定した場合、そのコンテンツも変更にあわせてスキャンされます。
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "MyAgent" );
kagent.applyChangeSet( ResourceFactory.newUrlResource( url ) );
KnowledgeBase kbase = kagent.getKnowledgeBase();
KnowledgeAgent は、デフォルトの一部を変更できる設定も可能です。プロパティの例は "drools.agent.scanDirectories" ですが、デフォルトでは新規に追加されたかを確認するために指定のディレクトリにスキャンがかかります。
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
KnowledgeAgentConfiguration kaconf = KnowledgeAgentFactory.newKnowledgeAgentConfiguration();
kaconf.setProperty( "drools.agent.scanDirectories", "false" ); // we don't scan directories, only files
KnowledgeAgent kagent = KnowledgeAgentFactory.newKnowledgeAgent( "test agent", kaconf );
// resource to the change-set xml for the resources to add
kagent.applyChangeSet( ResourceFactory.newUrlResource( url ) );
これは、
change-set.xml ファイルの例です。
<change-set xmlns='http://drools.org/drools-5.0/change-set'";
xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
xs:schemaLocation='http://drools.org/drools-5.0/change-set drools-change-set-5.0.xsd' ><add><resource source='http://localhost:9000/TEST.pkg' type='PKG' /></add></change-set>
リソーススキャンはデフォルトで有効になっています。これはサービスであるため、開始する必要があります。ResourceFactory 経由で実行可能です。
ResourceFactory.getResourceChangeNotifierService().start();
ResourceFactory.getResourceChangeScannerService().start();