Разработка в среде JetCalc
  • Введение
  • Описание инструментов разработки
  • Настройка и администрирование сервера
  • Авторизация
  • Система прав
  • Socket
  • База данных
  • Структура модели базы данных
  • Формы редактирования
  • Планировщик задач
  • Очереди задач
  • Хранение файлов
  • Переводы
  • Расчетная система
    • Работа со справочниками
    • Модуль выполнения расчета ячеек
    • Компилятор языка формул
    • Приведение к первичным значениям
  • Подключаемые модули
  • Стили форматирования ячеек
Powered by GitBook
On this page

Was this helpful?

Планировщик задач

Данная библиотека используется для того, чтобы у программистов была возможность планировать запуск определенных задач. Аналогом в системе Linux, является Cron. В системе функционал разработан на основе nodejs модуля Agenda. Для данной библиотеки нет клиентской реализации, поэтому все последующие примеры относятся к серверному коду.

Настройки для планировщика прописываются в основном конфигурационном файле:

agendaConnect    : 'mongodb://localhost/ugmk_agenda'

Реализация расположена в файле: src/agenda.js

AddTask = function(jobname,job,interval){} // добавление задания
RemoveTask = function(jobname){} // удаление задания
EnsureTaskRunning = function(jobname,job){} // проверка на то, что задача есть в списке

Примеры использования из кода модуля modules:

var Cron = require(__base+'src/agenda.js');

Cron.Events.on('ready', function() {
    ModulesHelper.MSSettings(function(err,Set){
        if (Set.usecron){
            Cron.EnsureTaskRunning('git_sync',function(job, done){
                GitHub.Sync(false,done);
            });
        }
    })
})

router.put('/settings', HP.TaskAccess("IsModulesAdmin"), function (req, res, next) {
    ModulesHelper.MSSettings(function(err,Settings){
        var Update = req.body;
        for (var K in Update) Settings[K] = Update[K];
        Settings.save(function(err){
            if (Settings.usecron){
                Cron.AddTask('git_sync',function(job, done){
                    GitHub.SyncModules(false,done);
                },"1 day");
            } else {
                Cron.RemoveTask('git_sync');
            }   
            ModulesHelper.ReCompile(Settings.DoBundle,function(err){
                return res.json({});
            });
        })
    })    
})

В данном примере мы подписались на событие инициализации планировщика (запуск сервера) и в зависимости от того, установлена у нас галочка автоматической синхронизации списка модулей и ошибок из github-а мы запускаем задачу или нет.

В самом маршруте изменения настроек модуля мы либо добавляем задание в планировщик, либо удаляем его.

PreviousФормы редактированияNextОчереди задач

Last updated 5 years ago

Was this helpful?