2016-09-15 5 views

ответ

0

Вы можете скомпилировать DRL и другие форматы Drools для создания правил, используя API Drools, и вы можете использовать скомпилированную KieBase для создания сеанса, в котором выполняются правила. Ниже приведен один пример, но вам придется адаптировать его по разным причинам.

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. Создание проекта Maven (с помощью вашей любимой IDE или COMAND строки)

  2. Добавить Drools Compiler 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. Создать файл DRL как SRC/главная/ресурсы/myrules.drl

    rule "hello" 
        when 
         $name : String() 
        then 
         System.out.println("Hello "+$name);  
    end 
    
  5. Создать свой KieService код на основе:

    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();     
        } 
    }