// Flip the bit field in the Scheduled Task Queue public static void UpdateBitField(Guid taskId, int bit) { using (IDatabase db = new NPocoDatabase("CommunicationCenter")) { var sql = Sql.Builder; sql.Append(ScheduledTaskTSQL.UpdateActiveBit(), new { @bitfield = bit, @taskId = taskId }); db.Execute(sql); } }
// Flip the bit field in the Scheduled Task Queue public static void UpdateTaskStatus(Guid taskId, Status status) { using (IDatabase db = new NPocoDatabase("CommunicationCenter")) { var sql = Sql.Builder; sql.Append(ScheduledTaskTSQL.UpdateTaskStatus(), new { @status = status, @taskId = taskId }); db.Execute(sql); } }
// Creates an entry in ScheduledTaskQueueHist for the task //public static void MoveToHistory(dynamic task, Guid histId, string message, DateTime startTime, DateTime endTime) { // using (IDatabase db = new NPocoDatabase("CommunicationCenter")) { // var sql = Sql.Builder; // sql.Append(ScheduledTaskTSQL.SetToHistory(), new { // @id = histId, @taskId = task.TaskId, @companyCode = task.CompanyCode, @notificationCompanyId = task.NotificationCompanyId, // @scheduledTime = task.ScheduledTime, @taskType = task.TaskType, @status = message, @startTime = startTime, // @endTime = endTime // }); // db.Execute(sql); // } //} // Update a task based on it's cron public static void UpdateScheduledTime(dynamic task, DateTime startTime, DateTime endTime) { using (IDatabase db = new NPocoDatabase("CommunicationCenter")) { var sql = Sql.Builder; sql.Append(ScheduledTaskTSQL.UpdateScheduledTask(), new { @scheduledTime = ScheduleUtils.CalculateNextRun(task.ScheduledTime, task.ScheduleCron), @lastStartTime = startTime, @lastEndTime = endTime, @taskId = task.TaskId, @companyCode = task.CompanyCode }); db.Execute(sql); } }
public Scheduler() { using (IDatabase db = new NPocoDatabase("CommunicationCenter")) { var sql = Sql.Builder; sql.Append(ScheduledTaskTSQL.ResetAllProcessingTasks()); db.Execute(sql); } Thread thread = new Thread(CreateAgents); thread.Start(); }
// Pull the scheduled tasks from the Queue private static void RunScheduledTasks(BufferBlock <ScheduledTaskQueueDto> buffer) { while (true) { List <ScheduledTaskQueueDto> tasks = new List <ScheduledTaskQueueDto>(); using (IDatabase db = new NPocoDatabase("CommunicationCenter")) { var sql = Sql.Builder; sql.Append(ScheduledTaskTSQL.GetReadyTasks()); tasks = db.Fetch <ScheduledTaskQueueDto>(sql); } foreach (ScheduledTaskQueueDto task in tasks) { buffer.Post(task); ScheduleUtils.UpdateBitField(task.TaskId, 0); } Thread.Sleep(new TimeSpan(0, 1, 0)); // 1 minute interval } }