2012-02-21 2 views
0

Я использую верификатор JBoss Drools для проверки файлов правил.JBoss Drools verifier с пользовательскими оценщиками

<dependency> 
    <groupId>org.drools</groupId> 
    <artifactId>drools-verifier</artifactId> 
    <version>5.2.0.Final</version> 
    <scope>test</scope> 
</dependency> 

В файле правил, я использую некоторые из пользовательских оценщиков как ниже

KnowledgeBuilderConfiguration builderConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(); 

      builderConf.setOption(EvaluatorOption.get("int", (EvaluatorDefinition) Class.forName("com.company.evaluators.IntEvaluatorDefinition").newInstance())); 

правила Verifier не понимает эти пользовательские оценщиков и бросать ошибки. Есть ли простой способ передать данные пользовательских оценщиков в верификатор? Я использую следующий код -

verifier.addResourcesToVerify(ResourceFactory.newInputStreamResource (in), 
            ResourceType.DRL); 


    verifier.fireAnalysis(); 

    //Get the Verifier errors 
    List<VerifierError> errors = verifier.getErrors(); 

    if (errors.size() > 0) { 
     System.out.println("####### Verifier Errors #############"); 
     for (VerifierError error : errors) { 
      System.out.println(error.getMessage()); 
     } 
    }else { 
     // Get the result object [5] 
     VerifierReport result = verifier.getResult(); 

     // Print the the errors [6] 
     for(VerifierMessageBase base: result.getBySeverity(Severity.ERROR)){ 
      System.out.println(base); 
     } 
     for(VerifierMessageBase base: result.getBySeverity(Severity.NOTE)){ 
      System.out.println(base); 
     } 
     for(VerifierMessageBase base: result.getBySeverity(Severity.WARNING)){ 
      System.out.println(base); 
     } 
    } 
+0

Похоже, мне нужно добавить поддержку для них. Спасибо за сообщение. https://issues.jboss.org/browse/JBRULES-3419 –

ответ

0

Не уверен, что это лучший способ, но попробуйте установить их как системные свойства:

drools.evaluator.<ident> = <qualified class> 

Например, при выполнении верификатор, использовать в командной строке

java -Ddrools.evaluator.int=com.company.evaluators.IntEvaluatorDefinition ... 
Смежные вопросы