From 34380836fee980ccb7bdff70d4f72c66bdb3d3dc Mon Sep 17 00:00:00 2001
From: Ben Lin <maobin001@msn.com>
Date: 星期一, 28 十月 2024 22:20:57 +0800
Subject: [PATCH] 计划任务优化

---
 Tiger.Business.MES/iERP/U9C_MES.cs                             |    8 ++
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs             |   13 +++-
 Tiger.IBusiness/Service/IInterfaceService.cs                   |    1 
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs                   |   15 +++-
 Tiger.Business/Services/Base/InterfaceService.cs               |    5 +
 Tiger.Business/Services/Base/TigerJobBase.cs                   |   14 ++--
 Tiger.Business/Services/Base/InterfaceServiceNew.cs            |   41 +++++++++++++
 Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs |   21 +++++++
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs               |   13 +++-
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs             |   15 +++-
 Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs                 |   13 +++-
 11 files changed, 130 insertions(+), 29 deletions(-)

diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs
index 0458c8f..843bef0 100644
--- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustSn.cs
@@ -30,11 +30,13 @@
 
         public void Execute()
         {
-            Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n");
+            #region 鍥哄畾鍐欐硶
+            Logger.Scheduler.Info($"/**\r\n *杩涘叆璁″垝璋冨害(鍚嶇О: {Name} )....\r\n */\r\n"); //鍥哄畾鍐欐硶
+            Schedule = JobManager.GetSchedule(Name); //鍥哄畾鍐欐硶
+            StartTime = DateTime.Now; //鍥哄畾鍐欐硶
+            #endregion
             try
             {
-                Schedule = JobManager.GetSchedule(Name);
-                StartTime = DateTime.Now;
                 string msg = "";
                 string status = "Successed";
                 GetJob(typeof(U9C_ME_GetCustSn).Name);
@@ -51,7 +53,9 @@
                     else
                     {
                         msg = $"浠嶶9C鑾峰彇瀹㈡埛鏉$爜淇℃伅鎴愬姛:{result.Message}";
-                        Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime();
+                        //鍥哄畾鍐欐硶
+                        Trig.LastRunTime = tskJobInput.input.endTime.ToDateTime();
+                        Trig.NextRunTime = Schedule.NextRun;
                     }
                 }
                 SaveFluentSchedulerLog(status, $"{msg}");
@@ -62,6 +66,7 @@
                 Logger.Scheduler.Fatal(ex, "鑾峰彇瀹㈡埛鏉$爜淇℃伅寮傚父");
                 SaveFluentSchedulerLog("Failed", ex.Message);
             }
+            Logger.Scheduler.Info($"/* 璁″垝璋冨害(鍚嶇О:{Name})缁撴潫 */\r\n"); //鍥哄畾鍐欐硶
         }
     }
 }
diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs
index 5aeef52..f9c9a72 100644
--- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetCustomer.cs
@@ -30,11 +30,13 @@
 
         public void Execute()
         {
-            Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n");
+            #region 鍥哄畾鍐欐硶
+            Logger.Scheduler.Info($"/**\r\n *杩涘叆璁″垝璋冨害(鍚嶇О: {Name} )....\r\n */\r\n"); //鍥哄畾鍐欐硶
+            Schedule = JobManager.GetSchedule(Name); //鍥哄畾鍐欐硶
+            StartTime = DateTime.Now; //鍥哄畾鍐欐硶
+            #endregion
             try
             {
-                Schedule = JobManager.GetSchedule(Name);
-                StartTime = DateTime.Now;
                 string msg = "";
                 string status = "Successed";
                 GetJob(typeof(U9C_MES_GetCustomer).Name);
@@ -51,17 +53,20 @@
                     else
                     {
                         msg = $"浠嶶9C鑾峰彇瀹㈡埛淇℃伅鎴愬姛:{result.Message}";
-                        Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime();
+                        //鍥哄畾鍐欐硶
+                        Trig.LastRunTime = tskJobInput.input.endTime.ToDateTime();
+                        Trig.NextRunTime = Schedule.NextRun;
                     }
                 }
                 SaveFluentSchedulerLog(status, $"{msg}");
-                Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚锛岃繑鍥炰俊鎭�:{msg}\r\n");
+                Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚锛岃繑鍥炰俊鎭�:{msg}\r\n"); 
             }
             catch (System.Exception ex)
             {
                 Logger.Scheduler.Fatal(ex, "鑾峰彇瀹㈡埛淇℃伅寮傚父");
                 SaveFluentSchedulerLog("Failed", ex.Message);
             }
