public void TrackFactActivity(FactActivityType activityType, string classType, int classInstanceId) { if (classType == null) { throw new RuleEngineArgumentNullException(string.Format(CultureInfo.CurrentCulture, "nullArgument", new object[] { "strClassName" }), base.GetType().FullName, "objectType"); } // Create a builder to write xml to StringBuilder builder = new StringBuilder(200); using (XmlWriter xWriter = XmlWriter.Create(builder, new XmlWriterSettings { OmitXmlDeclaration = true, ConformanceLevel = ConformanceLevel.Fragment })) { AppendTraceHeader(xWriter); this.AppendContextHeader(m_workingMemoryUpdateTrace, xWriter); xWriter.WriteElementString("Description", String.Format("{0}ing {1} [{2}]", activityType.ToString(), classType, classInstanceId)); switch (activityType) { case FactActivityType.Assert: xWriter.WriteElementString(m_operationTypeTrace, m_assertOperationTrace); break; case FactActivityType.Retract: xWriter.WriteElementString(m_operationTypeTrace, m_retractOperationTrace); break; case FactActivityType.Update: xWriter.WriteElementString(m_operationTypeTrace, m_updateOperationTrace); break; case FactActivityType.AssertUnrecognized: xWriter.WriteElementString(m_operationTypeTrace, m_assertUnrecognizedOperationTrace); break; case FactActivityType.RetractUnrecognized: xWriter.WriteElementString(m_operationTypeTrace, m_retractUnrecognizedOperationTrace); break; case FactActivityType.UpdateUnrecognized: xWriter.WriteElementString(m_operationTypeTrace, m_updateUnrecognizedOperationTrace); break; case FactActivityType.RetractNotPresent: xWriter.WriteElementString(m_operationTypeTrace, m_retractNotPresentOperationTrace); break; case FactActivityType.UpdateNotPresent: xWriter.WriteElementString(m_operationTypeTrace, m_updateNotPresentOperationTrace); break; default: xWriter.WriteElementString(m_operationTypeTrace, m_unrecognizedOperationTrace); break; } xWriter.WriteElementString(m_objectTypeTrace, classType); xWriter.WriteElementString(m_objectInstanceTrace, classInstanceId.ToString(CultureInfo.CurrentCulture)); CloseTrace(xWriter); } Log(builder); }