use of org.drools.core.beliefsystem.BeliefSystem in project drools by kiegroup.
the class TruthMaintenanceSystem method addLogicalDependency.
public InternalFactHandle addLogicalDependency(final InternalFactHandle handle, final Object object, final Object value, final Activation activation, final PropagationContext context, final RuleImpl rule, final ObjectTypeConf typeConf, final boolean read) {
BeliefSystem beliefSystem = defaultBeliefSystem;
if (value != null && value instanceof Mode & !(value instanceof SimpleMode)) {
Mode mode = (Mode) value;
beliefSystem = (BeliefSystem) mode.getBeliefSystem();
}
BeliefSet beliefSet = handle.getEqualityKey().getBeliefSet();
if (beliefSet == null) {
if (context.getType() == PropagationContext.Type.MODIFICATION) {
// if this was a update, chances are its trying to retract a logical assertion
}
beliefSet = beliefSystem.newBeliefSet(handle);
handle.getEqualityKey().setBeliefSet(beliefSet);
}
final LogicalDependency node = beliefSystem.newLogicalDependency(activation, beliefSet, object, value);
activation.getRule().setHasLogicalDependency(true);
activation.addLogicalDependency(node);
if (read) {
// used when deserialising
beliefSystem.read(node, beliefSet, context, typeConf);
} else {
beliefSet = beliefSystem.insert(node, beliefSet, context, typeConf);
}
return beliefSet.getFactHandle();
}
use of org.drools.core.beliefsystem.BeliefSystem in project drools by kiegroup.
the class DefaultKnowledgeHelper method bolster.
public InternalFactHandle bolster(final Object object, final Object value) {
if (object == null || !activation.isMatched()) {
return null;
}
InternalFactHandle handle = getFactHandleFromWM(object);
NamedEntryPoint ep = (NamedEntryPoint) workingMemory.getEntryPoint(EntryPointId.DEFAULT.getEntryPointId());
ObjectTypeConf otc = ep.getObjectTypeConfigurationRegistry().getObjectTypeConf(ep.getEntryPoint(), object);
BeliefSystem beliefSystem;
if (value == null) {
beliefSystem = workingMemory.getTruthMaintenanceSystem().getBeliefSystem();
} else {
if (value instanceof Mode) {
Mode m = (Mode) value;
beliefSystem = (BeliefSystem) m.getBeliefSystem();
} else {
beliefSystem = workingMemory.getTruthMaintenanceSystem().getBeliefSystem();
}
}
BeliefSet beliefSet = null;
if (handle == null) {
handle = workingMemory.getKnowledgeBase().getConfiguration().getComponentFactory().getFactHandleFactoryService().newFactHandle(object, otc, workingMemory, ep);
}
if (handle.getEqualityKey() == null) {
handle.setEqualityKey(new EqualityKey(handle, EqualityKey.STATED));
} else {
beliefSet = handle.getEqualityKey().getBeliefSet();
}
if (beliefSet == null) {
beliefSet = beliefSystem.newBeliefSet(handle);
handle.getEqualityKey().setBeliefSet(beliefSet);
}
return beliefSystem.insert(beliefSystem.asMode(value), activation.getRule(), activation, object, beliefSet, activation.getPropagationContext(), otc).getFactHandle();
}
Aggregations