+            Logger.Scheduler.Info($"/* 璁″垝璋冨害(鍚嶇О:{Name})缁撴潫 */\r\n"); //鍥哄畾鍐欐硶
         }
     }
 }
diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs
index d6e6081..f9019d4 100644
--- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetItem.cs
@@ -31,11 +31,13 @@
 
         public void Execute()
         {
-            Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n");
+            #region 鍥哄畾鍐欐硶
+            Logger.Scheduler.Info($"/**\r\n *杩涘叆璁″垝璋冨害(鍚嶇О: {Name} )....\r\n */\r\n"); //鍥哄畾鍐欐硶
+            Schedule = JobManager.GetSchedule(Name); //鍥哄畾鍐欐硶
+            StartTime = DateTime.Now; //鍥哄畾鍐欐硶
+            #endregion
             try
             {
-                Schedule = JobManager.GetSchedule(Name);
-                StartTime = DateTime.Now;
                 string msg = "";
                 string status = "Successed";
                 GetJob(typeof(U9C_MES_GetItem).Name);
@@ -52,7 +54,9 @@
                     else
                     {
                         msg = $"浠嶶9C鑾峰彇鐗╂枡淇℃伅鎴愬姛:{result.Message}";
-                        Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime();
+                        //鍥哄畾鍐欐硶
+                        Trig.LastRunTime = tskJobInput.input.endTime.ToDateTime();
+                        Trig.NextRunTime = Schedule.NextRun;
                     }
                 }
                 SaveFluentSchedulerLog(status, $"{msg}");
@@ -63,6 +67,7 @@
                 Logger.Scheduler.Fatal(ex, "鑾峰彇鐗╂枡淇℃伅寮傚父");
                 SaveFluentSchedulerLog("Failed", ex.Message);
             }
+            Logger.Scheduler.Info($"/* 璁″垝璋冨害(鍚嶇О:{Name})缁撴潫 */\r\n"); //鍥哄畾鍐欐硶
         }
     }
 }
diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs
index 5619878..d5a5f65 100644
--- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetSupplier.cs
@@ -32,11 +32,13 @@
 
         public void Execute()
         {
-            Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n");
+            #region 鍥哄畾鍐欐硶
+            Logger.Scheduler.Info($"/**\r\n *杩涘叆璁″垝璋冨害(鍚嶇О: {Name} )....\r\n */\r\n"); //鍥哄畾鍐欐硶
+            Schedule = JobManager.GetSchedule(Name); //鍥哄畾鍐欐硶
+            StartTime = DateTime.Now; //鍥哄畾鍐欐硶
+            #endregion
             try
             {
-                Schedule = JobManager.GetSchedule(Name);
-                StartTime = DateTime.Now;
                 string msg = "";
                 string status = "Successed";
                 GetJob(typeof(U9C_ME_GetSupplier).Name);
@@ -53,7 +55,9 @@
                     else
                     {
                         msg = $"浠嶶9C鑾峰彇渚涘簲鍟嗕俊鎭垚鍔�:{result.Message}";
-                        Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime();
+                        //鍥哄畾鍐欐硶
+                        Trig.LastRunTime = tskJobInput.input.endTime.ToDateTime();
+                        Trig.NextRunTime = Schedule.NextRun;
                     }
                 }
                 SaveFluentSchedulerLog(status, $"{msg}");
@@ -64,6 +68,7 @@
                 Logger.Scheduler.Fatal(ex, "鑾峰彇渚涘簲鍟嗕俊鎭紓甯�");
                 SaveFluentSchedulerLog("Failed", ex.Message);
             }
+            Logger.Scheduler.Info($"/* 璁″垝璋冨害(鍚嶇О:{Name})缁撴潫 */\r\n"); //鍥哄畾鍐欐硶
         }
     }
 }
