/// <summary> /// Méthode effectuant des préparations avant la lecture du scénario /// </summary> private bool Preliminaries() { try { //Initialisation sti = new StepTaskInfo(); scenarioResult = new ScenarioResult(scenarioToPlay.Name + "_Results", scenarioToPlay.Id); scenarioResult.BeginTime = DateTime.Now; listOfActorsID = ScenarioTools.GetActorsOfScenario(scenarioToPlay); //Envois du message StardScenario aux testeurs acteur foreach (short testerId in listOfActorsID) { if (MainEntry.listTesters.Tester[testerId].IsConnected) { MainEntry.listTesters.Tester[testerId].StartScenario(); } else { return(false); } } return(true); } catch { return(false); } }
/// <summary> /// Méthode de départ pour le lancement de la lecture d'un scénario /// </summary> public void PlayScenario() { isCrashed = false; this.ChangeStatus(ScenarioPlayerSatus.VerifyScenario); //Verification du scenario - Etape 1 if (ScenarioTools.VerifyScenario(scenarioToPlay).IsCorrect) { msg = "Scenario Valide"; } else { isCrashed = true; crashMsg = "Scenario non valide"; this.ChangeStatus(ScenarioPlayerSatus.error); } //Initialisation des testeurs - Etape 2 if (isCrashed == false) { this.ChangeStatus(ScenarioPlayerSatus.initTesters); if (Preliminaries()) { Trace.WriteInfo("Testeurs prêt"); } else { isCrashed = true; crashMsg = "Testeurs non prêt"; Trace.WriteInfo(crashMsg); this.ChangeStatus(ScenarioPlayerSatus.error); } } if (!isCrashed) { //On donne l'ordre de charger le scenario sur chaque tester - Etape 3 this.ChangeStatus(ScenarioPlayerSatus.sendScenario); if (SendAndLoadScenario()) { Trace.WriteInfo("Envoi et chargement du scenario OK"); } else { isCrashed = true; Trace.WriteError("Envoi et chargement du scenario KO"); } } //On joue les steps - Etape 4 this.ChangeStatus(ScenarioPlayerSatus.running); if (!isCrashed) { foreach (GenericStep currentStep in scenarioToPlay.Steps) { if (PlayStep(currentStep.NumStep)) { Trace.WriteInfo("Lecture du Step " + ((StepsName)currentStep.NameId).ToString() + " OK"); //On copie le résultat du step dans scenarioResult scenarioResult.AddStepResults(stepResult); //On indique qu'un step à été joué this.ChangeStatus(ScenarioPlayerSatus.stepPlayed); } else { //erreur fatal Trace.WriteError("Lecture du Step " + ((StepsName)currentStep.NameId).ToString() + " KO"); //isCrashed = true; scenarioResult.AddStepResults(stepResult); break; } Thread.Sleep(2000); } } if (!isCrashed) { //On affiche le scenario dans tout les cas dans l'IHM MainEntry._ScenarioEvents.OnNewScenarioResultToView(scenarioResult, null); //On enregistre les données si le scenario a été validé if (scenarioToPlay.IsValidate) { MainEntry.scenarioSolution.Scenarios[scenarioResult.IdScenario].AddResult(scenarioResult); } } //On ferme les threads ouverts par les testeurs if (StopScenario()) { Trace.WriteInfo("Player bien terminé"); //Fin du scenario - Etape 6 this.ChangeStatus(ScenarioPlayerSatus.played); } else { Trace.WriteInfo("Problème lors de la fermeture du Player pour le scenario"); } }