Пример #1
0
        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));
        }
Пример #2
0
        public void Execute(IJobExecutionContext context)
        {
            JobKey       key     = context.JobDetail.Key;
            JobDataMap   dataMap = context.JobDetail.JobDataMap;
            T8TaskEntity t8Task  = dataMap["prms"] as T8TaskEntity;

            Console.WriteLine("1111");
        }
Пример #3
0
        /// <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;
                }
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        /// <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);
            }
        }
Пример #7
0
 /// <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;
 }
Пример #8
0
        /// <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);
        }