diff --git a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
index 0188002..f684dce 100644
--- a/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
+++ b/Tiger.Business.MES/Task/Jobs.U9C_ME_GetWo.cs
@@ -80,11 +80,13 @@
 
         public void Execute()
         {
-            Logger.Scheduler.Info($"杩涘叆璁″垝璋冨害(鍚嶇О:{Name})...\r\n");
+            #region 鍥哄畾鍐欐硶
+            Logger.Scheduler.Info($"/**\r\n *杩涘叆璁″垝璋冨害(鍚嶇О: {Name} )....\r\n */\r\n"); //鍥哄畾鍐欐硶
+            Schedule = JobManager.GetSchedule(Name); //鍥哄畾鍐欐硶
+            StartTime = DateTime.Now; //鍥哄畾鍐欐硶
+            #endregion
             try
             {
-                Schedule = JobManager.GetSchedule(Name);
-                StartTime = DateTime.Now;
                 string msg = "";
                 string status = "Successed";
                 GetJob(typeof(fU9C_MES_GetWo).Name);
@@ -101,17 +103,20 @@
                     else
                     {
                         msg = $"浠嶶9C鑾峰彇宸ュ崟淇℃伅鎴愬姛:{result.Message}";
-                        Trig.LastRunTime = (tskJobInput.input.endTime.ToDateTime() - DateTime.Now).TotalMinutes > 0 ? Trig.LastRunTime : tskJobInput.input.endTime.ToDateTime();
+                        //鍥哄畾鍐欐硶
+                        Trig.LastRunTime = tskJobInput.input.endTime.ToDateTime();
+                        Trig.NextRunTime = Schedule.NextRun;
                     }
                 }
                 SaveFluentSchedulerLog(status, $"{msg}");
-                Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О:{Name})瀹屾垚锛岃繑鍥炰俊鎭�:{msg}\r\n");
+                Logger.Scheduler.Info($"璁″垝璋冨害(鍚嶇О: {Name} )瀹屾垚锛岃繑鍥炰俊鎭�: {msg} \r\n");
             }
             catch (System.Exception ex)
             {
                 Logger.Scheduler.Fatal(ex, "鑾峰彇宸ュ崟淇℃伅寮傚父");
                 SaveFluentSchedulerLog("Failed", ex.Message);
             }
+            Logger.Scheduler.Info($"/* 璁″垝璋冨害(鍚嶇О:{Name})缁撴潫 */\r\n"); //鍥哄畾鍐欐硶
         }
     }//endClass
 
diff --git a/Tiger.Business.MES/iERP/U9C_MES.cs b/Tiger.Business.MES/iERP/U9C_MES.cs
index ba786d4..7f56288 100644
--- a/Tiger.Business.MES/iERP/U9C_MES.cs
+++ b/Tiger.Business.MES/iERP/U9C_MES.cs
@@ -84,6 +84,7 @@
                 }
             }
             Logger.Scheduler.Info($"鐗╂枡淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{items.Count}]");
+            db = Biz.Db;
             var dbTran = db.UseTran(() =>
             {
                 if (items.Any())
@@ -136,6 +137,7 @@
                 Logger.Scheduler.Error(action.Message);
             }
             Logger.Scheduler.Info($"鐗╂枡淇℃伅瀛樺叆鏁版嵁搴擄紝鎬绘暟锛歔{items.Count}]");
+            action.Message = $"鐗╂枡淇℃伅瀛樺叆鏁版嵁搴擄紝鎬绘暟锛歔{items.Count}]";
             return action;
         }
 
@@ -340,6 +342,7 @@
                 }
             }
             Logger.Scheduler.Info($"瀹㈡埛淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{items.Count}]");
+            db = Biz.Db;
             var dbTran = db.UseTran(() =>
                 {
                     if (items.Any())
@@ -372,6 +375,7 @@
                 Logger.Scheduler.Error(action.Message);
             }
             Logger.Scheduler.Info($"瀹㈡埛淇℃伅瀛樺叆鏁版嵁搴擄紝鎬绘暟锛歔{items.Count}]");
+            action.Message = $"瀹㈡埛淇℃伅瀛樺叆鏁版嵁搴擄紝鎬绘暟锛歔{items.Count}]";
             return action;
         }
 
@@ -412,6 +416,7 @@
                 }
             }
             Logger.Scheduler.Info($"渚涘簲鍟嗕俊鎭瓨鍏ュ疄浣撲腑锛屾�绘暟锛歔{items.Count}]");
+            db = Biz.Db;
             var dbTran = db.UseTran(() =>
             {
                 if (items.Any())
@@ -444,6 +449,7 @@
                 Logger.Scheduler.Error(action.Message);
             }
             Logger.Scheduler.Info($"渚涘簲鍟嗕俊鎭瓨鍏ユ暟鎹簱锛屾�绘暟锛歔{items.Count}]");
+            action.Message = $"渚涘簲鍟嗕俊鎭瓨鍏ユ暟鎹簱锛屾�绘暟锛歔{items.Count}]";
             return action;
         }
 
