public void ExecuteScript(string filePath) { CurrentStatus = EngineStatus.Running; FileName = filePath; try { engineLogger.Information("Script Path: " + filePath); //create stopwatch for metrics tracking sw = new System.Diagnostics.Stopwatch(); sw.Start(); //log starting ReportProgress("Bot Engine Started: " + DateTime.Now.ToString()); //parse file or streamed XML from tasktServer ReportProgress("Deserializing File"); var automationScript = Core.Script.Script.DeserializeFile(filePath); //track variables and app instances ReportProgress("Creating Variable List"); VariableList = automationScript.Variables; ReportProgress("Creating App Instance Tracking List"); //create app instances and merge in global instances AppInstances = GlobalAppInstances.GetInstances(); //execute commands foreach (var executionCommand in automationScript.Commands) { if (IsCancellationPending) { ReportProgress("Cancelling Script"); ScriptFinished(ScriptFinishedEventArgs.ScriptFinishedResult.Cancelled); return; } ExecuteCommand(executionCommand); } if (IsCancellationPending) { //mark cancelled - handles when cancelling and user defines 1 parent command or else it will show successful ScriptFinished(ScriptFinishedEventArgs.ScriptFinishedResult.Cancelled); } else { //mark finished ScriptFinished(ScriptFinishedEventArgs.ScriptFinishedResult.Successful); } } catch (Exception ex) { ScriptFinished(ScriptFinishedEventArgs.ScriptFinishedResult.Error, ex.ToString()); } }
public void ExecuteScript(string data, bool dataIsFile) { Core.Client.EngineBusy = true; try { CurrentStatus = EngineStatus.Running; //create stopwatch for metrics tracking sw = new System.Diagnostics.Stopwatch(); sw.Start(); //log starting ReportProgress("Bot Engine Started: " + DateTime.Now.ToString()); //get automation script Core.Script.Script automationScript; if (dataIsFile) { ReportProgress("Deserializing File"); engineLogger.Information("Script Path: " + data); FileName = data; automationScript = Core.Script.Script.DeserializeFile(data); } else { ReportProgress("Deserializing XML"); automationScript = Core.Script.Script.DeserializeXML(data); } //track variables and app instances ReportProgress("Creating Variable List"); VariableList = automationScript.Variables; ReportProgress("Creating App Instance Tracking List"); //create app instances and merge in global instances this.AppInstances = new Dictionary <string, object>(); var GlobalInstances = GlobalAppInstances.GetInstances(); foreach (var instance in GlobalInstances) { this.AppInstances.Add(instance.Key, instance.Value); } //execute commands foreach (var executionCommand in automationScript.Commands) { if (IsCancellationPending) { ReportProgress("Cancelling Script"); ScriptFinished(ScriptFinishedEventArgs.ScriptFinishedResult.Cancelled); return; } ExecuteCommand(executionCommand); } if (IsCancellationPending) { //mark cancelled - handles when cancelling and user defines 1 parent command or else it will show successful ScriptFinished(ScriptFinishedEventArgs.ScriptFinishedResult.Cancelled); } else { //mark finished ScriptFinished(ScriptFinishedEventArgs.ScriptFinishedResult.Successful); } } catch (Exception ex) { ScriptFinished(ScriptFinishedEventArgs.ScriptFinishedResult.Error, ex.ToString()); } Core.Client.EngineBusy = false; }