Я пытаюсь решить проблему с JHipster и Drools.
При попытке отладить его, у меня есть слюни, работающие в простом Java-проекте, а также в отдельном проекте с Spring.
Но сейчас я пытаюсь заставить его работать в JHipster (новый сгенерированный проект). Но я не знаю, почему регистрация не работает
- Я изменил ссылки
- .drl файл распознается
- Распознан ошибочный код в файле .drl
- В консоли нет ошибок
- Правило ничего не регистрирует
- Правило не будет изменять объекты.
У кого-нибудь есть предложения о том, где искать проблему?
SRC / главная / Java / com.company.ssa / сервис / ProcessingService.java
package com.company.ssa.service;
import org.kie.api.KieServices;
import org.kie.api.logger.KieRuntimeLogger;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.rule.FactHandle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class ProcessingService {
private final Logger log = LoggerFactory.getLogger(ProcessingService.class);
public String testFunctionOne() {
log.info("started TestFunctionOne");
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules");
Message message = new Message();
message.setMessage("Hello Drools");
message.setStatus(Message.HELLO);
log.info("before fire: " + message.getMessage());
log.info("before fire: " + message.getStatus());
kSession.insert(message);
kSession.fireAllRules();
log.info("after fire: " + message.getMessage());
log.info("after fire: " + message.getStatus());
log.info("ended TestFunctionOne");
return "hello world2";
}
public static class Message {
public static final int HELLO = 0;
public static final int GOODBYE = 1;
private String message;
private int status;
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public int getStatus() {
return this.status;
}
public void setStatus(int status) {
this.status = status;
}
}
}
SRC / основные / ресурсы / META-INF / kmodule.xml
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
<kbase name="rules" packages="rules">
<ksession name="ksession-rules"/>
</kbase>
<kbase name="dtables" packages="dtables">
<ksession name="ksession-dtables"/>
</kbase>
<kbase name="process" packages="process">
<ksession name="ksession-process"/>
</kbase>
</kmodule>
SRC / основные / ресурсы / META-INF / Maven / pom.properties
groupId=com.budderfly
artifactId=jhipsterrules
version=1.0.0-SNAPSHOT
SRC / главная / ресурсы / правила / rule1.drl
package com.company
import com.company.ssa.service.ProcessingService.Message;
rule "Hello World"
when
m : Message( status == Message.HELLO, myMessage : message )
then
System.out.println( myMessage );
m.setMessage( "Goodbye cruel world" );
m.setStatus( Message.GOODBYE );
update( m );
end
rule "GoodBye"
when
Message( status == Message.GOODBYE, myMessage : message )
then
System.out.println( myMessage );
end