private static void WriteDebugItems(string workflowName, string taskName, string result)
{
string user = Thread.CurrentPrincipal.Identity.Name.Replace("\\", "-");
var state = new DebugState
{
HasError = false,
ID = Guid.NewGuid(),
StartTime = DateTime.Now,
EndTime = DateTime.Now,
ActivityType = ActivityType.Workflow,
ExecutingUser = user,
Server = "localhost",
ServerID = Guid.Empty,
DisplayName = workflowName
};
if(!string.IsNullOrEmpty(result))
{
var data = DataListUtil.AdjustForEncodingIssues(result);
bool isFragment;
var isXml = DataListUtil.IsXml(data, out isFragment);
if(isXml)
{
var xmlData = XElement.Parse(data);
var allChildren = xmlData.Elements();
var groupedData = allChildren.GroupBy(element => element.Name);
var recSets = groupedData as IGrouping<XName, XElement>[] ?? groupedData.ToArray();
foreach(var grouping in recSets)
{
var debugItem = new DebugItem();
foreach(var name in grouping)
{
if(name.HasElements)
{
var debugItemResult = ProcessRecordSet(name, name.Elements());
debugItem.ResultsList.AddRange(debugItemResult);
}
else
{
var debugItemResult = new DebugItemResult
{
Variable = DataListUtil.AddBracketsToValueIfNotExist(name.Name.LocalName),
Value = name.Value,
Operator = "=",
Type = DebugItemResultType.Variable
};
debugItem.ResultsList.Add(debugItemResult);
}
}
state.Outputs.Add(debugItem);
}
}
}
var js = new Dev2JsonSerializer();
Thread.Sleep(5000);
string correlation = GetCorrelationId(WarewolfTaskSchedulerPath + taskName);
if(!Directory.Exists(OutputPath))
Directory.CreateDirectory(OutputPath);
File.WriteAllText(
string.Format("{0}DebugItems_{1}_{2}_{3}_{4}.txt", OutputPath, workflowName.Replace("\\", "_"),
DateTime.Now.ToString("yyyy-MM-dd"), correlation, user),
js.SerializeToBuilder(new List<DebugState> { state }).ToString());
}