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

34 12

Компания МайТэк разработала новое техническое решение «Планировщик задач 2.0». Техническое решение «Планировщик задач 2.0» имеет схожий функционал с техническим решением «Планировщик задач», но отличается от него архитектурой и принципом действия, а также следующими особенностями:

  • Интеграция с планировщиком заданий Windows.
  • Доработанный справочник «Расписания запланированных задач» с новыми дополнительными параметрами, визуальным отображением дней срабатывания расписания и с возможностью задания времени срабатывания с точностью до секунды.
  • Новый тип срабатывания расписания «При событии», позволяющий инициировать настроенные действия при наступлении определенной даты в настроенном реквизите типа «Дата» записей справочников или документов, с возможностью сдвига даты срабатывания до или после наступления события.
  • Для одного расписания можно указать несколько подряд идущих действий.
  • Для отправки почты используется не SBUM.MailFactory, а объектная модель CDO (Collaboration Data Objects), что позволяет отправлять почту через защищенное соединение.
  • Появилась возможность работы со списками рассылки.

В данном решении для управления запланированными задачами используется выделенный сервер планирования. В качестве сервера планирования может использоваться как обычное рабочее место пользователя DIRECTUM с установленной корпоративной пользовательской ОС не ниже Windows Vista, так и выделенный сервер с установленной серверной ОС не ниже Windows Server 2008. Все задачи пользователей будут планироваться с помощью разработанной интеграции в планировщике заданий Windows сервера планирования в отдельной настроенной папке.

Рисунок 1. Планировщик заданий Windows

Для удобства настройки технического решения разработан специальный сценарий «Установки модуля "Планировщик задач 2.0"».

Рисунок 2. Установки модуля «Планировщик задач 2.0»

Рисунок 3. Общие настройки модуля

Рисунок 4. Настройки сервера планирования

Рисунок 5. Настройки работы с почтой

Техническое решение «Планировщик задач 2.0» расширяет возможности базовых модулей DIRECTUM с помощью его основных справочников Действия, Расписания запланированных задач, Запланированные задачи, а также нескольких вспомогательных справочников.

Справочник Действия позволяет настроить различные действия, которые необходимо выполнять в рамках настроенных запланированных задач. Доступны действия «Запустить сценарий», «Отправить задачу» и «Отправить письмо». Для каждого действия можно задать соответствующие дополнительные параметры.

Рисунок 6. Действие "Отправить задачу"

Рисунок 7. Действие "Запустить сценарий"

Рисунок 8. Действие "Отправить письмо"

На закладке «Объекты» можно указать список объектов, необходимых для выполнения запланированной задачи.

Рисунок 9. Закладка "Объекты"

Справочник Расписания запланированных задач позволяет очень гибко настраивать расписание запуска запланированной задачи. При этом есть возможность настроить даты запуска запланированной задачи с учетом календарных или рабочих дней. Задать произвольный, ежедневный, еженедельный или ежемесячный период повторения для периодических задач. Указать дату и время начала срабатывания расписания, и дату и время окончания или количество повторений запланированной задачи. Есть возможность указать дополнительные параметры, соответствующие дополнительным параметрам планировщика заданий Windows. При выборе срабатывания расписания только в рабочие дни, есть возможность указать перенос даты срабатывания с выходного дня назад или вперед до первого рабочего дня.

Рисунок 10. Расписание запланированной задачи с типом срабатывания "По расписанию"

По кнопке «Календарь» в карточке расписания, можно визуально посмотреть даты срабатывания расписания и при необходимости их изменить.

Рисунок 11. Календарь планирования

При выборе срабатывания расписания с типом «При событии», есть возможность настроить срабатывание расписания при наступлении определенной даты в настроенном реквизите типа «Дата» записей справочников или документов, с возможностью сдвига даты срабатывания до или после наступления события.

Рисунок 12. Расписание запланированной задачи с типом срабатывания "При событии"

В справочнике Запланированные задачи настраиваются параметры запланированных задач. На основной закладке карточки справочника отображается информация о результате выполнения последнего запуска, дата последнего запуска и расчетная дата следующего запуска, согласно настроенному расписанию запланированной задачи.

Рисунок 13. Закладка "Основная" карточки запланированной задачи

На закладке «Действия» указываются настроенные действия, которые необходимо выполнить при срабатывании расписания и результат их последнего выполнения.

Рисунок 14. Закладка "Действия" карточки запланированной задачи

На закладке «История» отображается история запуска запланированной задачи, содержащая всю необходимую информацию для анализа результатов выполнения запланированной задачи с точностью до секунды.

Рисунок 15. Закладка "История" карточки запланированной задачи

В случае возникновения нештатных ситуаций автору запланированной задачи и администратору будут отправлены соответствующие уведомления.

Техническое решение совместимо с версией DIRECTUM 4.8 и выше. Все скриншоты указаны для версии DIRECTUM 4.8.

На данный момент техническое решение находится на стадии тестирования и подготовке к сертификации. 

Адик Крымгужин

Круть, давно бы такой встроили в стандартный DIRECTUM)

Анатолий Придыбайло

Ваше решение очень полезное и нужное.