@@ -489,6 +495,7 @@
                 }
             }
             Logger.Scheduler.Info($"瀹㈡埛鏉$爜淇℃伅瀛樺叆瀹炰綋涓紝鎬绘暟锛歔{items.Count}]");
+            db = Biz.Db;
             var dbTran = db.UseTran(() =>
             {
                 if (items.Any())
@@ -521,6 +528,7 @@
                 Logger.Scheduler.Error(action.Message);
             }
             Logger.Scheduler.Info($"瀹㈡埛鏉$爜淇℃伅瀛樺叆鏁版嵁搴擄紝鎬绘暟锛歔{items.Count}]");
+            action.Message = $"瀹㈡埛鏉$爜淇℃伅瀛樺叆鏁版嵁搴擄紝鎬绘暟锛歔{items.Count}]";
             return action;
         }
 
diff --git a/Tiger.Business/Services/Base/InterfaceService.cs b/Tiger.Business/Services/Base/InterfaceService.cs
index 0dfcd20..b904103 100644
--- a/Tiger.Business/Services/Base/InterfaceService.cs
+++ b/Tiger.Business/Services/Base/InterfaceService.cs
@@ -185,5 +185,10 @@
         {
             throw new NotImplementedException();
         }
+
+        ApiAction IInterfaceService.ImmediateRun<TJob>(TJob newEntity, string jobname)
+        {
+            throw new NotImplementedException();
+        }
     }
 }
diff --git a/Tiger.Business/Services/Base/InterfaceServiceNew.cs b/Tiger.Business/Services/Base/InterfaceServiceNew.cs
index 5b362a3..d827d0a 100644
--- a/Tiger.Business/Services/Base/InterfaceServiceNew.cs
+++ b/Tiger.Business/Services/Base/InterfaceServiceNew.cs
@@ -541,6 +541,47 @@
         }
 
         /// <summary>
+        /// 绔嬪嵆杩愯
+        /// </summary>
+        /// <param name="jobname"></param>
+        public ApiAction ImmediateRun<TJob>(TJob newEntity, string jobname) where TJob : class, ITJob
+        {
+            ApiAction apiAction = new();
+            try
+            {
+                if (JobManager.AllSchedules.Any(q => q.Name == jobname))
+                {
+                    JobManager.RemoveJob(jobname);
+                    string guid = Guid.NewGuid().ToString("N");
+                    TSK_JOB job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == jobname).First();
+                    var trigger = Biz.Db.Queryable<TSK_TRIG>().Where(x => x.JobId == job.ID).First();
+                    TrigArgs args = JsonConvert.DeserializeObject<TrigArgs>(job.Triggers[0].Args);
+                    args.runType = RunType.ToRunNow;
+                    JobManager.AddJob<TJob>((s) => GenerateSchedule(args, s.WithName(jobname)));
+                    trigger.Status = TSK_TRIG.Statuss.Running.GetValue();
+                    trigger.Args = JsonConvert.SerializeObject(args);
+
+                    var db = Biz.Db;
+                    //淇濆瓨鍒版暟鎹簱
+                    var dbTran = db.UseTran(() =>
+                    {
+                        db.Updateable(trigger, "system_ImmediateRun_job").UpdateColumns(q => new { q.Status, q.Args, q.UPDATE_TIME, q.UPDATE_USER }).ExecuteCommand();
+                    });
+                    if (!dbTran.IsSuccess)
+                    {
+                        Logger.Scheduler.Fatal(dbTran.ErrorException, $"绔嬪嵆杩愯宸ヤ綔浠诲姟鏃朵繚瀛樼姸鎬佸埌鏁版嵁搴撳紓甯�");
+                    }
+                    apiAction.LocaleMsg = new($"绔嬪嵆杩愯宸ヤ綔浠诲姟鎴愬姛");
+                }
+            }
+            catch (System.Exception ex)
+            {
+                apiAction.CatchExceptionWithLog(ex);
+            }
+            return apiAction;
+        }
+
+        /// <summary>
         /// 鍋滄鏈嶅姟
         /// </summary>
         public void Stop()
