Перейти к содержанию

Действия по расписанию

Действия по расписанию позволяют запланировать исполнение api-запроса (и даже нескольких при использовании batch) по гибкому расписанию.

При наступлении указанного времени действие запускается от имени пользователя указанного в sublogin. Если пользователь заблокирован или удалён, то действие выполнено не будет.

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

Так же во всех вызовах, ссылки указывающие на внешние данные могут содержать указания на количество попыток получить данные и интервал между ними. Это полезно в случае когда точное время появления у вас данных не известно - вы создаёте всего одно отложенное действие на самое раннее время и указываете сколько раз пытаться обнаружить данные (в обычном случае первая же неудачная попытка получения данных завершает работу вызова). Подробности - в разделе "Общие замечания".

Не активное действие по расписанию можно использовать как хранилище сложного api-запроса и выполнять по мере надобности через cron.runonce

При планировании запросов issue.send параметр sendwhen допустим только в значениях now и test.

Если действие выполняемое по расписанию создаёт трекер, то в параметрах такого трекера запоминается какой номер действия по расписанию этому причина.

Список действий по расписанию

{

 "action" : "cron.list" 

-- параметры фильтрации, должен быть хотя бы один параметр
--
-- если выбрана последняя порция списка то ответ содержит "last_page" : 1
--
-- доступны поля
--
-- cron.id           -- "идентификатор действия по расписанию" 
-- cron.name         -- "название действия по расписанию" 
-- cron.active       -- "активность действия по расписанию" 
-- cron.lastran      -- "дата и время последнего запуска действия по расписанию (Ys)" 
-- cron.login        -- "владелец, строковое значение" 
-- cron.dt_from      -- "дата начала действия" 
-- cron.dt_till      -- "дата окончания действия" 
-- cron.reltype      -- число
-- cron.relref       -- число
-- cron.errruns      -- "число ошибочных запусков подряд" 
-- cron.errtracker   -- "номер трекера с последней ошибкой
-- cron.create.date  -- "дата создания" (Ys)
-- cron.update.date  -- "дата изменения" (Ys)
-- cron.action       -- "код api-вызова" 
--

,"filter" : [ фильтр в синтаксисе stat.uni ]

,"order" : [ сортировка ответа в синтаксисе stat.uni ]

,"skip" : количество пропускаемых записей от начала списка -- по умолчанию 0

,"first" : количество выбираемых записей после skip -- по умолчанию 50, не более 50

}

ответ

{

  <общие поля>

 ,"list" : [

             {

                "id"   : идентификатор действия по расписанию

               ,"name" : "название действия по расписанию" 

               ,"active" : "активность действия по расписанию" 

               ,"create.date" : "дата создания" (Ys)

               ,"update.date" : "дата изменения" (Ys)

               ,"action" : "код api-вызова из do" 

               ,"lastran" : "дата и время последнего запуска действия по расписанию" 

               ,"sublogin" : "владелец" 

               ,"dt.from" : "дата начала действия" 

               ,"dt.upto" : "дата окончания действия" 

               ,"error.runs" :  "число ошибочных запусков подряд" 

               ,"error.tracker": "номер трекера с последней ошибкой

               ,"reltype" : ...

               ,"relref" : ...
             }

             ...

           ]

}

Чтение действия по расписанию

{

 "action" : "cron.get" 

 ,"id" : идентификатор действия по расписанию

}

ответ

{

  <общие поля>

 ,"obj" : {
           "id"   : идентификатор действия по расписанию

           ,"sublogin" : "владелец" 

           ,"name" : "название действия по расписанию" 

           ,"active" : "активность действия по расписанию" 

           ,"create.date" : "дата создания" (Ys)

           ,"update.date" : "дата изменения" (Ys)

           ,"action" : "код api-вызова из do" 

           ,"dt.from" : "дата начала действия" 

           ,"dt.upto" : "дата окончания действия" 

           ,"dailyrate" : "максимальное число запусков в день" 

           ,"totalrate" : "максимальное число запусков всего" 

           ,"lastran" : "дата и время последнего запуска действия по расписанию" -- с точностью Ys. этот параметр доступен только на чтение

           ,"dailyruns" : "количество запусков за день" -- не текущий день, а за тот в который в lastran. этот параметр доступен только на чтение

           ,"totalruns" : "количество запусков всего" 

           ,"do" : {
                     -- выполняемое действие
                   }

           -- все списки возвращаются в полном виде. Если что-то при создании было указано как "ALL", то при чтении это будет список всех возможных значений.

           ,"minute" : [ список минут ]

           ,"hour" : [ список часов ]

           ,"day" : [ список дней месяца ]

           ,"weekday" : [ список дней недели ]

           ,"workday" : [ список признаков рабочего дня ]

           ,"error.runs" :  "число ошибочных запусков подряд" 

           ,"error.tracker": "номер трекера с последней ошибкой

           ,"reltype" : ...

           ,"relref" : ...
           }
}

