JBoss Drools верификатор с пользовательскими оценщиками - PullRequest
0 голосов
/ 21 февраля 2012

Я использую верификатор 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 );
        }
    }

1 Ответ

0 голосов
/ 01 марта 2012

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

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

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

java -Ddrools.evaluator.int=com.company.evaluators.IntEvaluatorDefinition ...
...