/// <summary> /// Fills workflow trace shells stored in WorkflowTraces field with with activities from loaded data, then sorts them based on given timestamp /// and converts them into ordinary workflow traces. /// </summary> /// <param name="importedData">Loaded data from an event log.</param> /// <returns>List of filled workflow traces.</returns> private List <WorkflowTrace> MakeWftsBasedOnTimestamp(Model.ImportedEventLog importedData) { var traces = MakeEmptyTimestampedWfts(importedData.Contents.GetColumn <string>(importedData.CaseId)); for (int i = 0; i < importedData.Contents.RowCount; i++) { var row = importedData.Contents.TryGetRow <string>(i); foreach (TimestampedWorkflowTrace wft in traces) { if (wft.CaseId == row.Value.Get(importedData.CaseId)) { bool parseSuccess = DateTime.TryParse(row.Value.Get(importedData.Timestamp), out DateTime timestamp); if (!parseSuccess && wft.Activities.Count > 0) { timestamp = new DateTime(); } wft.AddActivity(row.Value.Get(importedData.Activity), timestamp); } } } List <WorkflowTrace> outTraces = new List <WorkflowTrace>(); foreach (TimestampedWorkflowTrace twft in traces) { outTraces.Add(twft.ConvertToWorkflowTrace()); } return(outTraces); }
public WorkflowLog(Model.ImportedEventLog importedData) { if (importedData.Timestamp == null) { WorkflowTraces = MakeWftsBasedOnOrder(importedData); } else { WorkflowTraces = MakeWftsBasedOnTimestamp(importedData); } }
/// <summary> /// Fills workflow trace shells stored in WorkflowTraces field with activities based on how they are ordered in loaded data from an event log. /// </summary> /// <param name="importedData">Loaded data from an event log.</param> /// <returns>List of filled workflow traces.</returns> private List <WorkflowTrace> MakeWftsBasedOnOrder(Model.ImportedEventLog importedData) { var traces = MakeEmptyWfts(importedData.Contents.GetColumn <string>(importedData.CaseId)); for (int i = 0; i < importedData.Contents.RowCount; i++) { var row = importedData.Contents.TryGetRow <string>(i); foreach (WorkflowTrace wft in traces) { if (wft.CaseId == row.Value.Get(importedData.CaseId)) { wft.AddActivity(row.Value.Get(importedData.Activity)); } } } return(traces); }