public T UseScheduler(Scheduler scheduler) { _schedulerFactory = () => scheduler; _owned = false; return(this as T); }
public FileTransferMethod GetFileTransferMethod(long submittedJobInfoId, AdaptorUser loggedUser) { log.Info("Getting file transfer method for submitted job info ID " + submittedJobInfoId + " with user " + loggedUser.GetLogIdentification()); SubmittedJobInfo jobInfo = LogicFactory.GetLogicFactory().CreateJobManagementLogic(unitOfWork).GetSubmittedJobInfoById(submittedJobInfoId, loggedUser); var certificateGenerator = new CertificateGenerator.CertificateGenerator(); certificateGenerator.GenerateKey(2048); string publicKey = certificateGenerator.DhiPublicKey(); string jobDir = FileSystemUtils.GetJobClusterDirectoryPath(jobInfo.Specification.FileTransferMethod.Cluster.LocalBasepath, jobInfo.Specification); var transferMethod = new FileTransferMethod { Protocol = jobInfo.Specification.FileTransferMethod.Protocol, ServerHostname = jobInfo.Specification.FileTransferMethod.ServerHostname, SharedBasePath = jobDir, Credentials = new AsymmetricKeyCredentials { Username = jobInfo.Specification.ClusterUser.Username, PrivateKey = certificateGenerator.DhiPrivateKey(), PublicKey = publicKey } }; SchedulerFactory.GetInstance(jobInfo.Specification.Cluster.SchedulerType).CreateScheduler(jobInfo.Specification.Cluster).AllowDirectFileTransferAccessForUserToJob(publicKey, jobInfo); return(transferMethod); }
public async Task <IActionResult> CreateCallback([FromQuery] string cron, [FromQuery] string callback = "http%3A%2F%2Flocalhost%3A5000%2Fscheduler%2Fcallback") { Logger.LogInformation($"{nameof(cron)}: [{cron}], {nameof(callback)}: [{callback}]"); if (cron == null) { return(new JsonResult(new { Code = 400, Message = "CRON表达式不能为空" })); } // 调度器 if (Scheduler == null) { Scheduler = await SchedulerFactory.GetScheduler(); } await Scheduler.Start(); // 触发器 var trigger = TriggerBuilder.Create() .WithCronSchedule(cron) .Build(); // 任务器 var jobDeatail = JobBuilder.Create <CallbackJob>() .UsingJobData(nameof(callback), callback) .Build(); await Scheduler.ScheduleJob(jobDeatail, trigger); return(new JsonResult(new { Code = 200, Message = "定时回调任务创建成功" })); }
public async Task CreateSchedulerForAction_PassesTimerCorrectly() { //arrange var timer = Substitute.For <IHandleTime>(); var schedule = new Schedule { Delay = TimeSpan.Zero, IterationDuration = TimeSpan.FromSeconds(1), RepeatCount = 1 }; var action = Substitute.For <ICauseScheduledAnarchy>(); var sut = new SchedulerFactory(timer); //act var scheduler = sut.CreateSchedulerForAction(schedule, action); scheduler.StartSchedule(); // as we can't await StartSchedule (intentionally) we have to resort to a short delay to ensure the timer is called consistently await Task.Delay(100); //assert await timer.Received(1).DelayInitial(schedule, Arg.Any <CancellationToken>()); }
public void SimpleCalculation() { const int NUM = 100; const int TOTAL = (NUM + 1) * NUM / 2; var sum = new int[NUM]; var list = new List <ITopologicalNode>(NUM); for (var i = 1; i <= NUM; i++) { var task = new DemoTask(i, n => sum[n - 1] = n); list.Add(task); } var provider = default(TopologicalTaskProvider); Assert.DoesNotThrow(() => provider = new TopologicalTaskProvider(list)); var scheduler = SchedulerFactory.Create(provider); scheduler.Run(); Assert.AreEqual(sum.Sum(), TOTAL); }
public override StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace) { try { values.TryGetValue("Resource", out StringBuilder tmp); var serializer = new Dev2JsonSerializer(); if (tmp != null) { var res = serializer.Deserialize <IScheduledResource>(tmp); Dev2Logger.Info("Get Scheduled History. " + tmp, GlobalConstants.WarewolfInfo); IList <IResourceHistory> resources; using (var model = SchedulerFactory.CreateModel(GlobalConstants.SchedulerFolderId, SecurityWrapper)) { resources = model.CreateHistory(res); } return(serializer.SerializeToBuilder(resources)); } Dev2Logger.Debug("No resource Provided", GlobalConstants.WarewolfDebug); return(serializer.SerializeToBuilder(new List <IResourceHistory>())); } catch (Exception e) { Dev2Logger.Error(e, GlobalConstants.WarewolfError); throw; } }
public void Start() { Trace.WriteLine("Service scheduler starting..."); try { Scheduler = SchedulerFactory.GetScheduler(); Trace.WriteLine("Firing triggers..."); Scheduler.Start(); Trace.WriteLine("Schedule Jobs"); foreach (var job in Jobs) { var jobDetail = JobBuilder.Create(job.GetType()) .WithIdentity(job.GetType().Name, "group1") .Build(); var tb = TriggerBuilder.Create() .WithIdentity(job.GetType().Name, "group1") .StartNow(); var trigger = job.GetSchedule(tb).Build(); Scheduler.ScheduleJob(jobDetail, trigger); } Trace.WriteLine("Do stuff"); } catch (TaskSchedulerException se) { Trace.WriteLine("Service failed to start"); Trace.WriteLine(se); } }
void TryExecute(Dictionary <string, StringBuilder> values, ExecuteMessage result, StringBuilder tmp, Dev2JsonSerializer serializer) { if (tmp != null) { var res = serializer.Deserialize <IScheduledResource>(tmp); Dev2Logger.Info("Save Scheduled Resource. Scheduled Resource:" + res, GlobalConstants.WarewolfInfo); using (var model = SchedulerFactory.CreateModel(GlobalConstants.SchedulerFolderId, SecurityWrapper)) { values.TryGetValue("UserName", out StringBuilder userName); values.TryGetValue("Password", out StringBuilder password); if (userName == null || password == null) { result.Message.Append(ErrorResource.NoUserNameAndPassword); result.HasError = true; } else { values.TryGetValue("PreviousResource", out StringBuilder previousTask); model.Save(res, userName.ToString(), password.ToString()); if (!string.IsNullOrEmpty(previousTask?.ToString()) && previousTask.ToString() != res.Name) { model.DeleteSchedule(new ScheduledResource(previousTask.ToString(), SchedulerStatus.Disabled, DateTime.MaxValue, null, null, Guid.NewGuid().ToString())); } } } } else { result.Message.Append(ErrorResource.NoResourceSelected); result.HasError = true; } }
public void CreateNewTask() { if (_schedulerViewModel.CurrentEnvironment?.Connection != null && !_schedulerViewModel.CurrentEnvironment.Connection.IsConnected) { ShowServerDisconnectedPopup(); return; } if (_schedulerViewModel.IsDirty) { _schedulerViewModel.PopupController.Show(Core.SchedulerUnsavedTaskMessage, Core.SchedulerUnsavedTaskHeader, MessageBoxButton.OK, MessageBoxImage.Error, null, false, true, false, false, false, false); return; } var dev2DailyTrigger = new Dev2DailyTrigger(new TaskServiceConvertorFactory(), new DailyTrigger()); var scheduleTrigger = SchedulerFactory.CreateTrigger(TaskState.Ready, dev2DailyTrigger); ScheduledResource scheduledResource = new ScheduledResource(Core.SchedulerNewTaskName + _newTaskCounter, SchedulerStatus.Enabled, scheduleTrigger.Trigger.Instance.StartBoundary, scheduleTrigger, string.Empty, Guid.NewGuid().ToString()); scheduledResource.OldName = scheduledResource.Name; var newres = _schedulerViewModel.ScheduledResourceModel.ScheduledResources[_schedulerViewModel.ScheduledResourceModel.ScheduledResources.Count == 1 ? 0 : _schedulerViewModel.ScheduledResourceModel.ScheduledResources.Count - 1]; _schedulerViewModel.ScheduledResourceModel.ScheduledResources[_schedulerViewModel.ScheduledResourceModel.ScheduledResources.Count == 1 ? 0 : _schedulerViewModel.ScheduledResourceModel.ScheduledResources.Count - 1] = scheduledResource; _schedulerViewModel.ScheduledResourceModel.ScheduledResources.Add(newres); _newTaskCounter++; _schedulerViewModel.NotifyOfPropertyChange(() => _schedulerViewModel.TaskList); _schedulerViewModel.SelectedTask = _schedulerViewModel.ScheduledResourceModel.ScheduledResources[_schedulerViewModel.ScheduledResourceModel.ScheduledResources.Count == 1 ? 1 : _schedulerViewModel.ScheduledResourceModel.ScheduledResources.Count - 2]; _schedulerViewModel.WorkflowName = string.Empty; _schedulerViewModel.SelectedTask.IsNew = true; ViewModelUtils.RaiseCanExecuteChanged(_schedulerViewModel.NewCommand); }
public void ExceptionTest() { var scheduler = SchedulerFactory.CreateSequentialTaskScheduler(101, i => throw new NotSupportedException()); scheduler.Run(); var exceptions = scheduler.Exceptions.ToArray(); Assert.AreEqual(exceptions.Select(ex => ex.Identifier).Sum(), 5050); foreach (var it in exceptions) { Assert.IsAssignableFrom <NotSupportedException>(it.InnerException); } scheduler = SchedulerFactory.CreateSequentialTaskScheduler(101, i => throw new NotSupportedException()); scheduler.RunSynchronously(); exceptions = scheduler.Exceptions.ToArray(); Assert.AreEqual(exceptions.Select(ex => ex.Identifier).Sum(), 5050); foreach (var it in exceptions) { Assert.IsAssignableFrom <NotSupportedException>(it.InnerException); } }
public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace) { var result = new ExecuteMessage { HasError = false }; Dev2Logger.Info("Delete Scheduled Resource Service"); StringBuilder tmp; values.TryGetValue("Resource", out tmp); var serializer = new Dev2JsonSerializer(); if (tmp != null) { var res = serializer.Deserialize <IScheduledResource>(tmp); Dev2Logger.Info("Delete Scheduled Resource Service." + res); using (var model = SchedulerFactory.CreateModel(GlobalConstants.SchedulerFolderId, SecurityWrapper)) { model.DeleteSchedule(res); } } else { Dev2Logger.Info("Delete Scheduled Resource Service. No Resource Selected"); result.Message.Append("No Resource Selected"); result.HasError = true; } return(serializer.SerializeToBuilder(result)); }
public ClusterNodeUsage GetCurrentClusterNodeUsage(long clusterNodeId, AdaptorUser loggedUser) { ClusterNodeType nodeType = GetClusterNodeTypeById(clusterNodeId); return(SchedulerFactory.GetInstance(nodeType.Cluster.SchedulerType).CreateScheduler(nodeType.Cluster) .GetCurrentClusterNodeUsage(nodeType)); }
public async Task <bool> Start() { var jobDatas = await JobHelper.GetActiveJobListAsync(); IScheduler scheduler = await SchedulerFactory.GetScheduler(); scheduler.JobFactory = IOCFactory; foreach (var jobData in jobDatas) { try { DateTime startTime = jobData.StartTime ?? DateTime.Now; DateTime?endTime = jobData.EndTime; ITrigger trigger = JobHelper.CreateTrigger(jobData.JobName, jobData.JobGroup, startTime, jobData.CronExpression, endTime); IJobDetail jobDetail = JobHelper.CreateDetail <JobExecute>(jobData.JobName, jobData.JobGroup, jobData.DeepCloneByXML()); await scheduler.ScheduleJob(jobDetail, trigger); } catch { } } await scheduler.Start(); return(true); }
public T UseSchedulerFactory(SchedulerFactory schedulerFactory) { _schedulerFactory = schedulerFactory; _owned = false; return(this as T); }
public static void SetAnonymousActorSchedulerFactory(SchedulerFactory schedulerFactory) { Guard.AgainstNull(schedulerFactory, "schedulerFactory"); _schedulerFactory = schedulerFactory; CreateAnonymousActorFactory(); }
public void Async() { var result = new int[101]; var scheduler = SchedulerFactory.CreateSequentialTaskScheduler(101, i => result[i] = i); scheduler.Run(); Assert.AreEqual(result.Sum(), 5050); }
public void Sync() { var sum = 0; var scheduler = SchedulerFactory.CreateSequentialTaskScheduler(101, i => sum += i); scheduler.RunSynchronously(); Assert.AreEqual(sum, 5050); }
protected override IScheduleTrigger ShowEditTriggerDialog() { var dailyTrigger = new DailyTrigger { StartBoundary = new DateTime(2013, 04, 01, 02, 21, 25) }; return(SchedulerFactory.CreateTrigger(TaskState.Disabled, new Dev2Trigger(null, dailyTrigger))); }
public IntervalChannelBuilder(ChannelBuilder <TChannel> builder, FiberFactory fiberFactory, SchedulerFactory schedulerFactory, TimeSpan interval) { _builder = builder; _interval = interval; _schedulerFactory = schedulerFactory; _fiberFactory = fiberFactory; }
public async Task <bool> StopAll() { var scheduer = await SchedulerFactory.GetScheduler(); await scheduer.PauseAll(); return(true); }
static AnonymousActor() { _fiberFactory = executor => new PoolFiber(executor); _schedulerFactory = () => new TimerScheduler(new PoolFiber()); CreateAnonymousActorFactory(); }
public T UseTimerScheduler() { TimerScheduler scheduler = null; _schedulerFactory = () => { return(scheduler ?? (scheduler = new TimerScheduler(new PoolFiber()))); }; _owned = true; return(this as T); }
/// <summary> /// 新版autofac注入 /// </summary> /// <param name="builder"></param> public void ConfigureContainer(ContainerBuilder builder) { builder.RegisterModule <AutofacModule>(); // 注册redis实例 builder.RegisterInstance(new RedisClient(Configuration)).SingleInstance().PropertiesAutowired(); builder.RegisterInstance(new LionMemoryCache("Cache")).SingleInstance().PropertiesAutowired(); var scheduler = new SchedulerFactory(Configuration).GetScheduler().Result; builder.RegisterInstance(scheduler).As <IScheduler>().PropertiesAutowired().SingleInstance(); #region 注册dbcontext上下文 使用属性注入 -- 但是使用上面的方式直接add好像也可以 //builder.Register(context => //{ // //var config = context.Resolve<IConfiguration>(); // var opt = new DbContextOptionsBuilder<LionDbContext>(); // opt.UseSqlServer(Configuration.GetConnectionString("SqlServerConnection")); // opt.ReplaceService<IMigrationsModelDiffer, MigrationsModelDifferWithoutForeignKey>(); // opt.EnableSensitiveDataLogging(); // opt.UseLoggerFactory(DbConsoleLoggerFactory); // return new LionDbContext(opt.Options); //}).InstancePerLifetimeScope().PropertiesAutowired(); #endregion // 配置AOP代理 // 属性注入得把方法加上 virtual 不然没效果 builder.RegisterDynamicProxy(config => { ////全局使用AOP 这里由于不是使用的接口的方式,需要在要使用AOP的方法上加 virtual 关键字 //config.Interceptors.AddTyped<LogInterceptorAttribute>(); //config.Interceptors.AddServiced<LogInterceptorAttribute>(); //// 带有Service后缀当前方法会被拦截 //config.Interceptors.AddTyped<LogInterceptorAttribute>(method => method.Name.EndsWith("Service")); //// 使用 通配符 的特定全局拦截器 //config.Interceptors.AddTyped<LogInterceptorAttribute>(Predicates.ForService("*Service")); ////Demo.Data命名空间下的Service不会被代理 //config.NonAspectPredicates.AddNamespace("Demo.Data"); ////最后一级为Data的命名空间下的Service不会被代理 //config.NonAspectPredicates.AddNamespace("*.Data"); ////ICustomService接口不会被代理 //config.NonAspectPredicates.AddService("ICustomService"); ////后缀为Service的接口和类不会被代理 //config.NonAspectPredicates.AddService("*Service"); ////命名为FindUser的方法不会被代理 //config.NonAspectPredicates.AddMethod("FindUser"); ////后缀为User的方法不会被代理 //config.NonAspectPredicates.AddMethod("*User"); }); }
public ActionResult GetScheduleStatus() { ActionResult ActionResult = new ActionResult { Data = SchedulerFactory.GetScheduleStatus() }; return(ActionResult); }
public void Start() { _logger.Log("Starting DmvWaitTime Service"); foreach (var service in SchedulerFactory.GetSchedulers(_container)) { service.ScheduleJob(); } }
public StringBuilder Execute(Dictionary <string, StringBuilder> values, IWorkspace theWorkspace) { var result = new ExecuteMessage { HasError = false }; StringBuilder tmp; values.TryGetValue("Resource", out tmp); var serializer = new Dev2JsonSerializer(); try { if (tmp != null) { var res = serializer.Deserialize <IScheduledResource>(tmp); Dev2Logger.Log.Info("Save Scheduled Resource. Scheduled Resource:" + res); using (var model = SchedulerFactory.CreateModel(GlobalConstants.SchedulerFolderId, SecurityWrapper)) { StringBuilder userName; StringBuilder password; values.TryGetValue("UserName", out userName); values.TryGetValue("Password", out password); if (userName == null || password == null) { result.Message.Append("No UserName or password provided"); result.HasError = true; } else { StringBuilder previousTask; values.TryGetValue("PreviousResource", out previousTask); model.Save(res, userName.ToString(), password.ToString()); if (previousTask != null && !String.IsNullOrEmpty(previousTask.ToString()) && (previousTask.ToString() != res.Name)) { model.DeleteSchedule(new ScheduledResource(previousTask.ToString(), SchedulerStatus.Disabled, DateTime.MaxValue, null, null)); } } } } else { result.Message.Append("No Resource Selected"); result.HasError = true; } } catch (Exception e) { Dev2Logger.Log.Error(e); result.Message.Append(string.Format("Error while saving: {0}", e.Message.Remove(e.Message.IndexOf('.')))); result.HasError = true; } return(serializer.SerializeToBuilder(result)); }
internal static List <IUIData> GetData(int PortalID, UserInfo userinfo) { Dictionary <string, IUIData> Setting = new Dictionary <string, IUIData> { { "ScheduleStatus", new UIData { Name = "ScheduleStatus", Options = SchedulerFactory.GetScheduleStatus() } } }; return(Setting.Values.ToList()); }
public CommandTemplate ModifyCommandTemplate(long commandTemplateId, string name, string description, string code, string executableFile, string preparationScript) { CommandTemplate commandTemplate = _unitOfWork.CommandTemplateRepository.GetById(commandTemplateId); if (commandTemplate is null) { throw new RequestedObjectDoesNotExistException("The specified command template is not defined in HEAppE!"); } if (!commandTemplate.IsEnabled) { throw new InputValidationException("The specified command template is deleted."); } if (commandTemplate.IsGeneric) { throw new InputValidationException("The specified command template is generic."); } if (executableFile is null) { throw new InputValidationException("The specified command template must have specified executable file!"); } Cluster cluster = commandTemplate.ClusterNodeType.Cluster; var commandTemplateParameters = SchedulerFactory.GetInstance(cluster.SchedulerType) .CreateScheduler(cluster) .GetParametersFromGenericUserScript(cluster, executableFile) .ToList(); var templateParameters = new List <CommandTemplateParameter>(); foreach (string parameter in commandTemplateParameters) { templateParameters.Add(new CommandTemplateParameter() { Identifier = parameter, Description = parameter, Query = string.Empty }); } commandTemplate.Name = name; commandTemplate.Description = description; commandTemplate.Code = code; commandTemplate.PreparationScript = preparationScript; commandTemplate.TemplateParameters.ForEach(cmdParameters => _unitOfWork.CommandTemplateParameterRepository.Delete(cmdParameters)); commandTemplate.TemplateParameters.AddRange(templateParameters); commandTemplate.ExecutableFile = executableFile; commandTemplate.CommandParameters = string.Join(' ', commandTemplateParameters.Select(x => $"%%{"{"}{x}{"}"}")); _unitOfWork.Save(); return(commandTemplate); }
public void SetUp() { _event = null; _eventsRepositoryMock = new Mock <IEventRepository>(); _eventsRepositoryMock.Setup(h => h.Save(It.IsAny <Event>())) .Callback <Event>(r => _event = r); var factory = new SchedulerFactory(); _scheduler = factory.CreateInstance(WeeklySchedulerTypeName); }
internal static List <IUIData> GetData(int PortalID, UserInfo userinfo) { Dictionary <string, IUIData> Setting = new Dictionary <string, IUIData> { { "FriendlyName", new UIData { Name = "FriendlyName", Value = "" } }, { "ObjectDependencies", new UIData { Name = "ObjectDependencies", Value = "" } }, { "ScheduleStatus", new UIData { Name = "ScheduleStatus", Options = SchedulerFactory.GetScheduleStatus() } }, { "GetScheduleItems", new UIData { Name = "GetScheduleItems", Options = SchedulerManager.GetScheduleItems() } }, { "FrequencyPeriod", new UIData { Name = "FrequencyPeriod", Options = SchedulerManager.TimePeriod(), OptionsText = "Text", OptionsValue = "Value", Value = "s" } }, { "RunTimeLapsePeriod", new UIData { Name = "RunTimeLapsePeriod", Options = SchedulerManager.TimePeriod(), OptionsText = "Text", OptionsValue = "Value", Value = "s" } }, { "CatchUpTasks", new UIData { Name = "CatchUpTasks", Options = SchedulerManager.CatchUpTask(), OptionsText = "Text", OptionsValue = "Value", Value = "false" } }, { "RunOnEvent", new UIData { Name = "RunOnEvent", Options = SchedulerManager.RunOnEvent(), OptionsText = "Text", OptionsValue = "Value", Value = "0" } }, { "RetainScheduleHistory", new UIData { Name = "RetainScheduleHistory", Options = SchedulerManager.RetainScheduleHistory(), OptionsText = "Text", OptionsValue = "Value", Value = "0" } }, { "EnabledScheduling", new UIData { Name = "EnabledScheduling", Value = "false" } }, { "ScheduleStartDate", new UIData { Name = "ScheduleStartDate", Value = "" } }, { "RetryTimeLapse", new UIData { Name = "RetryTimeLapse", Value = "" } }, { "Server", new UIData { Name = "Server", Value = "" } }, { "Frequency", new UIData { Name = "Frequency", Value = "" } }, { "ClassNameAssembly", new UIData { Name = "ClassNameAssembly", Value = "" } } }; return(Setting.Values.ToList()); }