您的位置:首页 > 编程语言 > ASP

Asp.Net MVC 3 + ExtJs 4.01做一个Quartz.Net管理平台

2011-05-26 22:47 447 查看
Asp.Net MVC 3 + ExtJs 4.01做一个Quartz.Net管理平台

效果图:



1.定义TriggerInfo,这里为了方便起见只列出了TriggerInfo的定义

using System;
2     using System.Runtime.Serialization;
3
4     [DataContract]
5     public class TriggerInfo
6     {
7         [DataMember]
8         public string CalendarName { get; set; }
9
10         [DataMember]
11         public string Description { get; set; }
12
13         [DataMember]
14         public DateTime? EndTimeUtc { get; set; }
15
16         [DataMember]
17         public DateTime? FinalFireTimeUtc { get; set; }
18
19         [DataMember]
20         public string FireInstanceId { set; get; }
21
22         [DataMember]
23         public string FullJobName { get; set; }
24
25         [DataMember]
26         public string FullName { get; set; }
27
28         [DataMember]
29         public string Group { get; set; }
30
31         [DataMember]
32         public bool HasAdditionalProperties { get; set; }
33
34         [DataMember]
35         public bool HasMillisecondPrecision { get; set; }
36
37         [DataMember]
38         public string JobGroup { get; set; }
39
40         [DataMember]
41         public string JobName { get; set; }
42
43         [DataMember]
44         public string Key { get; set; }
45
46         [DataMember]
47         public bool MayFireAgain { get; set; }
48
49         [DataMember]
50         public int MisfireInstruction { get; set; }
51
52         [DataMember]
53         public string Name { get; set; }
54
55         [DataMember]
56         public DateTime? NextFireTimeUtc { get; set; }
57
58         [DataMember]
59         public DateTime? PreviousFireTimeUtc { get; set; }
60
61         [DataMember]
62         public int Priority { get; set; }
63
64         [DataMember]
65         public DateTime StartTimeUtc { get; set; }
66
67         [DataMember]
68         public string[] TriggerListenerNames { get; set; }
69
70         [DataMember]
71         public TriggerType TriggerType { get; set; }
72
73         [DataMember]
74         public TriggerStateInfo TriggerState { get; set; }
75
76         [DataMember]
77         public bool Volatile { get; set; }
78
79         [DataMember]
80         public int RepeatCount { get; set; }
81
82         [DataMember]
83         public TimeSpan RepeatInterval { get; set; }
84
85         [DataMember]
86         public int TimesTriggered { get; set; }
87
88         [DataMember]
89         public int RepeatIndefinitely { get; set; }
90
91         [DataMember]
92         public string CronExpressionString { get; set; }
93
94         [DataMember]
95         public TimeZoneInfo TimeZone { get; set; }
96     }


2.定义服务契约IScheduleService

using System;
2     using System.ServiceModel;
3
4     using DataContract;
5
6     [ServiceContract]
7     public interface IScheduleService
8     {
9         [OperationContract]
10         void AddJob(JobInfo jobInfo, bool replace);
11
12         [OperationContract]
13         bool DeleteJob(string jobName, string groupName);
14
15         [OperationContract]
16         string[] GetJobGroupNames();
17
18         [OperationContract]
19         JobInfo GetJobDetail(string jobName, string groupName);
20
21         [OperationContract]
22         string[] GetJobNames(string groupName);
23
24         [OperationContract]
25         TriggerInfo GetTrigger(string triggerName, string groupName);
26
27         [OperationContract]
28         string[] GetTriggerGroupNames();
29
30         [OperationContract]
31         string[] GetTriggerNames(string groupName);
32
33         [OperationContract]
34         TriggerStateInfo GetTriggerState(string triggerName, string triggerGroup);
35
36         [OperationContract]
37         bool IsJobGroupPaused(string groupName);
38
39         [OperationContract]
40         bool IsTriggerGroupPaused(string groupName);
41
42         [OperationContract]
43         void PauseAll();
44
45         [OperationContract]
46         void PauseJob(string jobName, string groupName);
47
48         [OperationContract]
49         void PauseJobGroup(string groupName);
50
51         [OperationContract]
52         void PauseTrigger(string triggerName, string triggerGroup);
53
54         [OperationContract]
55         void PauseTriggerGroup(string triggerGroup);
56
57         [OperationContract]
58         DateTime? RescheduleJob(string triggerName, string triggerGroup, TriggerInfo newTrigger);
59
60         [OperationContract]
61         void ResumeAll();
62
63         [OperationContract]
64         void ResumeJob(string jobName, string groupName);
65
66         [OperationContract]
67         void ResumeJobGroup(string groupName);
68
69         [OperationContract]
70         void ResumeTrigger(string triggerName, string groupName);
71
72         [OperationContract]
73         void ResumeTriggerGroup(string groupName);
74
75         [OperationContract]
76         DateTime ScheduleJob(TriggerInfo trigger);
77
78         [OperationContract]
79         DateTime ScheduleJobByTrigger(JobInfo jobInfo, TriggerInfo trigger);
80
81         [OperationContract]
82         void Shutdown(bool waitForJobsToComplete);
83
84         [OperationContract]
85         void Standby();
86
87         [OperationContract]
88         void Start();
89
90         [OperationContract]
91         void StartDelayed(TimeSpan delay);
92
93         [OperationContract]
94         void TriggerJob(string jobName, string groupName);
95
96         [OperationContract]
97         void TriggerJobWithVolatileTrigger(string jobName, string groupName);
98
99         [OperationContract]
100         void UnscheduleJob(string triggerName, string groupName);
101     }