Создание действия по расписанию

{

 "action" : "cron.create" 

 ,"name" : "название действия по расписанию

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

 ,"active" : "активность действия по расписанию" -- 0 - не выполнять, 1 - выполнять при наступлении времени

 ,"dt.from" : "дата начала действия" -- не обязательно. дата (Ys) начала проверок на возможность запуска действия
                                     -- по умолчания - без ограничения

 ,"dt.upto" : "дата окончания действия" -- не обязательно. дата (Ys) начиная с которой проверки на возможность запуска действия не делаются
                                        -- по умолчания - без ограничения

 ,"dailyrate" : "" | 1+ -- максимальное число запусков в день. "день" это календарные сутки с 00:00 до 23:59. не обязательно
                        -- "" - не ограничено (по умолчанию)
                        -- число от 1 и больше - величина ограничения

 ,"totalrate" : "" | 1+ -- максимальное число запусков всего. не обязательно
                        -- "" - не ограничено (по умолчанию)
                        -- число от 1 и больше - величина ограничения
 ,"do" : {
           -- выполняемое действие
           --
           -- вызов API без указания параметров аутентификации
           --
           -- будет выполняться по указанному расписанию от имени пользователя указанного в sublogin
           --
           -- если такой пользователь на момент выполнения будет удалён или заблокирован, то выполнения не произойдёт
         }

  ,"minute" : [ список минут ] -- по которым срабатывает действие. от 0 до 55 с шагом 5

-- не обязательно. отсутствие трактуется как "ALL" 
-- вместо списка можно указать "ALL" что будет обозначать "все доступные значения".

  ,"hour" : [ список часов ] -- по которым срабатывает действие. от 0 до 23

  ,"day" : [ список дней месяца ] -- по которым срабатывает действие. от 1 до 31

  ,"weekday" : [ список дней недели ] -- по которым срабатывает действие. от 1 (Пн) до 7 (Вс)

  ,"workday" : [ список признаков рабочего дня ] -- по которым срабатывает действие. 0 - срабатывает в не рабочий день, 1 - срабатывает в рабочий день

  ,"reltype" : ...

  ,"relref" : ...
}

ответ

{

  <общие поля>

 ,"id" : "идентификатор созданного действия по расписанию" 

}

Изменение действия по расписанию

Если работа ведётся не основным пользователем, то вы можете менять только свои задания.

Обновляются только указанные в запросе поля.

{

 "action" : "cron.set" 

 ,"id"   : идентификатор действия по расписанию

 ,"obj" : {

           "name" : название действия по расписанию

          ,"sublogin" : "владелец" -- только при работе основным логином
                                   -- возможность сменить владельца

          ,"active" : "активность действия по расписанию" 

          ,"dt.from" : "дата начала действия" 

          ,"dt.upto" : "дата окончания действия" 

          ,"dailyrate" : "максимальное число запусков в день" 

          ,"totalrate" : "максимальное число запусков всего" 

          ,"do" : {
                   -- выполняемое действие
                  }

          ,"minute" : [ список минут ] или "ALL" 

          ,"hour" : [ список часов ] или "ALL" 

          ,"day" : [ список дней месяца ] или "ALL" 

          ,"weekday" : [ список дней недели ] или "ALL" 

          ,"workday" : [ список признаков рабочего дня ] или "ALL" 

          ,"reltype" : ...

          ,"relref" : ...
          }

  -- не обязательно

 ,"return_fresh_obj" : 0|1
}

ответ

{

  <общие поля>

}

Удаление действия по расписанию

Если работа ведётся не основным пользователем, то вы можете менять удалять только свои задания.

{

 "action" : "cron.delete" 

 ,"id" : идентификатор действия по расписанию
}

ответ

{

  <общие поля>

}

Разовый запуск действия по расписанию

Активность, даты начала и окончания и назначенное время, количество запусков в день игнорируются.

Параметр lastran не обновляется.

Запускается от имени текущего логина.

Так же используйте этот вызов при необходимости тестировать настроенный импорт YML-файлов или при необходимости произвести его вне расписания. Указывайте id от настроенного импорта YML.

{

 "action" : "cron.runonce" 

 ,"id" : идентификатор действия по расписанию

}

ответ

{

  <общие поля>

,"result" : {
             результат выполнения
            }

}