1

概念実証として、Drools ワークベンチを使用してデータ オブジェクトと DRL ファイルを作成しました。jar ファイルを作成し、kie サーバーに (コンテナーを使用して) デプロイしました。すべてワークベンチ UI を介して行われます。C# アプリケーションから KIE REST サービスを使用して XML 経由で (バッチ実行を使用して) 入力オブジェクトをポストし、ルールを実行したところ、探していた応答が得られました。

ただし、実際のシナリオでは、既存のオブジェクトの属性に基づいてルールを作成するための独自のルール エディターを (使いやすさのために) 用意します。ルールが DB に保存されたら、データ オブジェクトとともに DRL ファイルを生成する予定です。

私の質問は、この DRL ファイルを取得して jar ファイルとしてビルドする方法です。

Kie コンテナーには、データ オブジェクトと DRL ファイルを含む jar ファイルが必要です。他の誰かが同様のことをしましたか?

drools ルール ファイルを展開する最良の方法を見つけようとしています。他の方法として、IKVM を使用して drools jar ファイルから dll を生成し、アプリケーションに drools を統合することもできます。

4

2 に答える 2

2

これは以前に質問されて回答されたと思いますが、ここでもう一度、DRL を KieBase または KieSession にコンパイルするコードです。

public KieBase build( String drlPath ) throws Exception {
    KieServices kieServices = KieServices.Factory.get();
    KieFileSystem kfs = kieServices.newKieFileSystem();
    FileInputStream fis = new FileInputStream( drlPath );
    kfs.write( "src/main/resources/some.drl",
                kieServices.getResources().newInputStreamResource( fis ) );
    KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll();
    Results results = kieBuilder.getResults();
    if( results.hasMessages( Message.Level.ERROR ) ){
        System.out.println( results.getMessages() );
        throw new IllegalStateException( "### errors ###" );
    }
    KieContainer kieContainer =
        kieServices.newKieContainer( kieServices.getRepository().getDefaultReleaseId() );

    KieBase kieBase = kieContainer.getKieBase();
    return kieBase;
}
于 2015-04-30T15:34:33.303 に答える
0

IKVMを使用して、drools 6.2を.net dllに変換しました。これを行う方法を示すために作成した投稿は次のとおりです。

http://droolstonet.blogspot.com/2015/05/how-to-use-drools-62-in-net-using-ikvm.html

于 2015-05-19T19:30:05.390 に答える