2016-09-15 9 views

答えて

0

Drools APIを使用してルールのオーサリングにDRLおよびその他のDrools形式をコンパイルし、ルールを実行するセッションを作成するためにコンパイル済みのKieBaseを使用できます。以下は1つの例ですが、さまざまな理由でそれを適応させる必要があります。

KieServices kieServices = KieServices.Factory.get(); 
KieFileSystem kfs = kieServices.newKieFileSystem(); 
FileInputStream fis = new FileInputStream("simple/simple.drl"); 
kfs.write("src/main/resources/simple.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(); 
kieSession = kieBase.newKieSession(); 
// ... insert facts ... 
kieSession.fireAllRules(); 

KieBaseおよび/またはKieSessionの設定には、追加の呼び出しが必要な場合があります。さまざまな詳細については、APIおよびDroolsのドキュメントを参照してください。

+0

感謝を – Xeetu

1
  1. (お好みのIDEまたはCOMANDラインを使用して)のMavenプロジェクトを作成します

  2. Droolsのコンパイラdepedencyと、いくつかのあなたのpom.xmlに互換性のあるライブラリをロギング(メインMavenプロジェクトファイル)を追加します。

    <dependencies> 
        <dependency> 
         <groupId>org.drools</groupId> 
         <artifactId>drools-compiler</artifactId> 
         <version>6.3.0.Final</version> 
        </dependency> 
        <dependency> 
         <groupId>ch.qos.logback</groupId> 
         <artifactId>logback-classic</artifactId> 
         <version>1.1.5</version> 
        </dependency> 
    </dependencies> 
    
  3. 内容ではsrc /メイン/リソース/ META-INF/kmodule.xmlファイルを作成します。

    <?xml version="1.0" encoding="UTF-8"?> 
    <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule" /> 
    
  4. あなたKieServiceベースのコード作成のsrc /メイン/リソース/ myrules.drl

    rule "hello" 
        when 
         $name : String() 
        then 
         System.out.println("Hello "+$name);  
    end 
    
  5. のようなあなたのDRLファイルを作成します。ご返信用

    import org.kie.api.KieServices; 
    import org.kie.api.runtime.KieContainer; 
    import org.kie.api.runtime.KieSession; 
    
    public class Main { 
    
        public static void main(String[] args) { 
    
         KieServices ks = KieServices.Factory.get(); 
         KieContainer kcontainer = ks.getKieClasspathContainer();     
         KieSession ksession = kcontainer.newKieSession(); 
    
         String name="Xeetu";  
         ksession.insert(name); 
    
         ksession.fireAllRules();     
        } 
    } 
    
関連する問題