diff --git a/Tiger.Business/Services/Base/TigerJobBase.cs b/Tiger.Business/Services/Base/TigerJobBase.cs
index af7a6f8..f2fc093 100644
--- a/Tiger.Business/Services/Base/TigerJobBase.cs
+++ b/Tiger.Business/Services/Base/TigerJobBase.cs
@@ -14,10 +14,10 @@
     /// </summary>
     public class TigerJobBase
     {
-        public static Schedule Schedule;
-        public static TSK_JOB Job = new TSK_JOB();
-        public static TSK_TRIG Trig = new TSK_TRIG();
-        public static TrigArgs Args = new TrigArgs();
+        public Schedule Schedule;
+        public TSK_JOB Job = new TSK_JOB();
+        public TSK_TRIG Trig = new TSK_TRIG();
+        public TrigArgs Args = new TrigArgs();
         /// <summary>
         /// 寮�濮嬫椂闂�
         /// </summary>
@@ -63,7 +63,7 @@
         /// <param name="JobName"></param>
         /// <param name="remark"></param>
         /// <returns></returns>
-        public static ApiAction SaveFluentSchedulerLog(string status, string remark)
+        public ApiAction SaveFluentSchedulerLog(string status, string remark)
         {
             ApiAction action = new ApiAction();
             if (Trig != null)
@@ -110,7 +110,7 @@
         /// <summary>
         /// 鑾峰彇浠诲姟
         /// </summary>
-        public static void GetJob(string jobType)
+        public void GetJob(string jobType)
         {
             Job = Biz.Db.Queryable<TSK_JOB>().Where(q => q.JobType == jobType).IncludesAllFirstLayer().First();
             Args = JsonConvert.DeserializeObject<TrigArgs>(Job.Triggers[0].Args);
@@ -121,7 +121,7 @@
         /// 鍒ゆ柇鏃堕棿锛岃繑鍥炴槸鍚﹀彲浠ョ户缁伐浣滀换鍔�
         /// </summary>
         /// <returns></returns>
-        public static TskJobInput CheckIFCanGo()
+        public TskJobInput CheckIFCanGo()
         {
             TskJobInput tskJobInput = new TskJobInput();
             var dateTime = DateTime.Now;
diff --git a/Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs b/Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs
index 358e6d6..889ee9a 100644
--- a/Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs
+++ b/Tiger.Controllers.System/Controllers/TSK/TskController.Base.cs
@@ -194,6 +194,27 @@
         }
 
         /// <summary>
+        /// 绔嬪嵆杩愯浠诲姟
+        /// </summary>
+        /// <param name="action"></param>
+        /// <returns></returns>
+        [HttpPost]
+        [Route("api/[controller]/[action]")]
+        public async Task<IActionResult> ImmediateRun(ApiAction action)
+        {
+            ApiAction response = new();
+            try
+            {
+                response = response.GetResponse(DI.Resolve<IBizContext>().GetInterfaceService()?.ImmediateRun(action.NewDataEntity(), action.Data?.ToString()) ?? new ApiAction($"浠诲姟鏈惎鐢�", false));
+            }
+            catch (System.Exception ex)
+            {
+                response = response.GetResponse().CatchExceptionWithLog(ex);
+            }
+            return Ok(response);
+        }
+
+        /// <summary>
         /// 鍒犻櫎浣滀笟
         /// </summary>
         /// <param name="action"></param>
diff --git a/Tiger.IBusiness/Service/IInterfaceService.cs b/Tiger.IBusiness/Service/IInterfaceService.cs
index 52e71df..cb0a794 100644
--- a/Tiger.IBusiness/Service/IInterfaceService.cs
+++ b/Tiger.IBusiness/Service/IInterfaceService.cs
@@ -15,6 +15,7 @@
         public void SetSchedulerFactory(Sundial.ISchedulerFactory schedulerFactory);
         public ApiAction AddJob<TJob>(TJob newEntity, TskJobParam jobParam) where TJob : class, Sundial.IJob;
         public ApiAction AddTskJob<TJob>(TJob newEntity, FluentJobParam jobParam) where TJob : class, ITJob;
+        public ApiAction ImmediateRun<TJob>(TJob newEntity, string jobname) where TJob : class, ITJob;
         public ApiAction AddJob<TJob>(string jobname, params Sundial.TriggerBuilder[] triggerBuilders) where TJob : class, Sundial.IJob;
         public ApiAction UpdateJob(TSK_JOB job);
         public void StartAllJob();

--
Gitblit v1.9.3