Add clonning of values in fact logging to keep initial values

This commit is contained in:
Nicolas Héron 2020-07-23 09:20:35 +02:00
commit 998eb9980f
21 changed files with 199 additions and 85 deletions

View file

@ -15,6 +15,7 @@
*/
package org.chtijbug.drools.runtime.impl;
import com.rits.cloning.Cloner;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
import org.chtijbug.drools.common.reflection.ReflectionUtils;
@ -380,9 +381,12 @@ public class RuleBaseStatefulSession implements RuleBaseSession {
public Object fireAllRulesAndStartProcess(Object inputObject, String processName) throws DroolsChtijbugException {
DroolsFactObject inputDroolsObject = null;
DroolsFactObject outputDroolsObject = null;
Object inputObjectClone;
if (inputObject != null) {
this.insertByReflection(inputObject);
inputDroolsObject = DroolsFactObjectFactory.createFactObject(inputObject);
Cloner cloner = new Cloner();
inputObjectClone=cloner.deepClone(inputObject);
inputDroolsObject = DroolsFactObjectFactory.createFactObject(inputObjectClone);
}
if (processName != null && processName.length() > 0) {
this.startProcess(processName);
@ -537,9 +541,12 @@ public class RuleBaseStatefulSession implements RuleBaseSession {
DroolsFactObject inputDroolsObject = null;
DroolsFactObject outputDroolsObject = null;
Object inputObjectClone;
if (inputObject != null) {
this.insertByReflection(inputObject);
inputDroolsObject = DroolsFactObjectFactory.createFactObject(inputObject);
Cloner cloner = new Cloner();
inputObjectClone=cloner.deepClone(inputObject);
inputDroolsObject = DroolsFactObjectFactory.createFactObject(inputObjectClone);
}
Map<String, Object> maps = new HashMap<String, Object>();
maps.put("inputObject", inputObject);