Update RuleFactHandler to display Object from accumulate/collect
This commit is contained in:
parent
b37a988a03
commit
9873db0fbd
2 changed files with 44 additions and 22 deletions
|
|
@ -25,6 +25,7 @@ import org.chtijbug.drools.entity.history.rule.BeforeRuleFiredHistoryEvent;
|
||||||
import org.chtijbug.drools.entity.history.session.SessionFireAllRulesMaxNumberReachedEvent;
|
import org.chtijbug.drools.entity.history.session.SessionFireAllRulesMaxNumberReachedEvent;
|
||||||
import org.drools.core.common.DefaultFactHandle;
|
import org.drools.core.common.DefaultFactHandle;
|
||||||
import org.drools.core.common.InternalFactHandle;
|
import org.drools.core.common.InternalFactHandle;
|
||||||
|
import org.drools.core.event.rule.impl.BeforeActivationFiredEventImpl;
|
||||||
import org.kie.api.event.rule.*;
|
import org.kie.api.event.rule.*;
|
||||||
import org.kie.api.runtime.KieRuntime;
|
import org.kie.api.runtime.KieRuntime;
|
||||||
import org.kie.api.runtime.rule.FactHandle;
|
import org.kie.api.runtime.rule.FactHandle;
|
||||||
|
|
@ -32,6 +33,7 @@ import org.kie.api.runtime.rule.Match;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
//import org.drools.core.common.InternalFactHandle;
|
//import org.drools.core.common.InternalFactHandle;
|
||||||
|
|
@ -81,29 +83,43 @@ public class RuleHandlerListener extends DefaultAgendaEventListener {
|
||||||
public void beforeMatchFired(BeforeMatchFiredEvent event) {
|
public void beforeMatchFired(BeforeMatchFiredEvent event) {
|
||||||
logger.debug(">>beforeActivationFired", event);
|
logger.debug(">>beforeActivationFired", event);
|
||||||
try {
|
try {
|
||||||
Match match = event.getMatch();
|
if (event instanceof BeforeActivationFiredEventImpl) {
|
||||||
List<? extends FactHandle> listFact = match.getFactHandles();
|
Match match = event.getMatch();
|
||||||
//____ Getting the Rule object summary from the session
|
List<? extends FactHandle> listFact = match.getFactHandles();
|
||||||
DroolsRuleObject droolsRuleObject = ruleBaseSession.getDroolsRuleObject(match.getRule());
|
//____ Getting the Rule object summary from the session
|
||||||
//____ Creating the specific History event for history managment
|
DroolsRuleObject droolsRuleObject = ruleBaseSession.getDroolsRuleObject(match.getRule());
|
||||||
BeforeRuleFiredHistoryEvent newBeforeRuleEvent = new BeforeRuleFiredHistoryEvent(this.ruleBaseSession.nextEventId(), this.nbRuleFired + 1, droolsRuleObject, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
//____ Creating the specific History event for history managment
|
||||||
//____ Adding all objects info contained in the Activation object into the history Events
|
BeforeRuleFiredHistoryEvent newBeforeRuleEvent = new BeforeRuleFiredHistoryEvent(this.ruleBaseSession.nextEventId(), this.nbRuleFired + 1, droolsRuleObject, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
||||||
for (FactHandle h : listFact) {
|
//____ Adding all objects info contained in the Activation object into the history Events
|
||||||
if (h instanceof DefaultFactHandle) {
|
for (FactHandle h : listFact) {
|
||||||
InternalFactHandle defaultFactHandle = (InternalFactHandle) h;
|
if (h instanceof DefaultFactHandle) {
|
||||||
//System.out.println(defaultFactHandle.toString());
|
InternalFactHandle defaultFactHandle = (InternalFactHandle) h;
|
||||||
Object object = defaultFactHandle.getObject();
|
//System.out.println(defaultFactHandle.toString());
|
||||||
DroolsFactObject sourceFactObject = ruleBaseSession.getLastFactObjectVersionFromFactHandle(h);
|
Object object = defaultFactHandle.getObject();
|
||||||
newBeforeRuleEvent.getWhenObjects().add(sourceFactObject);
|
DroolsFactObject sourceFactObject = ruleBaseSession.getLastFactObjectVersionFromFactHandle(h);
|
||||||
|
if (sourceFactObject==null){
|
||||||
|
try {
|
||||||
|
if (object instanceof List){
|
||||||
|
List lst = (List)object;
|
||||||
|
sourceFactObject = new DroolsFactObject(lst.toArray(), 1);
|
||||||
|
}else {
|
||||||
|
sourceFactObject = new DroolsFactObject(object, 1);
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
logger.info("Object not put as JSON possible"+object.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
newBeforeRuleEvent.getWhenObjects().add(sourceFactObject);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
DroolsFactObject sourceFactObject = ruleBaseSession.getLastFactObjectVersionFromFactHandle(h);
|
DroolsFactObject sourceFactObject = ruleBaseSession.getLastFactObjectVersionFromFactHandle(h);
|
||||||
newBeforeRuleEvent.getWhenObjects().add(sourceFactObject);
|
newBeforeRuleEvent.getWhenObjects().add(sourceFactObject);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
//_____ Add Event into the History Container
|
||||||
|
ruleBaseSession.addHistoryElement(newBeforeRuleEvent);
|
||||||
}
|
}
|
||||||
//_____ Add Event into the History Container
|
|
||||||
ruleBaseSession.addHistoryElement(newBeforeRuleEvent);
|
|
||||||
} finally {
|
} finally {
|
||||||
logger.debug("<<beforeActivationFired");
|
logger.debug("<<beforeActivationFired");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
8
pom.xml
8
pom.xml
|
|
@ -111,7 +111,13 @@
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
|
<!--distributionManagement>
|
||||||
|
<repository>
|
||||||
|
<id>github</id>
|
||||||
|
<name>GitHub OWNER Apache Maven Packages</name>
|
||||||
|
<url>https://maven.pkg.github.com/pymma/pymma-kie-platform</url>
|
||||||
|
</repository>
|
||||||
|
</distributionManagement-->
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
<snapshotRepository>
|
<snapshotRepository>
|
||||||
<id>pymma-snapshot</id>
|
<id>pymma-snapshot</id>
|
||||||
|
|
|
||||||
Loading…
Add table
editor.link_modal.header
Reference in a new issue