好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

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

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                     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

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于Asp.Net MVC 3 + ExtJs 4.01做一个Quartz.Net管理平台的详细内容...

  阅读:56次