2012-02-21 9 views
0

JBoss Droolsベリファイアを使用してルールファイルを検証しています。ルールファイルでカスタムエバリュエーターを使用したJBoss Droolsベリファイア

<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.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 ... 
関連する問題