Exemple #1
0
        /// <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);
        }
Exemple #2
0
 public WorkflowLog(Model.ImportedEventLog importedData)
 {
     if (importedData.Timestamp == null)
     {
         WorkflowTraces = MakeWftsBasedOnOrder(importedData);
     }
     else
     {
         WorkflowTraces = MakeWftsBasedOnTimestamp(importedData);
     }
 }
Exemple #3
0
        /// <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);
        }