public void Execute(JobExecutionContext context) { JobDataMap dataMap = context.JobDetail.JobDataMap; tbs_BatchQueue batchQueue = dataMap.Get("BatchQueue") as tbs_BatchQueue; QueueStatusUpdate queueUpdateCallBack = dataMap.Get("QueueStatusUpdateCallBack") as QueueStatusUpdate; if (batchQueue == null) { return; } ICommonHandler commonHandler = ServiceContainer.GetService <ICommonHandler>() as ICommonHandler; ILogHandler logHandler = ServiceContainer.GetService <ILogHandler>() as ILogHandler; IBatchProcessHandler batchhandler = ServiceContainer.GetService <IBatchProcessHandler>() as IBatchProcessHandler; List <string> message = new List <string>(); batchQueue.Status = "R"; batchQueue.StartTime = DateTime.Now; batchQueue.LastUpdate = DateTime.Now; batchQueue.Remark = null; commonHandler.UpdateTbs_BatchQueue(CommonUtil.ConvertToXml_Store <tbs_BatchQueue>(new List <tbs_BatchQueue>() { batchQueue })); if (queueUpdateCallBack != null) { queueUpdateCallBack(batchQueue); } var callback = new BatchCallBackDel(batchhandler.BatchUpdateStatus); try { foreach (string tmpBatchCode in batchQueue.BatchCode.Split(',')) { var batchCode = tmpBatchCode.Trim(); var lstAllBatches = logHandler.GetBatchProcessDataList( ConfigName.C_CONFIG_SUSPEND_FLAG, MiscType.C_BATCH_STATUS, MiscType.C_BATCH_LAST_RESULT, BatchStatus.C_BATCH_STATUS_PROCESSING, FlagType.C_FLAG_ON, FlagType.C_FLAG_OFF ); var batchInfo = lstAllBatches.Where(b => b.BatchCode == batchCode).FirstOrDefault(); if (batchInfo == null) { message.Add(string.Format("BatchCode: {0} | Action: Skipped | Remark: Missing from sp_CM_GetBatchProcessDataList", batchCode)); continue; } if (!(batchInfo.EnableRun ?? false)) { message.Add(string.Format("BatchCode: {0} | Action: Skipped | Remark: EnableRun = False", batchCode)); continue; } batchQueue.LastUpdate = DateTime.Now; batchQueue.Remark = "Running BatchCode : " + batchCode; commonHandler.UpdateTbs_BatchQueue(CommonUtil.ConvertToXml_Store <tbs_BatchQueue>(new List <tbs_BatchQueue>() { batchQueue })); if (queueUpdateCallBack != null) { queueUpdateCallBack(batchQueue); } message.Add(string.Format("BatchCode: {0} | Action: Start | Remark: " + DateTime.Now.ToString(), batchCode)); this.RunProcess(batchInfo, "INITIAL", DateTime.Now, callback); message.Add(string.Format("BatchCode: {0} | Action: Finished | Remark: " + DateTime.Now.ToString(), batchCode)); } batchQueue.Status = "C"; batchQueue.EndTime = DateTime.Now; batchQueue.LastUpdate = DateTime.Now; batchQueue.Remark = string.Join("\r\n", message); commonHandler.UpdateTbs_BatchQueue(CommonUtil.ConvertToXml_Store <tbs_BatchQueue>(new List <tbs_BatchQueue>() { batchQueue })); if (queueUpdateCallBack != null) { queueUpdateCallBack(batchQueue); } } catch (Exception ex) { message.Add("ERROR: " + ex.ToString()); batchQueue.Status = "E"; batchQueue.EndTime = DateTime.Now; batchQueue.Remark = string.Join("\n", message); commonHandler.UpdateTbs_BatchQueue(CommonUtil.ConvertToXml_Store <tbs_BatchQueue>(new List <tbs_BatchQueue>() { batchQueue })); if (queueUpdateCallBack != null) { queueUpdateCallBack(batchQueue); } } }