Merge pull request #202 from pymma/kafka
Impossible to post an asset when no asset are present in the project …
This commit is contained in:
commit
f975620e3c
4 changed files with 34 additions and 20 deletions
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package org.chtijbug.drools.runtime.impl;
|
package org.chtijbug.drools.runtime.impl;
|
||||||
|
|
||||||
|
import com.rits.cloning.Cloner;
|
||||||
import org.chtijbug.drools.entity.DroolsFactObject;
|
import org.chtijbug.drools.entity.DroolsFactObject;
|
||||||
import org.chtijbug.drools.entity.history.fact.DeletedFactHistoryEvent;
|
import org.chtijbug.drools.entity.history.fact.DeletedFactHistoryEvent;
|
||||||
import org.chtijbug.drools.entity.history.fact.FactHistoryEvent;
|
import org.chtijbug.drools.entity.history.fact.FactHistoryEvent;
|
||||||
|
|
@ -42,9 +43,11 @@ public class FactHandlerListener implements RuleRuntimeEventListener {
|
||||||
|
|
||||||
private static Logger logger = LoggerFactory.getLogger(FactHandlerListener.class);
|
private static Logger logger = LoggerFactory.getLogger(FactHandlerListener.class);
|
||||||
private final RuleBaseStatefulSession ruleBaseSession;
|
private final RuleBaseStatefulSession ruleBaseSession;
|
||||||
|
private Cloner cloner;
|
||||||
|
|
||||||
public FactHandlerListener(RuleBaseStatefulSession ruleBaseSession) {
|
public FactHandlerListener(RuleBaseStatefulSession ruleBaseSession, Cloner cloner) {
|
||||||
this.ruleBaseSession = ruleBaseSession;
|
this.ruleBaseSession = ruleBaseSession;
|
||||||
|
this.cloner=cloner;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -54,9 +57,9 @@ public class FactHandlerListener implements RuleRuntimeEventListener {
|
||||||
//____ Updating reference into the facts map from knowledge Session
|
//____ Updating reference into the facts map from knowledge Session
|
||||||
//((RuleTerminalNode)((RuleTerminalNodeLeftTuple)((org.drools.common.DefaultFactHandle)event.getFactHandle()).getFirstLeftTuple()).getSink()).getRule().getRuleFlowGroup()
|
//((RuleTerminalNode)((RuleTerminalNodeLeftTuple)((org.drools.common.DefaultFactHandle)event.getFactHandle()).getFirstLeftTuple()).getSink()).getRule().getRuleFlowGroup()
|
||||||
FactHandle f = event.getFactHandle();
|
FactHandle f = event.getFactHandle();
|
||||||
Object newObject = event.getObject();
|
Object newObject = cloner.deepClone(event.getObject());
|
||||||
DroolsFactObject ff = DroolsFactObjectFactory.createFactObject(newObject);
|
DroolsFactObject ff = DroolsFactObjectFactory.createFactObject(newObject);
|
||||||
ruleBaseSession.setData(f, newObject, ff);
|
ruleBaseSession.setData(f, event.getObject(), ff);
|
||||||
//____ Adding the Insert Event from the History Container
|
//____ Adding the Insert Event from the History Container
|
||||||
InsertedFactHistoryEvent insertFactHistoryEvent = new InsertedFactHistoryEvent(this.ruleBaseSession.nextEventId(), ff, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
InsertedFactHistoryEvent insertFactHistoryEvent = new InsertedFactHistoryEvent(this.ruleBaseSession.nextEventId(), ff, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
||||||
if (insertFactHistoryEvent.getRuleName() == null && event instanceof ObjectInsertedEventImpl) {
|
if (insertFactHistoryEvent.getRuleName() == null && event instanceof ObjectInsertedEventImpl) {
|
||||||
|
|
@ -77,12 +80,11 @@ public class FactHandlerListener implements RuleRuntimeEventListener {
|
||||||
try {
|
try {
|
||||||
//____ Updating FactHandle Object reference from the knwoledge session
|
//____ Updating FactHandle Object reference from the knwoledge session
|
||||||
FactHandle f = event.getFactHandle();
|
FactHandle f = event.getFactHandle();
|
||||||
Object oldValue = event.getOldObject();
|
Object newValue = cloner.deepClone(event.getObject());
|
||||||
Object newValue = event.getObject();
|
|
||||||
|
|
||||||
DroolsFactObject factOldValue = this.ruleBaseSession.getLastFactObjectVersion(oldValue);
|
DroolsFactObject factOldValue = this.ruleBaseSession.getLastFactObjectVersion(event.getOldObject());
|
||||||
DroolsFactObject factNewValue = DroolsFactObjectFactory.createFactObject(newValue, factOldValue.getNextObjectVersion());
|
DroolsFactObject factNewValue = DroolsFactObjectFactory.createFactObject(newValue, factOldValue.getNextObjectVersion());
|
||||||
ruleBaseSession.setData(f, newValue, factNewValue);
|
ruleBaseSession.setData(f, event.getObject(), factNewValue);
|
||||||
//____ Adding the Update Event from the History Container
|
//____ Adding the Update Event from the History Container
|
||||||
UpdatedFactHistoryEvent updatedFactHistoryEvent = new UpdatedFactHistoryEvent(this.ruleBaseSession.nextEventId(), factOldValue, factNewValue, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
UpdatedFactHistoryEvent updatedFactHistoryEvent = new UpdatedFactHistoryEvent(this.ruleBaseSession.nextEventId(), factOldValue, factNewValue, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
||||||
if (updatedFactHistoryEvent.getRuleName() == null && event instanceof ObjectUpdatedEventImpl) {
|
if (updatedFactHistoryEvent.getRuleName() == null && event instanceof ObjectUpdatedEventImpl) {
|
||||||
|
|
@ -101,9 +103,9 @@ public class FactHandlerListener implements RuleRuntimeEventListener {
|
||||||
try {
|
try {
|
||||||
//____ Removing FactHandle from the KnowledgeBase
|
//____ Removing FactHandle from the KnowledgeBase
|
||||||
FactHandle f = event.getFactHandle();
|
FactHandle f = event.getFactHandle();
|
||||||
Object newObject = event.getOldObject();
|
Object deletedObject = cloner.deepClone(event.getOldObject());
|
||||||
DroolsFactObject deletedFact = this.ruleBaseSession.getLastFactObjectVersion(newObject);
|
DroolsFactObject deletedFact = this.ruleBaseSession.getLastFactObjectVersion(event.getOldObject());
|
||||||
ruleBaseSession.unsetData(f, newObject);
|
ruleBaseSession.unsetData(f, event.getOldObject());
|
||||||
//____ Adding a Delete Event from the HistoryContainer
|
//____ Adding a Delete Event from the HistoryContainer
|
||||||
|
|
||||||
DeletedFactHistoryEvent deleteFactEvent = new DeletedFactHistoryEvent(this.ruleBaseSession.nextEventId(), deletedFact, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
DeletedFactHistoryEvent deleteFactEvent = new DeletedFactHistoryEvent(this.ruleBaseSession.nextEventId(), deletedFact, this.ruleBaseSession.getRuleBaseID(), this.ruleBaseSession.getSessionId());
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package org.chtijbug.drools.runtime.impl;
|
package org.chtijbug.drools.runtime.impl;
|
||||||
|
|
||||||
|
import com.rits.cloning.Cloner;
|
||||||
import org.chtijbug.drools.entity.DroolsJbpmVariableObject;
|
import org.chtijbug.drools.entity.DroolsJbpmVariableObject;
|
||||||
import org.chtijbug.drools.entity.DroolsNodeInstanceObject;
|
import org.chtijbug.drools.entity.DroolsNodeInstanceObject;
|
||||||
import org.chtijbug.drools.entity.DroolsProcessInstanceObject;
|
import org.chtijbug.drools.entity.DroolsProcessInstanceObject;
|
||||||
|
|
@ -37,8 +38,10 @@ public class ProcessHandlerListener implements ProcessEventListener {
|
||||||
*/
|
*/
|
||||||
private final RuleBaseStatefulSession ruleBaseSession;
|
private final RuleBaseStatefulSession ruleBaseSession;
|
||||||
|
|
||||||
public ProcessHandlerListener(RuleBaseStatefulSession ruleBaseSession) {
|
private Cloner cloner;
|
||||||
|
public ProcessHandlerListener(RuleBaseStatefulSession ruleBaseSession, Cloner cloner) {
|
||||||
this.ruleBaseSession = ruleBaseSession;
|
this.ruleBaseSession = ruleBaseSession;
|
||||||
|
this.cloner = cloner;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -87,15 +87,16 @@ public class RuleBaseStatefulSession implements RuleBaseSession {
|
||||||
|
|
||||||
private HistoryListener historyListener;
|
private HistoryListener historyListener;
|
||||||
private EventCounter eventCounter = EventCounter.newCounter();
|
private EventCounter eventCounter = EventCounter.newCounter();
|
||||||
|
private Cloner cloner = new Cloner(new ObjenesisInstantiationStrategy());
|
||||||
|
|
||||||
public RuleBaseStatefulSession(Long ruleBaseID, Long sessionId, KieSession knowledgeSession, int maxNumberRuleToExecute, HistoryListener historyListener) throws DroolsChtijbugException {
|
public RuleBaseStatefulSession(Long ruleBaseID, Long sessionId, KieSession knowledgeSession, int maxNumberRuleToExecute, HistoryListener historyListener) throws DroolsChtijbugException {
|
||||||
this.ruleBaseID = ruleBaseID;
|
this.ruleBaseID = ruleBaseID;
|
||||||
this.sessionId = sessionId;
|
this.sessionId = sessionId;
|
||||||
this.knowledgeSession = knowledgeSession;
|
this.knowledgeSession = knowledgeSession;
|
||||||
this.maxNumberRuleToExecute = maxNumberRuleToExecute;
|
this.maxNumberRuleToExecute = maxNumberRuleToExecute;
|
||||||
this.factListener = new FactHandlerListener(this);
|
this.factListener = new FactHandlerListener(this,cloner);
|
||||||
this.ruleHandlerListener = new RuleHandlerListener(this);
|
this.ruleHandlerListener = new RuleHandlerListener(this,cloner);
|
||||||
this.processHandlerListener = new ProcessHandlerListener(this);
|
this.processHandlerListener = new ProcessHandlerListener(this,cloner);
|
||||||
this.historyContainer = new HistoryContainer(sessionId, historyListener);
|
this.historyContainer = new HistoryContainer(sessionId, historyListener);
|
||||||
this.listFactObjects = new HashMap<>();
|
this.listFactObjects = new HashMap<>();
|
||||||
this.listFact = new HashMap<>();
|
this.listFact = new HashMap<>();
|
||||||
|
|
@ -389,7 +390,7 @@ public class RuleBaseStatefulSession implements RuleBaseSession {
|
||||||
Thread currentThread = Thread.currentThread();
|
Thread currentThread = Thread.currentThread();
|
||||||
ClassLoader old = currentThread.getContextClassLoader();
|
ClassLoader old = currentThread.getContextClassLoader();
|
||||||
currentThread.setContextClassLoader(inputObject.getClass().getClassLoader());
|
currentThread.setContextClassLoader(inputObject.getClass().getClassLoader());
|
||||||
Cloner cloner = new Cloner(new ObjenesisInstantiationStrategy());
|
|
||||||
inputObjectClone=cloner.deepClone(inputObject);
|
inputObjectClone=cloner.deepClone(inputObject);
|
||||||
currentThread.setContextClassLoader(old);
|
currentThread.setContextClassLoader(old);
|
||||||
inputDroolsObject = DroolsFactObjectFactory.createFactObject(inputObjectClone);
|
inputDroolsObject = DroolsFactObjectFactory.createFactObject(inputObjectClone);
|
||||||
|
|
@ -549,7 +550,6 @@ public class RuleBaseStatefulSession implements RuleBaseSession {
|
||||||
Object inputObjectClone;
|
Object inputObjectClone;
|
||||||
if (inputObject != null) {
|
if (inputObject != null) {
|
||||||
this.insertByReflection(inputObject);
|
this.insertByReflection(inputObject);
|
||||||
Cloner cloner = new Cloner();
|
|
||||||
inputObjectClone=cloner.deepClone(inputObject);
|
inputObjectClone=cloner.deepClone(inputObject);
|
||||||
inputDroolsObject = DroolsFactObjectFactory.createFactObject(inputObjectClone);
|
inputDroolsObject = DroolsFactObjectFactory.createFactObject(inputObjectClone);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package org.chtijbug.drools.runtime.impl;
|
package org.chtijbug.drools.runtime.impl;
|
||||||
|
|
||||||
|
import com.rits.cloning.Cloner;
|
||||||
import org.chtijbug.drools.entity.DroolsFactObject;
|
import org.chtijbug.drools.entity.DroolsFactObject;
|
||||||
import org.chtijbug.drools.entity.DroolsRuleFlowGroupObject;
|
import org.chtijbug.drools.entity.DroolsRuleFlowGroupObject;
|
||||||
import org.chtijbug.drools.entity.DroolsRuleObject;
|
import org.chtijbug.drools.entity.DroolsRuleObject;
|
||||||
|
|
@ -35,6 +36,7 @@ import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
//import org.drools.core.common.InternalFactHandle;
|
//import org.drools.core.common.InternalFactHandle;
|
||||||
|
|
@ -66,14 +68,17 @@ public class RuleHandlerListener extends DefaultAgendaEventListener {
|
||||||
*/
|
*/
|
||||||
private int maxNumberRuleToExecute;
|
private int maxNumberRuleToExecute;
|
||||||
|
|
||||||
|
private Cloner cloner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IfMaxNumberRulewasReached
|
* IfMaxNumberRulewasReached
|
||||||
*/
|
*/
|
||||||
private boolean maxNumerExecutedRulesReached = false;
|
private boolean maxNumerExecutedRulesReached = false;
|
||||||
|
|
||||||
public RuleHandlerListener(RuleBaseStatefulSession ruleBaseSession) {
|
public RuleHandlerListener(RuleBaseStatefulSession ruleBaseSession, Cloner cloner) {
|
||||||
this.ruleBaseSession = ruleBaseSession;
|
this.ruleBaseSession = ruleBaseSession;
|
||||||
this.maxNumberRuleToExecute = ruleBaseSession.getMaxNumberRuleToExecute();
|
this.maxNumberRuleToExecute = ruleBaseSession.getMaxNumberRuleToExecute();
|
||||||
|
this.cloner=cloner;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isMaxNumerExecutedRulesReached() {
|
public boolean isMaxNumerExecutedRulesReached() {
|
||||||
|
|
@ -96,14 +101,18 @@ public class RuleHandlerListener extends DefaultAgendaEventListener {
|
||||||
if (h instanceof DefaultFactHandle) {
|
if (h instanceof DefaultFactHandle) {
|
||||||
InternalFactHandle defaultFactHandle = (InternalFactHandle) h;
|
InternalFactHandle defaultFactHandle = (InternalFactHandle) h;
|
||||||
//System.out.println(defaultFactHandle.toString());
|
//System.out.println(defaultFactHandle.toString());
|
||||||
Object object = defaultFactHandle.getObject();
|
Object object = cloner.deepClone(defaultFactHandle.getObject());
|
||||||
DroolsFactObject sourceFactObject = ruleBaseSession.getLastFactObjectVersionFromFactHandle(h);
|
DroolsFactObject sourceFactObject = ruleBaseSession.getLastFactObjectVersionFromFactHandle(h);
|
||||||
if (sourceFactObject==null){
|
if (sourceFactObject==null){
|
||||||
try {
|
try {
|
||||||
if (object instanceof List){
|
if (object instanceof List){
|
||||||
List lst = (List)object;
|
List lst = (List)object;
|
||||||
sourceFactObject = new DroolsFactObject(lst.toArray(), 1);
|
List clonedList=new ArrayList();
|
||||||
}if (object instanceof InitialFactImpl){
|
for (Object l : lst){
|
||||||
|
clonedList.add(cloner.deepClone(l));
|
||||||
|
}
|
||||||
|
sourceFactObject = new DroolsFactObject(clonedList.toArray(), 1);
|
||||||
|
}else if (object instanceof InitialFactImpl){
|
||||||
//InitialFactImpl initialFact = (InitialFactImpl)object;
|
//InitialFactImpl initialFact = (InitialFactImpl)object;
|
||||||
// Do Nothing for the time
|
// Do Nothing for the time
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
editor.link_modal.header
Reference in a new issue