/// <summary> /// Replays the content of the EventLog on the given PetriNet /// </summary> /// <param name="petriNet"></param> /// <param name="eventLog"></param> /// <returns></returns> /// <author>Jannik Arndt</author> public static TokenReplayResult Replay(PetriNet petriNet, EventLog eventLog) { var result = new TokenReplayResult { NumberOfCases = eventLog.Cases.Count }; foreach (var Case in eventLog.Cases) { var exceptionThrown = false; petriNet.ResetTokens(); foreach (var Event in Case.EventList) { try { petriNet.FireTransition(Event.Name); } catch (NullReferenceException) { result.FailedCasesTransitionNotFound.Add(Case); exceptionThrown = true; break; } catch (TransitionNotEnabledException) { result.FailedCasesTransitionNotEnabled.Add(Case); exceptionThrown = true; break; } } if (!exceptionThrown) result.SuccessfulReplays++; } return result; }
public void GetTransitionsNotFoundAsDictionaryTest() { var case1 = new Case("case1") { EventList = new List<Event> { new Event("A"), new Event("B") } }; var case2 = new Case("case2") { EventList = new List<Event> { new Event("C"), new Event("D") } }; var result = new TokenReplayResult { FailedCasesTransitionNotFound = new List<Case> { case1, case1, case2 }, }; var dict = (Dictionary<string, int>)result.GetTransitionsNotFoundAsDictionary(); Assert.AreEqual(2, dict["A, B"]); Assert.AreEqual(1, dict["C, D"]); }
public void ToDictionaryTest() { var result = new TokenReplayResult { FailedCasesTransitionNotEnabled = new List<Case> { new Case(), new Case() }, FailedCasesTransitionNotFound = new List<Case> { new Case() }, NumberOfCases = 5, SuccessfulReplays = 2 }; var dict = (Dictionary<string, string>)result.ToDictionary(); Assert.AreEqual("2", dict["Successful Replays"]); Assert.AreEqual("40%", dict["Success Rate"]); Assert.AreEqual("2", dict["Transitions not enabled"]); Assert.AreEqual("1", dict["Transitions not found"]); }
/// <summary> /// Replays the content of the EventLog on the given PetriNet /// </summary> /// <param name="petriNet"></param> /// <param name="eventLog"></param> /// <returns></returns> /// <author>Jannik Arndt</author> public static TokenReplayResult Replay(PetriNet petriNet, EventLog eventLog) { var result = new TokenReplayResult { NumberOfCases = eventLog.Cases.Count }; foreach (var Case in eventLog.Cases) { var exceptionThrown = false; petriNet.ResetTokens(); foreach (var Event in Case.EventList) { try { petriNet.FireTransition(Event.Name); } catch (NullReferenceException) { result.FailedCasesTransitionNotFound.Add(Case); exceptionThrown = true; break; } catch (TransitionNotEnabledException) { result.FailedCasesTransitionNotEnabled.Add(Case); exceptionThrown = true; break; } } if (!exceptionThrown) { result.SuccessfulReplays++; } } return(result); }