Я на одном из проектов столкнулся с проблемой Directum связанной с Планировщиком задач. В ПЗ стояли сроки через которые необходимо завершить задание, но ПЗ не мог завершить эти задания и они продолжали висеть в диспетчере задач не завершаясь. На мое обращение в поддержку мне сказали что им эта ошибка известна, но не исправлена (на тот момент 5.0.3) и предложили "Обходным решением является создание и запуск дополнительного назначенного задания с командной строкой, прекращающей зависшие процессы. Пример командной строки: Taskkill /IM sbsce.exe /f.
Другим обходным решением может являться периодический перезапуск ОС на сервере, на котором запускаются сценарии посредством планировщика."

Вы в ходе реализации своего решения с такой ошибкой не сталкивались?

Дмитрий Тарасов
Вы в ходе реализации своего решения с такой ошибкой не сталкивались?

Нет, с такой ошибкой мы не сталкивались.

Константин Широбоков

 Дмитрий, отличное решение. Есть вопрос по календарю: учитываются ли пересечения для запуска НЗ? Пересечение может быть критичным в том случае, когда идет работа "тяжелых" сценариев системы. Кроме того, имеет значение и расписание sql job`ов. 

Анатолий,

и они продолжали висеть в диспетчере задач не завершаясь.

Не помогло и управление параметрами НЗ по автозаверешнию через заданный таймаут выполнения? Если в рамках НЗ запускаете не стандартный сценарий системы DIRECTUM, то причины, по которым не завершаются процессы клиентской части, ищите в разработке скрипта (оставшиеся ссылки на объекты системы). 

Дмитрий Тарасов

Если поможет, то заметили проблемы у сценариев, в которых есть показ диалоговых окон и их запуск происходит от пользователя директум с не виндовс аутентификацией. Чтобы устранить проблему пришлось убрать показ диалоговых окон. Проверка на InteractiveMode() почему-то не помогла, пришлось все удалять.

Степан Мурашов

InteractiveMode задается параметром командной строки -IM=False. Если при запуске не указать этот параметр, то режим будет считаться интерактивным.

Дмитрий Тарасов
InteractiveMode задается параметром командной строки -IM=False

Первый раз слышу о таком параметре. Спасибо за информацию, попробуем...

Дмитрий ЛЕНЬКО

Достойное решение! Очень качественно и детально продумано на все случаи жизни! Покажи потенциальному заказчику СЭД - и пол продажи DIRECTUM сделано! Согласен с Адиком Крымгужиным - даёшь в стандартном функционале DIRECTUM! 

Дмитрий Тарасов
Есть вопрос по календарю: учитываются ли пересечения для запуска НЗ? Пересечение может быть критичным в том случае, когда идет работа "тяжелых" сценариев системы.

Константин, прошу прощения, как то пропустил ваш вопрос и заметил только сейчас. Если речь идет про случай, когда запланированная задача еще не успела отработать и по расписанию наступает момент ее повторного запуска, то повторный запуск будет помещен в очередь и запланированная задача запустится только после того, как предыдущая полностью отработает. Таким образом, запуск разных запланированных задач может пересекаться, а в рамках одной запланированной задачи действует принцип очереди.

Кроме того, имеет значение и расписание sql job`ов.

К сожалению, не совсем понял, что имелось в виду.

Константин Широбоков

Я, в свою очередь, тоже проглядел, что уже есть ответ.

Дмитрий, да, про анализ возможности старта новой задачи я понял. Я же имел ввиду несколько другой момент: В одной системе могут выполняться несколько назначенных заданий и заданий на SQL. Все они в той или иной мере потребляют ресурсы и затрагивают данные в БД. Так, выполняющаяся задача №1 может заблокировать ресурсы, нужны задаче №2, что приведет, как минимум, к задержке выполнения. Важность таких временных пересечений определяется, конечно, в частом случае. Но, если добавить проверку на пересечения по времени выполнения, то вероятность стабильного и быстрого выполнения каждой задачи выше.

Ну и про расписание sql job`ов, запускаемых из sql agent`а, суть аналогична: при создании расписания учитывать, что в определенное время уже есть задания по обслуживанию БД. 

Дмитрий Тарасов
Важность таких временных пересечений определяется, конечно, в частом случае. Но, если добавить проверку на пересечения по времени выполнения, то вероятность стабильного и быстрого выполнения каждой задачи выше.

Сейчас такой анализ не производится, но можно заложить это в развитие технического решения. Только тут не совсем понятно, как программно можно определить, какие запланированные задачи могут пересекаться, а какие нет. Понятно, что все это касается только запуска сценариев и частично запуска задач по ТМ, но не давать их параллельно запускать, как-то не есть хорошо. 

Ну и про расписание sql job`ов, запускаемых из sql agent`а, суть аналогична: при создании расписания учитывать, что в определенное время уже есть задания по обслуживанию БД. 

Сейчас такой анализ тоже не производится. Как вариант, можно сделать настройку для админа техрешения, которая будет запрещать запускать запланированные задачи пользователей в определенные дни и промежутки времени или автоматически сдвигать запуск до или после настроенного промежутка проведения плановых работ с БД. 

Дмитрий Тарасов

Решение сертифицировано: Планировщик задач 2.0

Авторизуйтесь, чтобы написать комментарий