Задача [0275]: Настройка «Не дублировать и не запускать просроченные таймеры» процесса "Таймер"

Формулировка проблемы: реестр настроен таким образом, что таймер запускается по дате и времени, задаваемому компонентом формы "Дата/время", находящемуся в динамической таблице. При каждом изменении этой динамической таблицы все таймеры, включая просроченные, запускаются каждый раз снова.

Используется: процесс "Таймер", реестры.

Решение: необходимо добавить новое условие в настройки процесса "Таймер": флажок «Не дублировать и не запускать просроченные таймеры» (по умолчанию выключен). Расположение: Настройки таймера -> после группы опций «Время запуска».

Рисунок 179. Настройки таймера

Настройки таймера

Для отключенного флажка поведение системы на момент реализации данной задачи не меняется, т.е. каждый раз запускаются все таймеры.

Для включенного флажка запуск таймеров должен осуществляться по следующему алгоритму:

Если в результате новых настроек случится, что на этапе с процессом "Таймер" будут отсутствовать таймеры для запуска (например, все таймеры просроченные при включенной новой настройке), этап необходимо завершить успешно с автокомментарием:

Отсутствуют таймеры для запуска

Примечание:

События активации и изменения могут быть настроены так, что будут содержать в себе этапы с таймерами, которые ссылаются на один и тот же компонент в форме, при этом в изменении настроена относительная дата (за/через). В результате такой конфигурации возможна ситуация, что даты таймера на форме не изменяли, но при наступлении события изменения предыдущие таймеры автоматически аннулируются, запустятся новые (т.к. фактически по настройкам процесса "Таймер" итоговые даты изменились). Всё это не будет являться ошибкой Synergy.

Доработка уведомлений таймера

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

Действия при обновлении системы

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

Пример использования

Условия: наличие Методолога системы, Группы1 и Пользователя1, принадлежащего этой группе.

  1. Методолог создает новую Форму1:

    • статическая таблица (table) содержит компонент «Дата/время» с вводом времени (date);

    • динамическая таблица (dyntable) содержит компонент «Дата/время» с вводом времени (dyndate).

  2. Методолог создает Реестр1 на основе Формы1:

    • заполняет название, форму и т.д.;

    • в событии «Активация маршрута» в действия добавляет этап с таймером, дата и время запуска которого из компонента date;

    • в событии «Изменение маршрута» в действия добавляет этап с таймером, дата и время запуска которого из компонента dyntable.dyndate, тут же включает новую галочку «Не дублировать и не запускать просроченные таймеры»;

    • дает все права Группе1.

  3. 01.01.2016 г. в 09:00 Пользователь1 открывает модуль «Реестры» → Реестр1, создает новую запись, заполняет дату и время в статической таблице (например 01.01.2016 14:00) и нажимает на кнопку активации.

    Запускается таймер активации. В момент наступления даты/времени таймера активации (1 января в 14:00) запускается маршрут по таймеру. Ответственные за этапы маршрута завершают свои работы.

  4. 01.02.2016 г. в 09:00 Пользователь1 открывает модуль «Реестры» → Реестр1, открывает на редактирование запись из п.3, добавляет новую строчку в динамическую таблицу и заполняет в ней дату и время (например 01.02.2016 14:00), нажимает на кнопку сохранения.

    Запускается таймер изменения. В момент наступления даты/времени таймера изменения (1 февраля в 14:00) запускается маршрут по таймеру. Ответственные за этапы маршрута завершают свои работы.

  5. 01.03.2016 г. в 09:00 Пользователь1 открывает модуль «Реестры» → Реестр1, открывает на редактирование запись из п.3, добавляет новые 2 строки в динамическую таблицу и заполняет в них дату и время (например, оба 01.03.2016 14:00), нажимает на кнопку сохранения.

    Запускается 2 таймера изменения (только по новым строкам из п.5). В момент наступления даты/времени этих двух таймеров изменения (1 марта в 14:00) запускаются 2 маршрута по таймерам. Ответственные за этапы маршрута завершают свои работы.