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();
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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;
                });
            }
        }
Ejemplo n.º 5
0
        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;
                });
            }
        }