public async void Post_Ok() { var widget = new TaskWidget(); widget.CronExpression = Longbow.Tasks.Cron.Secondly(5); widget.Name = "單次任務"; widget.TaskExecutorName = "Bootstrap.Admin.DefaultTaskExecutor"; // 演示模式下禁止移除系統内置任務 var resp = await client.PostAsJsonAsync <TaskWidget, bool>("/api/Tasks", widget); Assert.False(resp); resp = await client.DeleteAsJsonAsync <IEnumerable <string>, bool>("/api/Tasks", new string[] { widget.Name }); Assert.False(resp); widget.Name = "Test-Widget"; resp = await client.PostAsJsonAsync <TaskWidget, bool>("/api/Tasks", widget); Assert.True(resp); resp = await client.DeleteAsJsonAsync <IEnumerable <string>, bool>("/api/Tasks", new string[] { widget.Name }); Assert.True(resp); }
public bool Post([FromBody] TaskWidget widget) { // 判断 Cron 表达式 if (string.IsNullOrEmpty(widget.CronExpression)) { return(false); } // 系统内置任务禁止更改 // 演示模式下禁止删除内置任务 if (DictHelper.RetrieveSystemModel() && _tasks.Any(t => t.Equals(widget.Name, StringComparison.OrdinalIgnoreCase))) { return(false); } // 加载任务执行体 // 此处可以扩展为任意 DLL 中的任意继承 ITask 接口的实体类 var taskExecutor = LgbActivator.CreateInstance <ITask>("Bootstrap.Admin", widget.TaskExecutorName); if (taskExecutor == null) { return(false); } // 此处未存储到数据库中,直接送入任务中心 TaskServicesManager.Remove(widget.Name); TaskServicesManager.GetOrAdd(widget.Name, token => taskExecutor.Execute(token), TriggerBuilder.Build(widget.CronExpression)); return(true); }
public async void Post_Ok() { var widget = new TaskWidget(); // widget Cron 表达式為 ”“ var resp = await Client.PostAsJsonAsync <TaskWidget, bool>("/api/Tasks", widget); Assert.False(resp); // task executor 不合法 widget.CronExpression = Longbow.Tasks.Cron.Secondly(5); widget.TaskExecutorName = "UnitTest-Widget"; resp = await Client.PostAsJsonAsync <TaskWidget, bool>("/api/Tasks", widget); Assert.False(resp); widget.TaskExecutorName = "Bootstrap.Admin.DefaultTaskExecutor"; widget.Name = "UnitTest-Task"; resp = await Client.PostAsJsonAsync <TaskWidget, bool>("/api/Tasks", widget); Assert.True(resp); // Delete resp = await Client.DeleteAsJsonAsync <IEnumerable <string>, bool>("/api/Tasks", new string[] { widget.Name }); Assert.True(resp); }
/// <summary> /// Add 'TaskWidget' object to 'TaskWidget' collection /// </summary> /// <param name="widget">'TaskWidget' object</param> /// <param name="collectionName">'TaskWidget' collection</param> /// <param name="index">Index of the 'TaskWidget' object</param> /// <returns>Return 'true' if the object addition was succesfull</returns> public bool AddToCollection(TaskWidget widget, string collectionName, int index = 0) { if (widget != null && collectionName != null) { ObservableCollection<TaskWidget> collection = this.GetTaskWidgetCollection(collectionName); if (collection != null) { if (index < 0) { index = 0; } else if (index >= collection.Count) { index = collection.Count; } collection.Insert(index, widget); } } return false; }
/// <summary> /// Remove 'TaskWidget' object from 'TaskWidget' collection /// </summary> /// <param name="widget">'TaskWidget' object</param> /// <param name="collectionName">'TaskWidget' collection</param> /// <returns>Return 'true' if the object removel was succesfull</returns> public bool RemoveFromCollection(TaskWidget widget, string collectionName = null) { if (widget != null) { if (String.IsNullOrWhiteSpace(collectionName)) { collectionName = this.FindCollectionName(widget); } if (!String.IsNullOrWhiteSpace(collectionName)) { ObservableCollection<TaskWidget> collection = this.GetTaskWidgetCollection(collectionName); if (collectionName != null) { collection.Remove(widget); return true; } } } return false; }
/// <summary> /// Find item index based on 'TaskWidget' object /// </summary> /// <param name="widget">'TaskWidget' object</param> /// <returns>Returns item index (-1 if 'TaskWidget' object exist and belongs to collection)</returns> public int GetTaskWidgetIndex(TaskWidget widget) { if (widget != null) { ObservableCollection<TaskWidget> collection = this.GetTaskWidgetCollection(widget.CollectionName); if (collection != null) { return collection.IndexOf(widget); } } return -1; }
/// <summary> /// Find collection name based on 'TaskWidget' object /// </summary> /// <param name="widget">'TaskWidget' object</param> /// <returns>Returns collection name (null if collection name doesn't exist)</returns> public string FindCollectionName(TaskWidget widget) { Dictionary<string, ObservableCollection<TaskWidget>>.Enumerator e = _taskWidgetCollections.GetEnumerator(); while (e.MoveNext()) { if (e.Current.Value.Contains(widget)) { return e.Current.Key; } } return null; }
/// <summary> /// 'ItemEditWindowViewModel' constructor /// </summary> /// <param name="taskWidget">Task widget object to edit</param> public ItemEditWindowViewModel(TaskWidget taskWidget) { this.SetTaskWidget(taskWidget); }
/// <summary> /// Set the task widget object to edit /// </summary> /// <param name="taskWidget"></param> public void SetTaskWidget(TaskWidget taskWidget) { _taskWidget = taskWidget; _itemContent = _taskWidget.TaskContent; }