/// <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"); }
/// <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(); }); }
/// <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(); }); }
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 = ""; }); }
/// <summary> /// 注册定时器处理函数 /// </summary> /// <param name="sender">发送者</param> /// <param name="e">参数</param> private void RegisterTimer_Tick(object sender, EventArgs e) { ControlServerService.Register(); }