Não é possível executar o hello world em drools - os arquivos dlr não são escolhidos no caminho de classe pelo KieContainer
Documentação a seguir:6.1 O básico Criei uma classe simples Requerente que deve ser verificada com o arquivo drl carregado do caminho da classe pelo KieContainer.
Do documento:
"Nesse ponto, é possível criar um KieContainer que leia os arquivos a serem criados, a partir do caminho de classe.
KieServices kieServices = KieServices.Factory.get();
KieContainer kContainer = kieServices.getKieClasspathContainer();
O trecho de código acima compila todos os arquivos DRL encontrados no caminho de classe e coloca o resultado dessa compilação, um KieModule, no KieContainer. Se não houver erros, agora estamos prontos para criar nossa sessão a partir do KieContainer e executar com base em alguns dados: .."
O problema é que o drl (arquivos de regras) não é carregado no projeto pelo KieContainer e não é aplicado ao meu objeto de teste.
Método de teste:
as duas primeiras linhas são da versão mais antiga apenas para verificar se o arquivo está realmente no caminho da classe. E encontra o arquivo de regras. Os arquivos de regras estão localizados em:src / main / recursos / bla / checkLicense.drl - corretamente sob recursos.
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("bla/checkLicense.drl"), ResourceType.DRL);
KieServices kieServices = KieServices.Factory.get();
KieContainer kContainer = kieServices.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession();
Applicant applicant = new Applicant("Mr John Smith",16);
System.out.println(applicant.toString());
assertTrue(applicant.isValid());
kSession.insert(applicant);
kSession.fireAllRules();
System.out.printf(applicant.toString());
assertFalse(applicant.isValid());
A saída:
[main] INFO org.drools.compiler.kie.builder.impl.ClasspathKieProject - Found kmodule: file:/Users/<MyUserName>/Drools/target/classes/META-INF/kmodule.xml
[main] WARN org.drools.compiler.kie.builder.impl.ClasspathKieProject - Unable to find pom.properties in /Users/<MyUserName>/Drools/target/classes
[main] INFO org.drools.compiler.kie.builder.impl.ClasspathKieProject - Recursed up folders, found and used pom.xml /Users/<MyUserName>/Drools/pom.xml
[main] INFO org.drools.compiler.kie.builder.impl.KieRepositoryImpl - KieModule was added:FileKieModule[ ReleaseId=drools:drools-test:6.2.0-SNAPSHOTfile=/Users/<MyUserName>/Drools/target/classes]
[main] WARN org.drools.compiler.kie.builder.impl.AbstractKieModule - No files found for KieBase HelloWorldKB, searching folder /Users/<MyUserName>/Drools/target/classes
Applicant{name='Mr John Smith', age=16, valid=true}
Applicant{name='Mr John Smith', age=16, valid=true}
O objeto candidato permaneceu o mesmo, enquanto deveria ter se tornado inválido após a invocação de regras se o arquivo de regras foi realmente fundado e carregado. A mensagem de aviso não aparece para os projetos de teste git fornecidos pela comunidade drools ...
Meu pom usa o mesmo repositório remoto jboss remoto e as dependências do INSTANTÂNEO 6.2.0 ...
o que estou perdendo?
(como estou soltando meu cabelo aqui, + 50 / + 100 adicionais serão concedidos ao salvador, aceitação da resposta pós)
(ignore o HelloWorld na imagem)