private void RunScript() { if (_selectedTabScriptActions.Items.Count == 0) { Notify("You must first build the script by adding commands!", Color.Yellow); return; } if (ScriptFilePath == null) { Notify("You must first save your script before you can run it!", Color.Yellow); return; } SaveAllFiles(); Notify("Running Script..", Color.White); if (CurrentEngine != null) { ((Form)CurrentEngine).Close(); } //initialize Logger switch (_appSettings.EngineSettings.LoggingSinkType) { case SinkType.File: if (string.IsNullOrEmpty(_appSettings.EngineSettings.LoggingValue1.Trim())) { _appSettings.EngineSettings.LoggingValue1 = Path.Combine(Folders.GetFolder(FolderType.LogFolder), "OpenBots Engine Logs.txt"); } EngineLogger = new Logging().CreateFileLogger(_appSettings.EngineSettings.LoggingValue1, Serilog.RollingInterval.Day, _appSettings.EngineSettings.MinLogLevel); break; case SinkType.HTTP: EngineLogger = new Logging().CreateHTTPLogger(ScriptProject.ProjectName, _appSettings.EngineSettings.LoggingValue1, _appSettings.EngineSettings.MinLogLevel); break; case SinkType.SignalR: string[] groupNames = _appSettings.EngineSettings.LoggingValue3.Split(',').Select(x => x.Trim()).ToArray(); string[] userIDs = _appSettings.EngineSettings.LoggingValue4.Split(',').Select(x => x.Trim()).ToArray(); EngineLogger = new Logging().CreateSignalRLogger(ScriptProject.ProjectName, _appSettings.EngineSettings.LoggingValue1, _appSettings.EngineSettings.LoggingValue2, groupNames, userIDs, _appSettings.EngineSettings.MinLogLevel); break; } //initialize Engine CurrentEngine = new frmScriptEngine(ScriptFilePath, ScriptProjectPath, this, EngineLogger, null, null, null, false, _isDebugMode); //executionManager = new ScriptExectionManager(); //executionManager.CurrentlyExecuting = true; //executionManager.ScriptName = new System.IO.FileInfo(ScriptFilePath).Name; CurrentEngine.CallBackForm = this; ((frmScriptEngine)CurrentEngine).Show(); }
private void RunScript() { if (_selectedTabScriptActions.Items.Count == 0) { Notify("You must first build the script by adding commands!"); return; } if (ScriptFilePath == null) { Notify("You must first save your script before you can run it!"); return; } TabPage currentTab = uiScriptTabControl.SelectedTab; foreach (TabPage openTab in uiScriptTabControl.TabPages) { if (openTab.Text.Contains(" *")) { uiScriptTabControl.SelectedTab = openTab; //clear selected items ClearSelectedListViewItems(); SaveToFile(false); // Save & Run! } } uiScriptTabControl.SelectedTab = currentTab; Notify("Running Script.."); //initialize Logger switch (_appSettings.EngineSettings.LoggingSinkType) { case SinkType.File: if (string.IsNullOrEmpty(_appSettings.EngineSettings.LoggingValue1.Trim())) { _appSettings.EngineSettings.LoggingValue1 = Path.Combine(Folders.GetFolder(FolderType.LogFolder), "taskt Engine Logs.txt"); } EngineLogger = new Logging().CreateFileLogger(_appSettings.EngineSettings.LoggingValue1, Serilog.RollingInterval.Day, _appSettings.EngineSettings.MinLogLevel); break; case SinkType.HTTP: EngineLogger = new Logging().CreateHTTPLogger(_appSettings.EngineSettings.LoggingValue1, _appSettings.EngineSettings.MinLogLevel); break; case SinkType.SignalR: string[] groupNames = _appSettings.EngineSettings.LoggingValue3.Split(',').Select(x => x.Trim()).ToArray(); string[] userIDs = _appSettings.EngineSettings.LoggingValue4.Split(',').Select(x => x.Trim()).ToArray(); EngineLogger = new Logging().CreateSignalRLogger(_appSettings.EngineSettings.LoggingValue1, _appSettings.EngineSettings.LoggingValue2, groupNames, userIDs, _appSettings.EngineSettings.MinLogLevel); break; } //initialize Engine CurrentEngine = new frmScriptEngine(ScriptFilePath, this, EngineLogger, null, null, false, _isDebugMode); //executionManager = new ScriptExectionManager(); //executionManager.CurrentlyExecuting = true; //executionManager.ScriptName = new System.IO.FileInfo(ScriptFilePath).Name; CurrentEngine.CallBackForm = this; ((frmScriptEngine)CurrentEngine).Show(); }
private void RunOBScript(int startLineNumber = 1) { if (_selectedTabScriptActions.Items.Count == 0) { Notify("You must first build the script by adding commands!", Color.Yellow); return; } if (ScriptFilePath == null) { Notify("You must first save your script before you can run it!", Color.Yellow); return; } if (!SaveAllFiles()) { return; } Notify("Running Script..", Color.White); try { if (CurrentEngine != null) { ((Form)CurrentEngine).Close(); } } catch (Exception ex) { //failed to close engine form Console.WriteLine(ex); } //initialize Logger switch (_appSettings.EngineSettings.LoggingSinkType) { case SinkType.File: if (string.IsNullOrEmpty(_appSettings.EngineSettings.LoggingValue1.Trim())) { _appSettings.EngineSettings.LoggingValue1 = Path.Combine(Folders.GetFolder(FolderType.LogFolder), "OpenBots Engine Logs.txt"); } EngineLogger = new Logging().CreateFileLogger(_appSettings.EngineSettings.LoggingValue1, Serilog.RollingInterval.Day, _appSettings.EngineSettings.MinLogLevel); break; case SinkType.HTTP: EngineLogger = new Logging().CreateHTTPLogger(ScriptProject.ProjectName, _appSettings.EngineSettings.LoggingValue1, _appSettings.EngineSettings.MinLogLevel); break; } EngineContext engineContext = new EngineContext(ScriptFilePath, ScriptProjectPath, AContainer, this, EngineLogger, null, null, null, null, null, startLineNumber); //initialize Engine CurrentEngine = new frmScriptEngine(engineContext, false, _isDebugMode); CurrentEngine.ScriptEngineContext.ScriptBuilder = this; IsScriptRunning = true; ((frmScriptEngine)CurrentEngine).Show(); }
public override void RunCommand(object sender) { AutomationEngineInstance currentScriptEngine = (AutomationEngineInstance)sender; if (currentScriptEngine.ScriptEngineUI == null) { RunServerTask(sender); return; } var childTaskPath = v_taskPath.ConvertUserVariableToString(currentScriptEngine); if (!File.Exists(childTaskPath)) { throw new FileNotFoundException("Task file was not found"); } frmScriptEngine parentEngine = (frmScriptEngine)currentScriptEngine.ScriptEngineUI; string parentTaskPath = currentScriptEngine.ScriptEngineUI.FilePath; int parentDebugLine = currentScriptEngine.ScriptEngineUI.DebugLineNumber; //create variable list InitializeVariableLists(currentScriptEngine); string projectPath = parentEngine.ProjectPath; _newEngine = new frmScriptEngine(childTaskPath, projectPath, (frmScriptBuilder)CurrentScriptBuilder, ((frmScriptBuilder)CurrentScriptBuilder).EngineLogger, _variableList, null, currentScriptEngine.AppInstances, false, parentEngine.IsDebugMode); _newEngine.IsChildEngine = true; _newEngine.IsHiddenTaskEngine = true; if (IsSteppedInto) { _newEngine.IsNewTaskSteppedInto = true; _newEngine.IsHiddenTaskEngine = false; } ((frmScriptBuilder)CurrentScriptBuilder).EngineLogger.Information("Executing Child Task: " + Path.GetFileName(childTaskPath)); ((frmScriptEngine)currentScriptEngine.ScriptEngineUI).Invoke((Action) delegate() { ((frmScriptEngine)currentScriptEngine.ScriptEngineUI).TopMost = false; }); Application.Run(_newEngine); if (_newEngine.ClosingAllEngines) { currentScriptEngine.ScriptEngineUI.ClosingAllEngines = true; currentScriptEngine.ScriptEngineUI.CloseWhenDone = true; } // Update Current Engine Context Post Run Task UpdateCurrentEngineContext(currentScriptEngine, _newEngine.EngineInstance); ((frmScriptBuilder)CurrentScriptBuilder).EngineLogger.Information("Resuming Parent Task: " + Path.GetFileName(parentTaskPath)); if (parentEngine.IsDebugMode) { ((frmScriptEngine)currentScriptEngine.ScriptEngineUI).Invoke((Action) delegate() { parentEngine.TopMost = true; parentEngine.IsHiddenTaskEngine = true; if ((IsSteppedInto || !_newEngine.IsHiddenTaskEngine) && !_newEngine.IsNewTaskResumed && !_newEngine.IsNewTaskCancelled) { parentEngine.CallBackForm.CurrentEngine = parentEngine; parentEngine.CallBackForm.IsScriptSteppedInto = true; parentEngine.IsHiddenTaskEngine = false; //toggle running flag to allow for tab selection parentEngine.CallBackForm.IsScriptRunning = false; ((frmScriptBuilder)parentEngine.CallBackForm).OpenFile(parentTaskPath); parentEngine.CallBackForm.IsScriptRunning = true; parentEngine.UpdateLineNumber(parentDebugLine + 1); parentEngine.AddStatus("Pausing Before Execution"); } else if (_newEngine.IsNewTaskResumed) { parentEngine.CallBackForm.CurrentEngine = parentEngine; parentEngine.IsNewTaskResumed = true; parentEngine.IsHiddenTaskEngine = true; parentEngine.CallBackForm.IsScriptSteppedInto = false; parentEngine.CallBackForm.IsScriptPaused = false; parentEngine.ResumeParentTask(); } else if (_newEngine.IsNewTaskCancelled) { parentEngine.uiBtnCancel_Click(null, null); } else //child task never stepped into { parentEngine.IsHiddenTaskEngine = false; } }); } else { ((frmScriptEngine)currentScriptEngine.ScriptEngineUI).Invoke((Action) delegate() { parentEngine.TopMost = true; }); } }
public override void RunCommand(object sender) { AutomationEngineInstance currentScriptEngine = (AutomationEngineInstance)sender; var childTaskPath = v_taskPath.ConvertUserVariableToString(currentScriptEngine); frmScriptEngine parentEngine = (frmScriptEngine)currentScriptEngine.TasktEngineUI; string parentTaskPath = currentScriptEngine.TasktEngineUI.FilePath; int parentDebugLine = currentScriptEngine.TasktEngineUI.DebugLineNumber; //create variable list var variableList = new List <ScriptVariable>(); var variableReturnList = new List <ScriptVariable>(); foreach (DataRow rw in v_VariableAssignments.Rows) { var variableName = (string)rw.ItemArray[0]; object variableValue = null; if (((string)rw.ItemArray[1]).StartsWith("{") && ((string)rw.ItemArray[1]).EndsWith("}")) { variableValue = ((string)rw.ItemArray[1]).ConvertUserVariableToObject(currentScriptEngine); } if (variableValue is string || variableValue == null) { variableValue = ((string)rw.ItemArray[1]).ConvertUserVariableToString(currentScriptEngine); } var variableReturn = (string)rw.ItemArray[2]; variableList.Add(new ScriptVariable { VariableName = variableName.Replace("{", "").Replace("}", ""), VariableValue = variableValue }); if (variableReturn == "Yes") { variableReturnList.Add(new ScriptVariable { VariableName = variableName.Replace("{", "").Replace("}", ""), VariableValue = variableValue }); } } NewEngine = new frmScriptEngine(childTaskPath, (frmScriptBuilder)CurrentScriptBuilder, ((frmScriptBuilder)CurrentScriptBuilder).EngineLogger, variableList, null, false, parentEngine.IsDebugMode); NewEngine.IsChildEngine = true; NewEngine.IsHiddenTaskEngine = true; if (IsSteppedInto) { NewEngine.IsNewTaskSteppedInto = true; NewEngine.IsHiddenTaskEngine = false; } ((frmScriptBuilder)CurrentScriptBuilder).EngineLogger.Information("Executing Child Task: " + Path.GetFileName(childTaskPath)); ((frmScriptEngine)currentScriptEngine.TasktEngineUI).Invoke((Action) delegate() { ((frmScriptEngine)currentScriptEngine.TasktEngineUI).TopMost = false; }); Application.Run(NewEngine); if (NewEngine.ClosingAllEngines) { currentScriptEngine.TasktEngineUI.ClosingAllEngines = true; currentScriptEngine.TasktEngineUI.CloseWhenDone = true; } //get new variable list from the new task engine after it finishes running var newVariableList = NewEngine.EngineInstance.VariableList; foreach (var variable in variableReturnList) { //check if the variables we wish to return are in the new variable list if (newVariableList.Exists(x => x.VariableName == variable.VariableName)) { //if yes, get that variable from the new list ScriptVariable newTemp = newVariableList.Where(x => x.VariableName == variable.VariableName).FirstOrDefault(); //check if that variable previously existed in the current engine if (currentScriptEngine.VariableList.Exists(x => x.VariableName == newTemp.VariableName)) { //if yes, overwrite it ScriptVariable currentTemp = currentScriptEngine.VariableList.Where(x => x.VariableName == newTemp.VariableName).FirstOrDefault(); currentScriptEngine.VariableList.Remove(currentTemp); } //Add to current engine variable list currentScriptEngine.VariableList.Add(newTemp); } } //get errors from new engine (if any) var newEngineErrors = NewEngine.EngineInstance.ErrorsOccured; if (newEngineErrors.Count > 0) { currentScriptEngine.ChildScriptFailed = true; foreach (var error in newEngineErrors) { currentScriptEngine.ErrorsOccured.Add(error); } } ((frmScriptBuilder)CurrentScriptBuilder).EngineLogger.Information("Resuming Parent Task: " + Path.GetFileName(parentTaskPath)); if (parentEngine.IsDebugMode) { ((frmScriptEngine)currentScriptEngine.TasktEngineUI).Invoke((Action) delegate() { parentEngine.TopMost = true; parentEngine.IsHiddenTaskEngine = true; if ((IsSteppedInto || !NewEngine.IsHiddenTaskEngine) && !NewEngine.IsNewTaskResumed && !NewEngine.IsNewTaskCancelled) { parentEngine.CallBackForm.CurrentEngine = parentEngine; parentEngine.CallBackForm.IsScriptSteppedInto = true; parentEngine.IsHiddenTaskEngine = false; //toggle running flag to allow for tab selection parentEngine.CallBackForm.IsScriptRunning = false; ((frmScriptBuilder)parentEngine.CallBackForm).OpenFile(parentTaskPath); parentEngine.CallBackForm.IsScriptRunning = true; parentEngine.UpdateLineNumber(parentDebugLine + 1); parentEngine.AddStatus("Pausing Before Execution"); } else if (NewEngine.IsNewTaskResumed) { parentEngine.CallBackForm.CurrentEngine = parentEngine; parentEngine.IsNewTaskResumed = true; parentEngine.IsHiddenTaskEngine = true; parentEngine.CallBackForm.IsScriptSteppedInto = false; parentEngine.CallBackForm.IsScriptPaused = false; parentEngine.ResumeParentTask(); } else if (NewEngine.IsNewTaskCancelled) { parentEngine.uiBtnCancel_Click(null, null); } }); } else { ((frmScriptEngine)currentScriptEngine.TasktEngineUI).Invoke((Action) delegate() { parentEngine.TopMost = true; }); } }