コード例 #1
0
ファイル: BetaMemoryNode.cs プロジェクト: toenners/NRules
 private void PropagateRetractInternal(IExecutionContext context, IBetaMemory memory, List <Tuple> tuples)
 {
     if (tuples.Count > 0)
     {
         foreach (var sink in _sinks)
         {
             sink.PropagateRetract(context, tuples);
         }
         foreach (var childTuple in tuples)
         {
             memory.Remove(childTuple);
         }
     }
 }
コード例 #2
0
        public void PropagateRetract(IExecutionContext context, Tuple tuple, Fact fact)
        {
            IBetaMemory memory     = context.WorkingMemory.GetNodeMemory(this);
            Tuple       childTuple = memory.FindTuple(tuple, fact);

            if (childTuple != null)
            {
                foreach (var sink in _sinks)
                {
                    sink.PropagateRetract(context, childTuple);
                }
                memory.Remove(childTuple);
            }
        }
コード例 #3
0
        private void PropagateRetractInternal(IExecutionContext context, IBetaMemory memory, List <Tuple> tuples)
        {
            if (tuples.Count > 0)
            {
                using (var counter = PerfCounter.Retract(context, this))
                {
                    memory.Remove(tuples);
                    counter.SetCount(memory.TupleCount);
                }

                for (int i = _sinks.Count - 1; i >= 0; i--)
                {
                    _sinks[i].PropagateRetract(context, tuples);
                }
            }
        }