3.实现服务契约IScheduleService的ScheduleService ,由于服务提交代码,只能描述一下了,这个类就是把Quartz.Net的Schedule封装了一下。

4.定义SchduleController,来输出Job和Trigger的信息

using System.Collections.Generic;
2     using System.Web.Mvc;
3
4     using Vancl.Schedule.DataContract;
5     using Vancl.Schedule.ServiceContract;
6     using Vancl.Schedule.ServiceImpl;
7
8     public class ScheduleController : Controller
9     {
10         private readonly IScheduleService scheduleService = ScheduleService.Instance;
11
12         /// <summary>
13         /// 获取所有任务
14         /// </summary>
15         /// <returns></returns>
16         public ActionResult GetJobs()
17         {
18             IList<JobInfo> jobInfoes = new List<JobInfo>();
19
20             string[] groupNames = scheduleService.GetJobGroupNames();
21
22             if (groupNames != null)
23             {
24                 foreach (string groupName in groupNames)
25                 {
26                     string[] jobNames = scheduleService.GetJobNames(groupName);
27
28                     if (jobNames != null)
29                     {
30                         foreach (string jobName in jobNames)
31                         {
32                             jobInfoes.Add(scheduleService.GetJobDetail(jobName, groupName));
33                         }
34                     }
35                 }
36             }
37
38             return new JsonResult() { Data = jobInfoes, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
39         }
40
41         /// <summary>
42         /// 获取所有触发器
43         /// </summary>
44         /// <returns></returns>
45         public ActionResult GetTriggers()
46         {
47             IList<TriggerInfo> triggerInfoes = new List<TriggerInfo>();
48
49             string[] groupNames = scheduleService.GetTriggerGroupNames();
50
51             if (groupNames != null)
52             {
53                 foreach (string groupName in groupNames)
54                 {
55                     string[] triggerNames = scheduleService.GetTriggerNames(groupName);
56
57                     if (triggerNames != null)
58                     {
59                         foreach (string triggerName in triggerNames)
60                         {
61                             TriggerInfo triggerInfo = scheduleService.GetTrigger(triggerName, groupName);
62                             triggerInfo.TriggerState = scheduleService.GetTriggerState(triggerName, groupName);
63                             triggerInfoes.Add(triggerInfo);
64                         }
65                     }
66                 }
67             }
68
69             return new JsonResult() { Data = triggerInfoes, JsonRequestBehavior = JsonRequestBehavior.AllowGet };
70         }
71     }


5.定义TriggerInfo,扩展于Ext.data.Model

Ext.define("Vancl.Cxcp.TriggerInfo", {
2     extend: 'Ext.data.Model',
3     fields: ['Name', 'Group', 'JobName', 'JobGroup', 'TriggerType', 'StartTimeUtc', 'PreviousFireTimeUtc', 'NextFireTimeUtc', 'MisfireInstruction', 'TriggerState']
4 });


6.出于方便,我直接利用了Ext的desktop,下面是用于显示所有Trigger信息的Grid

1 Ext.define('MyDesktop.GridWindow', {
2 extend: 'Ext.ux.desktop.Module',
3
4 requires: [
5 'Ext.data.*',
6 'Ext.util.Format',
7 'Ext.grid.Panel',
8 'Ext.grid.RowNumberer'
9 ],
10
11 id: 'grid-win',
12
13 init: function () {
14 this.launcher = {
15 text: 'Grid Window',
16 iconCls: 'icon-grid',
17 handler: this.createWindow,
18 scope: this
19 };
20 },
21
22 createWindow: function () {
23 var desktop = this.app.getDesktop();
24 var win = desktop.getWindow('grid-win');
25 var store = new Ext.data.Store({
26 model: 'Vancl.Cxcp.TriggerInfo',
27 proxy: {
28 type: 'ajax',
29 url: 'schedule/gettriggers',
30 reader: {
31 type: 'json',
32 root: ''
33 }
34 }
35 });
36 if (!win) {
37 win = desktop.createWindow({
38 id: 'grid-win',
39 title: '触发器信息',
40 width: 740,
41 height: 480,
42 iconCls: 'icon-grid',
43 animCollapse: false,
44 constrainHeader: true,
45 layout: 'fit',
46 items: [
47 {
48 border: false,
49 xtype: 'grid',
50 store: store,
51 columns: [{
52 text: 'Name',
53 dataIndex: 'Name'
54 }, {
55 text: 'Group',
56 dataIndex: 'Group'
57 }, {
58 text: 'JobName',
59 dataIndex: 'JobName'
60 }, {
61 text: 'JobGroup',
62 dataIndex: 'JobGroup'
63 }, {
64 text: 'TriggerType',
65 dataIndex: 'TriggerType'
66 }, {
67 text: 'StartTimeUtc',
68 dataIndex: 'StartTimeUtc'
69 }, {
70 text: 'PreviousFireTimeUtc',
71 dataIndex: 'PreviousFireTimeUtc'
72 }, {
73 text: 'NextFireTimeUtc',
74 dataIndex: 'NextFireTimeUtc'
75 }, {
76 text: 'MisfireInstruction',
77 dataIndex: 'MisfireInstruction'
78 }, {
79 text: 'TriggerState',
80 dataIndex: 'TriggerState'
81 }]
82 }
83 ],
84 tbar: [{
85 text: 'Add',
86 tooltip: 'Add a new trigger',
87 iconCls: 'add'
88 }, '-', {
89 text: 'Remove Trigger',
90 tooltip: 'Remove the selected trigger',
91 iconCls: 'remove'
92 }]
93 });
94 }
95 win.show();
96 store.load();
97
98 return win;
99 }
100 });

http://www.cnblogs.com/TerryLiang/archive/2011/05/05/2037170.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