Update RuleFactHandler to display Object from accumulate/collect

This commit is contained in:
Nicolas Héron 2020-04-23 12:17:01 +02:00
commit 9873db0fbd
2 changed files with 44 additions and 22 deletions

View file

@ -25,6 +25,7 @@ import org.chtijbug.drools.entity.history.rule.BeforeRuleFiredHistoryEvent;
import org.chtijbug.drools.entity.history.session.SessionFireAllRulesMaxNumberReachedEvent;
import org.drools.core.common.DefaultFactHandle;
import org.drools.core.common.InternalFactHandle;
import org.drools.core.event.rule.impl.BeforeActivationFiredEventImpl;
import org.kie.api.event.rule.*;
import org.kie.api.runtime.KieRuntime;
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.LoggerFactory;
import java.io.IOException;
import java.util.List;
//import org.drools.core.common.InternalFactHandle;
@ -81,6 +83,7 @@ public class RuleHandlerListener extends DefaultAgendaEventListener {
public void beforeMatchFired(BeforeMatchFiredEvent event) {
logger.debug(">>beforeActivationFired", event);
try {
if (event instanceof BeforeActivationFiredEventImpl) {
Match match = event.getMatch();
List<? extends FactHandle> listFact = match.getFactHandles();
//____ Getting the Rule object summary from the session
@ -94,6 +97,18 @@ public class RuleHandlerListener extends DefaultAgendaEventListener {
//System.out.println(defaultFactHandle.toString());
Object object = defaultFactHandle.getObject();
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 {
@ -104,6 +119,7 @@ public class RuleHandlerListener extends DefaultAgendaEventListener {
}
//_____ Add Event into the History Container
ruleBaseSession.addHistoryElement(newBeforeRuleEvent);
}
} finally {
logger.debug("<<beforeActivationFired");
}

View file

@ -111,7 +111,13 @@
</plugins>
</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>
<snapshotRepository>
<id>pymma-snapshot</id>