use of org.drools.core.WorkingMemoryEntryPoint in project drools by kiegroup.
the class StatefulKnowledgeSessionImpl method initInitialFact.
public InternalFactHandle initInitialFact(MarshallerReaderContext context) {
WorkingMemoryEntryPoint defaultEntryPoint = entryPointsManager.getDefaultEntryPoint();
InternalFactHandle handle = getFactHandleFactory().newInitialFactHandle(defaultEntryPoint);
ObjectTypeNode otn = defaultEntryPoint.getEntryPointNode().getObjectTypeNodes().get(InitialFact_ObjectType);
if (otn != null) {
PropagationContextFactory ctxFact = RuntimeComponentFactory.get().getPropagationContextFactory();
PropagationContext pctx = ctxFact.createPropagationContext(0, PropagationContext.Type.INSERTION, null, null, handle, defaultEntryPoint.getEntryPoint(), context);
otn.assertInitialFact(handle, pctx, this);
}
return handle;
}
use of org.drools.core.WorkingMemoryEntryPoint in project drools by kiegroup.
the class NamedEntryPointsManager method updateEntryPointsCache.
public void updateEntryPointsCache() {
if (ruleBase.getAddedEntryNodeCache() != null) {
for (EntryPointNode addedNode : ruleBase.getAddedEntryNodeCache()) {
EntryPointId id = addedNode.getEntryPoint();
if (EntryPointId.DEFAULT.equals(id))
continue;
WorkingMemoryEntryPoint wmEntryPoint = createNamedEntryPoint(addedNode, id);
entryPoints.put(id.getEntryPointId(), wmEntryPoint);
}
}
if (ruleBase.getRemovedEntryNodeCache() != null) {
for (EntryPointNode removedNode : ruleBase.getRemovedEntryNodeCache()) {
entryPoints.remove(removedNode.getEntryPoint().getEntryPointId());
}
}
}
use of org.drools.core.WorkingMemoryEntryPoint in project drools by kiegroup.
the class FactHandleMarshallingTest method createEventFactHandle.
private InternalFactHandle createEventFactHandle(StatefulKnowledgeSessionImpl wm, InternalKnowledgeBase kBase) {
// EntryPointNode
Rete rete = kBase.getRete();
NodeFactory nFacotry = kBase.getConfiguration().getComponentFactory().getNodeFactoryService();
RuleBasePartitionId partionId = RuleBasePartitionId.MAIN_PARTITION;
EntryPointNode entryPointNode = nFacotry.buildEntryPointNode(1, partionId, false, (ObjectSource) rete, EntryPointId.DEFAULT);
WorkingMemoryEntryPoint wmEntryPoint = new NamedEntryPoint(EntryPointId.DEFAULT, entryPointNode, wm);
EventFactHandle factHandle = new EventFactHandle(1, (Object) new Person(), 0, (new Date()).getTime(), 0, wmEntryPoint);
return factHandle;
}
use of org.drools.core.WorkingMemoryEntryPoint in project drools by kiegroup.
the class StatefulKnowledgeSessionImpl method updateEntryPointsCache.
// ------------------------------------------------------------
// Instance methods
// ------------------------------------------------------------
public void updateEntryPointsCache() {
if (kBase.getAddedEntryNodeCache() != null) {
for (EntryPointNode addedNode : kBase.getAddedEntryNodeCache()) {
EntryPointId id = addedNode.getEntryPoint();
if (EntryPointId.DEFAULT.equals(id))
continue;
WorkingMemoryEntryPoint wmEntryPoint = new NamedEntryPoint(id, addedNode, this);
entryPoints.put(id.getEntryPointId(), wmEntryPoint);
}
}
if (kBase.getRemovedEntryNodeCache() != null) {
for (EntryPointNode removedNode : kBase.getRemovedEntryNodeCache()) {
entryPoints.remove(removedNode.getEntryPoint().getEntryPointId());
}
}
}
use of org.drools.core.WorkingMemoryEntryPoint in project drools by kiegroup.
the class ProtobufOutputMarshaller method serializeSession.
private static ProtobufMessages.KnowledgeSession serializeSession(MarshallerWriteContext context) throws IOException {
StatefulKnowledgeSessionImpl wm = (StatefulKnowledgeSessionImpl) context.wm;
try {
wm.getLock().lock();
for (WorkingMemoryEntryPoint ep : wm.getWorkingMemoryEntryPoints().values()) {
if (ep instanceof NamedEntryPoint) {
((NamedEntryPoint) ep).lock();
}
}
evaluateRuleActivations(wm);
ProtobufMessages.RuleData.Builder _ruleData = ProtobufMessages.RuleData.newBuilder();
long time = 0;
if (context.wm.getTimerService() instanceof PseudoClockScheduler) {
time = context.clockTime;
}
_ruleData.setLastId(wm.getFactHandleFactory().getId());
_ruleData.setLastRecency(wm.getFactHandleFactory().getRecency());
InternalFactHandle handle = context.wm.getInitialFactHandle();
if (handle != null) {
// can be null for RETE, if fireAllRules has not yet been called
ProtobufMessages.FactHandle _ifh = ProtobufMessages.FactHandle.newBuilder().setType(ProtobufMessages.FactHandle.HandleType.INITIAL_FACT).setId(handle.getId()).setRecency(handle.getRecency()).build();
_ruleData.setInitialFact(_ifh);
}
writeAgenda(context, _ruleData);
writeNodeMemories(context, _ruleData);
for (EntryPoint wmep : wm.getWorkingMemoryEntryPoints().values()) {
org.drools.core.marshalling.impl.ProtobufMessages.EntryPoint.Builder _epb = ProtobufMessages.EntryPoint.newBuilder();
_epb.setEntryPointId(wmep.getEntryPointId());
writeObjectTypeConfiguration(context, ((WorkingMemoryEntryPoint) wmep).getObjectTypeConfigurationRegistry(), _epb);
writeFactHandles(context, _epb, ((NamedEntryPoint) wmep).getObjectStore());
writeTruthMaintenanceSystem(context, wmep, _epb);
_ruleData.addEntryPoint(_epb.build());
}
writeActionQueue(context, _ruleData);
ProtobufMessages.KnowledgeSession.Builder _session = ProtobufMessages.KnowledgeSession.newBuilder().setMultithread(false).setTime(time).setRuleData(_ruleData.build());
if (processMarshaller != null) {
Builder _pdata = ProtobufMessages.ProcessData.newBuilder();
if (context.marshalProcessInstances) {
context.parameterObject = _pdata;
processMarshaller.writeProcessInstances(context);
}
if (context.marshalWorkItems) {
context.parameterObject = _pdata;
processMarshaller.writeWorkItems(context);
}
// this now just assigns the writer, it will not write out any timer information
context.parameterObject = _pdata;
processMarshaller.writeProcessTimers(context);
_session.setProcessData(_pdata.build());
}
Timers _timers = writeTimers(context.wm.getTimerService().getTimerJobInstances(context.wm.getIdentifier()), context);
if (_timers != null) {
_session.setTimers(_timers);
}
return _session.build();
} finally {
for (WorkingMemoryEntryPoint ep : wm.getWorkingMemoryEntryPoints().values()) {
if (ep instanceof NamedEntryPoint) {
((NamedEntryPoint) ep).unlock();
}
}
wm.getLock().unlock();
}
}
Aggregations