public void Test1() { T8TaskEntity t8Task = new T8TaskEntity(); t8Task.TaskTitle = "传8月采集任务"; t8Task.GenerateTime = DateTime.Now; t8Task.T8TaskStatus = T8TaskStatus.Created; T8FileEntity fileEntity = new T8FileEntity(); fileEntity.SqlString = "select * from dual"; fileEntity.SqlStartTime = DateTimeMaster.LastMonthBegin(DateTime.Now); fileEntity.SqlEndTime = DateTimeMaster.LastMonthEnd(DateTime.Now); fileEntity.DbFileType = DbFileType.SQLite; fileEntity.GroupName = "月数据采集组"; fileEntity.JobName = "月数据采集作业"; fileEntity.QuartzCronExpression = "0/10 * * * * ?"; t8Task.T8FileEntity = fileEntity; ScheduleBase.Scheduler.Start(); T8TaskJobService jobService = new T8TaskJobService(); jobService.T8TaskEntity = t8Task; ScheduleBase.AddSchedule(jobService); Thread.Sleep(TimeSpan.FromSeconds(120)); }
public void Execute(IJobExecutionContext context) { JobKey key = context.JobDetail.Key; JobDataMap dataMap = context.JobDetail.JobDataMap; T8TaskEntity t8Task = dataMap["prms"] as T8TaskEntity; Console.WriteLine("1111"); }
/// <summary> /// 执行 /// </summary> /// <param name="t8Task"></param> public void Execute(T8TaskEntity t8Task, CancellationToken ct) { t8Task.T8TaskStatus = T8TaskStatus.Executing; foreach (Action <T8TaskEntity> item in ProductParts) { ct.ThrowIfCancellationRequested(); try { item(t8Task); } catch { break; } } }
public void CreateTaskEntity_Test() { T8ConfigEntity t8Config = T8ConfigHelper.T8Config; T8FileEntity t8FileEntity = Mapper.Map <T8FileEntity>(t8Config); T8ConfigItemContainer container; t8Config.T8ItemContainerDic.TryGetValue(DateType.Month, out container); ACreateTask service = AutoFacContainer.ResolveNamed <ACreateTask>(typeof(ServiceCreateTask).Name); service.InitData(container.T8ConfigItemSale, t8Config); T8TaskEntity t8TaskEntity = service.CreateTask(); this.GenerateFileNameStragety_Test(t8TaskEntity.T8FileEntity); service.InitData(container.T8ConfigITemOnShelf, t8Config); t8TaskEntity = service.CreateTask(); this.GenerateFileNameStragety_Test(t8TaskEntity.T8FileEntity); }
protected virtual T8TaskEntity GetNewTask(TaskSourceType taskSourceType) { T8FileEntity t8FileEntity = Mapper.Map <T8FileEntity>(this._T8ConfigItemEntity); t8FileEntity.DbFileType = this._T8ConfigEntity.DbFileType; t8FileEntity.FtpInfo = this._T8ConfigEntity.FtpInfo; t8FileEntity.DataBaseInfo = this._T8ConfigEntity.DataBaseInfo; t8FileEntity.TaskSourceType = taskSourceType; var sqlQueryService = this.GetISqlQueryTimeInstance(this._T8ConfigItemEntity.DateType); t8FileEntity.SqlStartTime = sqlQueryService.GetStartTime(DateTime.Now); t8FileEntity.SqlEndTime = sqlQueryService.GetEndTime(DateTime.Now); T8TaskEntity t8TaskEntity = new T8TaskEntity(); t8TaskEntity.TaskTitle = Common.GetT8TaskTitle(this._T8ConfigItemEntity.DateType, this._T8ConfigItemEntity.DataType); t8TaskEntity.GenerateTime = DateTime.Now; t8TaskEntity.T8TaskStatus = T8TaskStatus.Created; t8TaskEntity.TaskSourceType = taskSourceType; t8TaskEntity.T8FileEntity = t8FileEntity; return(t8TaskEntity); }
/// <summary> /// 构建T8任务 /// </summary> private void BuildServiceTask(T8ConfigItemEntity t8ConfigItem, CancellationToken ct) { try { ct.ThrowIfCancellationRequested(); ACreateTask createTaskService = AutoFacContainer.ResolveNamed <ACreateTask>(typeof(ServiceCreateTask).Name); T8TaskEntity t8Task = createTaskService.CreateTask(); if (t8Task != null) { //获取文件名 AFileName aFileNameService = AutoFacContainer.ResolveNamed <AFileName>(typeof(GeneralFileName).Name); t8Task.T8FileEntity.GeneralFileInfo = new T8FileInfoEntity { FileName = aFileNameService.FileName(t8Task.T8FileEntity), FilePath = aFileNameService.FileFullName(t8Task.T8FileEntity) }; T8TaskEntity taskEntityQueueItem; if (Completed_TaskQueue.TryGetValue(t8Task.GenerateTaskQueueKey, out taskEntityQueueItem)) { return; } if (Processing_TaskQueue.TryGetValue(t8Task.GenerateTaskQueueKey, out taskEntityQueueItem)) { return; } if (Error_TaskQueue.TryGetValue(t8Task.GenerateTaskQueueKey, out taskEntityQueueItem)) { return; } //添加到执行中队列 if (!Common.AddTaskToQueue(Processing_TaskQueue, t8Task, TaskQueueType.Processing)) { LogUtil.WriteLog($"任务队列[{t8Task.TaskTitle}]添加失败"); Common.SetTaskErrorStatus(t8Task, "添加Processing_TaskQueue失败"); Common.AddTaskToQueue(Error_TaskQueue, t8Task, TaskQueueType.Error); return; } //构造数据文件产品并执行 DbFileProductDirector director = new DbFileProductDirector(); ADbFileProductBuilder productBuilder = new DbFileProductBuilder(); director.ConstructProduct(productBuilder); DbFileProduct product = productBuilder.GetDbFileProduct(); product.Execute(t8Task, cts.Token); //任务结束 1从Processing_TaskQueue队列移走 2任务完成,移入Completed_TaskQueue队列 3任务失败,移入 if (Common.RemoveTaskFromQueue(Processing_TaskQueue, t8Task, TaskQueueType.Processing)) { if (t8Task.T8TaskStatus == T8TaskStatus.Complete) { Common.AddTaskToQueue(Completed_TaskQueue, t8Task, TaskQueueType.Completed); LogUtil.WriteLog($"T8任务[{t8Task.TaskTitle}]执行完成,转移到Completed_TaskQueue队列"); } else { Common.AddTaskToQueue(Error_TaskQueue, t8Task, TaskQueueType.Error); LogUtil.WriteLog($"T8任务[{t8Task.TaskTitle}]执行失败,转移到Error_TaskQueue队列,等待下次重试"); } } } else { LogUtil.WriteLog("创建任务实体失败"); } } catch (Exception ex) { LogUtil.WriteLog(ex); } }
/// <summary> /// 设置任务错误状态 /// </summary> /// <param name="t8Task"></param> /// <param name="msg"></param> /// <returns></returns> public static void SetTaskErrorStatus(T8TaskEntity t8Task, string msg) { t8Task.T8TaskStatus = T8TaskStatus.Error; t8Task.ExecFailureTime = t8Task.ExecFailureTime + 1; t8Task.Content = !string.IsNullOrEmpty(t8Task.Content) ? t8Task.Content + $"\r\n{msg}" : msg; }
/// <summary> /// 队列中删除队列 /// </summary> /// <param name="queue"></param> /// <param name="t8Task"></param> /// <returns></returns> public static bool RemoveTaskFromQueue(ConcurrentDictionary <string, T8TaskEntity> queue, T8TaskEntity t8Task, TaskQueueType taskQueue) { if (queue == null) { return(false); } T8TaskEntity tempT8Task; if (queue.TryRemove(t8Task.GenerateTaskQueueKey, out tempT8Task)) { string taskQueueFullpath = Common.GetTaskQueueFileFullpath(taskQueue); bool isAdd = SerializableHelper <T8TaskEntity> .BinarySerializeFile(taskQueueFullpath, queue.Values.ToList()); if (!isAdd) { queue.TryRemove(t8Task.GenerateTaskQueueKey, out tempT8Task); return(false); } } return(true); }