Esempio n. 1
0
        public static void Stop()
        {
            // task details tábla szinkronizáció leállítása
            TableSync.Disable <T_TASKS_DETAILS>();

            // task tábla szinkronizáció leállítása
            TableSync.Disable <T_TASKS>();

            // task timer megállítása
            s_taskTimer?.Change(Timeout.Infinite, Timeout.Infinite);

            // megvárjuk míg végigfut a ciklikus task feladata
            s_taskTimer?.WaitToFinish();
            s_taskTimer?.Dispose();
            s_taskTimer = null;

            lock (s_activeTasks)
            {
                // egyéb taskok leállítása
                Parallel.ForEach(s_activeTasks, current => StopTask(current.Value));

                // taskok törlése
                s_activeTasks.Clear();
            }

            s_connectionProvider = null;

            MessageHandler.SendMessage(nameof(TaskManager), "Task vezérlés befejeződött", MessageHandler.MessageType.Info);
        }
Esempio n. 2
0
        protected void RegisterMainTables()
        {
            TableSync.RegisterTables(nameof(T_SETTINGS), nameof(T_TASKS), nameof(T_TASKS_DETAILS));

            // speciális eseménykezelők hozzáadása
            TableSync.AddEventHandler(ConfigSync.SyncCallback, ConfigSync.DeleteFilter);
            TableSync.AddEventHandler <T_TASKS>(TaskManager.SyncCallbackTasks, null);
            TableSync.AddEventHandler(TaskManager.SyncCallbackTasksDetails, TaskManager.TaskDetailsDeleteFilter);
        }
Esempio n. 3
0
        public static void Start()
        {
            MessageHandler.SendMessage(nameof(TaskManager), "Task vezérlés kezdése", MessageHandler.MessageType.Info);
            IsActive = true;

            s_connectionProvider = new LXConnectionProvider();

            // task tábla szinkronizáció engedélyezése
            TableSync.Enable <T_TASKS>();

            // task details tábla szinkronizáció engedélyezése
            TableSync.Enable <T_TASKS_DETAILS>();

            // task timer indítása a ciklikus taskokhoz
            s_taskTimer = new LXTimer(TimerCallBack, null, TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5));
        }
        private async Task <JobLog> RunJobInternal(PumperJobItem job, IDataPumperSource sourceProvider, IDataPumperTarget targetProvider, bool fullReloading)
        {
            Log.Warn($"Processing {job.Name}");
            using (var ctx = new DataPumperContext(_configuration.MetadataConnectionString))
            {
                var tableSync = await ctx.TableSyncs.FirstOrDefaultAsync(ts => ts.TableName == job.TargetTableName);

                if (tableSync == null)
                {
                    tableSync = new TableSync
                    {
                        TableName = job.TargetTableName
                    };
                    ctx.TableSyncs.Add(tableSync);
                }

                var jobLog = new JobLog {
                    TableSync = tableSync
                };
                ctx.Logs.Add(jobLog);
                await ctx.SaveChangesAsync();

                try
                {
                    var sw = new Stopwatch();
                    sw.Start();

                    targetProvider.Progress += UpdateJobLog;

                    await targetProvider.RunQuery(job.PreRunQuery);

                    if (fullReloading)
                    {
                        // При полной перезаливке обнуляем ActualDate
                        tableSync.ActualDate = null;
                    }

                    var jobActualDate = tableSync.ActualDate; // Если переливка не выполнялась, то будет Null
                    var onDate        = jobActualDate ?? DateTime.Today.AddYears(-100);

                    var currentDate = await sourceProvider.GetCurrentDate(_configuration.CurrentDateQuery) ?? DateTime.Now.Date;

                    if (job.HistoricMode)
                    {
                        if (currentDate == tableSync.ActualDate)
                        {
                            onDate = tableSync.PreviousActualDate ?? DateTime.Today.AddYears(-100);
                        }
                        else
                        {
                            tableSync.PreviousActualDate = tableSync.ActualDate;
                        }
                    }

                    var records = await _pumper.Pump(sourceProvider, targetProvider,
                                                     new PumpParameters(
                                                         new TableName(job.SourceTableName),
                                                         new TableName(job.TargetTableName),
                                                         _configuration.ActualityColumnName,
                                                         _configuration.HistoricColumnFrom,
                                                         _configuration.TenantField,
                                                         onDate.AddDays(_configuration.BackwardReloadDays),
                                                         job.HistoricMode,
                                                         currentDate,
                                                         fullReloading,
                                                         _tenantCodes)
                    {
                        DeleteProtectionDate = _configuration.DeleteProtectionDate
                    });

                    tableSync.ActualDate    = currentDate;
                    jobLog.EndDate          = DateTime.Now;
                    jobLog.RecordsProcessed = records;
                    jobLog.Status           = SyncStatus.Success;
                    await targetProvider.RunQuery(job.PostRunQuery);

                    sw.Stop();
                }
                catch (Exception ex)
                {
                    Log.Error($"Error processing job {job}", ex);
                    jobLog.Message = ex.Message;
                    jobLog.Status  = SyncStatus.Error;
                }

                await ctx.SaveChangesAsync();

                return(jobLog);
            }
        }
Esempio n. 5
0
 /// <summary>
 /// Event figyelés leállítása
 /// </summary>
 public static void Stop()
 => TableSync.Disable <T_SETTINGS>();
Esempio n. 6
0
 /// <summary>
 /// Event figyelés indítása
 /// </summary>
 public static void Start()
 {
     TableSync.Enable <T_SETTINGS>();
 }