Esempio n. 1
0
        /// <summary>
        /// 初始化控制中心
        /// </summary>
        public void InitControlServer()
        {
            if (ControlServerService == null)
            {
                ControlServerService = new ControlServerService();
            }

            RegisterTimer          = new DispatcherTimer();
            RegisterTimer.Interval = TimeSpan.FromSeconds(60);
            RegisterTimer.Tick    += RegisterTimer_Tick;
            RegisterTimer.Start();
            RegisterTimer_Tick(null, null);

            GetProcessesTimer          = new DispatcherTimer();
            GetProcessesTimer.Interval = TimeSpan.FromSeconds(30);
            GetProcessesTimer.Tick    += GetProcessesTimer_Tick;
            GetProcessesTimer.Start();
            GetProcessesTimer_Tick(null, null);

            //GetRunProcesssTimer
            GetRunProcesssTimer          = new DispatcherTimer();
            GetRunProcesssTimer.Interval = TimeSpan.FromSeconds(30);
            GetRunProcesssTimer.Tick    += GetRunProcesssTimer_Tick;
            GetRunProcesssTimer.Start();
            GetRunProcesssTimer_Tick(null, null);

            //TEST
            //ControlServerService.UpdateRunStatus("测试流程发布第二个", "2.0.8", ControlServerService.enProcessStatus.Exception);
            //ControlServerService.Log("test1","2.0.1","DEBUG","测试日志22222");
        }
Esempio n. 2
0
        /// <summary>
        /// 获取流程列表定时器处理函数
        /// </summary>
        /// <param name="sender">发送者</param>
        /// <param name="e">参数</param>
        private void GetProcessesTimer_Tick(object sender, EventArgs e)
        {
            GetProcessesTimer.Stop();

            Task.Run(async() => {
                var jArr = await ControlServerService.GetProcesses();

                //下载安装包
                if (jArr != null)
                {
                    bool needRefresh = false;
                    for (int i = 0; i < jArr.Count; i++)
                    {
                        var jObj          = jArr[i];
                        var nupkgName     = jObj["PROCESSNAME"].ToString();
                        var nupkgVersion  = jObj["PROCESSVERSION"].ToString();
                        var nupkgFileName = jObj["NUPKGFILENAME"].ToString();
                        var nupkgUrl      = jObj["NUPKGURL"].ToString();

                        //判断本地是否存在该包,不存在则下载下来
                        if (!System.IO.File.Exists(System.IO.Path.Combine(PackagesDir, nupkgFileName)))
                        {
                            var downloadAndSavePath = await nupkgUrl.DownloadFileAsync(PackagesDir, nupkgFileName);
                            needRefresh             = true;
                        }

                        //比当前包版本高的全删除(Robot默认只能运行高版本的,所以不删除会导致设计理念冲突)
                        var repo        = PackageRepositoryFactory.Default.CreateRepository(PackagesDir);
                        var pkgNameList = repo.FindPackagesById(nupkgName);
                        foreach (var item in pkgNameList)
                        {
                            if (item.Version > new SemanticVersion(nupkgVersion))
                            {
                                //删除该包
                                var file = PackagesDir + @"\" + nupkgName + @"." + item.Version.ToString() + ".nupkg";
                                Common.DeleteFile(file);
                            }
                        }
                    }

                    if (needRefresh)
                    {
                        Common.RunInUI(() =>
                        {
                            RefreshAllPackages();
                        });
                    }
                }

                GetProcessesTimer.Start();
            });
        }
Esempio n. 3
0
        /// <summary>
        /// 获取当前应运行的流程定时器触发函数
        /// </summary>
        /// <param name="sender">发送者</param>
        /// <param name="e">参数</param>
        private void GetRunProcesssTimer_Tick(object sender, EventArgs e)
        {
            GetRunProcesssTimer.Stop();

            Task.Run(async() =>
            {
                var jObj = await ControlServerService.GetRunProcess();
                if (jObj != null)
                {
                    var processName    = jObj["PROCESSNAME"].ToString();
                    var processVersion = jObj["PROCESSVERSION"].ToString();

                    //停止所有其它正在运行的流程,启动这个流程(如果该流程已经启动,则不操作)
                    PackageService.Run(processName, processVersion);
                }

                GetRunProcesssTimer.Start();
            });
        }
Esempio n. 4
0
        private void EndRun(RunManager obj)
        {
            SharedObject.Instance.Output(SharedObject.enOutputType.Trace, ResxIF.GetString("EndProcessRun")); //流程运行结束

            Task.Run(async() =>
            {
                if (obj.HasException)
                {
                    await ControlServerService.UpdateRunStatus(obj.m_packageItem.Name, obj.m_packageItem.Version, ControlServerService.enProcessStatus.Exception);
                }
                else
                {
                    await ControlServerService.UpdateRunStatus(obj.m_packageItem.Name, obj.m_packageItem.Version, ControlServerService.enProcessStatus.Stop);
                }
            });

            if (ViewModelLocator.Instance.UserPreferences.IsEnableScreenRecorder)
            {
                SharedObject.Instance.Output(SharedObject.enOutputType.Trace, ResxIF.GetString("EndScreenRecording")); //屏幕录像结束
                FFmpegService.StopCaptureScreen();
                FFmpegService = null;
            }

            Common.RunInUI(() => {
                m_view.Show();
                m_view.Activate();

                obj.m_packageItem.IsRunning = false;

                //由于有可能列表已经刷新,所以需要重置IsRunning状态,为了方便,全部重置
                foreach (var pkg in PackageItems)
                {
                    pkg.IsRunning = false;
                }

                IsWorkflowRunning     = false;
                WorkflowRunningName   = "";
                WorkflowRunningStatus = "";
            });
        }
Esempio n. 5
0
 /// <summary>
 /// 注册定时器处理函数
 /// </summary>
 /// <param name="sender">发送者</param>
 /// <param name="e">参数</param>
 private void RegisterTimer_Tick(object sender, EventArgs e)
 {
     ControlServerService.Register();
 }