public void PropagateUpdate(IExecutionContext context, ITupleFactList tupleFactList) { if (tupleFactList.Count == 0) { return; } IBetaMemory memory = context.WorkingMemory.GetNodeMemory(this); var toAssert = new List <Tuple>(); var toUpdate = new List <Tuple>(); var enumerator = tupleFactList.GetEnumerator(); while (enumerator.MoveNext()) { Tuple childTuple = memory.FindTuple(enumerator.CurrentTuple, enumerator.CurrentFact); if (childTuple == null) { childTuple = new Tuple(enumerator.CurrentTuple, enumerator.CurrentFact); childTuple.GroupId = enumerator.CurrentTuple.Id; toAssert.Add(childTuple); } else { toUpdate.Add(childTuple); } } PropagateAssertInternal(context, memory, toAssert); PropagateUpdateInternal(context, toUpdate); }
public void PropagateAssert(IExecutionContext context, ITupleFactList tupleFactList) { if (tupleFactList.Count == 0) { return; } IBetaMemory memory = context.WorkingMemory.GetNodeMemory(this); var toAssert = new List <Tuple>(); var enumerator = tupleFactList.GetEnumerator(); while (enumerator.MoveNext()) { var childTuple = new Tuple(context.IdGenerator.NextTupleId(), enumerator.CurrentTuple, enumerator.CurrentFact); childTuple.GroupId = enumerator.CurrentTuple.Id; toAssert.Add(childTuple); } PropagateAssertInternal(context, memory, toAssert); }
public void PropagateRetract(IExecutionContext context, ITupleFactList tupleFactList) { if (tupleFactList.Count == 0) { return; } IBetaMemory memory = context.WorkingMemory.GetNodeMemory(this); var toRetract = new List <Tuple>(); var enumerator = tupleFactList.GetEnumerator(); while (enumerator.MoveNext()) { Tuple childTuple = memory.FindTuple(enumerator.CurrentTuple, enumerator.CurrentFact); if (childTuple != null) { toRetract.Add(childTuple); } } PropagateRetractInternal(context, memory, toRetract); }