2015-09-15 3 views
0

У меня есть старый и дефрагментированный код слюни, этот код может читать файл правил (drl) вне контейнера и может использовать любой объект Value и любой класс.Устаревший код слюни до версии 6.2

  CommandExecutor ksession; 
      KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); 
      String file = System.getenv("DOMAIN_HOME")+"/mydrls/business.drl"; 
      kbuilder.add(ResourceFactory.newFileResource(file), ResourceType.DRL); 
      KnowledgeBase kbase = kbuilder.newKnowledgeBase(); 
      ksession = kbase.newStatelessKnowledgeSession(); 
      DataTest data = new DataTest(); 
      data.setAge(25); 
      List cmds = new ArrayList(); 
      cmds.add(CommandFactory.newInsert(data)); 
      ksession.execute(CommandFactory.newBatchExecution(cmds)); 

Как я могу сделать то же самое, но с слюной версии 6.2?

ответ

0

Вы можете упростить код Laune путем использования класса KieHelper:

KieHelper kieHelper = new KieHelper();   
kieHelper.addResource(ResourceFactory.newInputStreamResource(new FileInputStream("simple/simple.drl")), ResourceType.DRL); 

Results results = kieHelper.verify(); 
if(results.hasMessages(Message.Level.ERROR)){ 
    System.out.println(results.getMessages()); 
    throw new IllegalStateException("### errors ###"); 
} 

StatelessKieSession kieSession = kieHelper.build().newStatelessKieSession(); 

Надеется, что это помогает.

0

Попробуйте это:

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(); 
StatelessKieSession kieSession = 
    kieContainer.newStatelessKieSession(); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^