Платформа 3V/Планировщик/Описание задач: различия между версиями
Il.iashin (обсуждение | вклад) |
|||
(не показаны 24 промежуточные версии 5 участников) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE:Описание задач}} | {{DISPLAYTITLE:Описание задач}} | ||
− | + | Задача планировщика - это некоторое JSON описание действия, которое повторяется по заданному времени. Планировщик поддерживает несколько видов задач, например, запрос к сервису, запуск методики или цепочка задач. | |
− | + | == Структура задач планировщика == | |
− | + | JSON описание задачи содержит следующую структуру: | |
− | |||
− | |||
*'''id''' - идентификатор задачи. | *'''id''' - идентификатор задачи. | ||
*'''name''' - наименование задачи. | *'''name''' - наименование задачи. | ||
− | *''' | + | *'''runUrl''' - [[Платформа 3V/Планировщик/Описание задач#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B8_Url|настройки Url]] для запуска задачи. |
+ | *'''checkStateUrl''' - [[Платформа 3V/Планировщик/Описание задач#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B8_Url|настройки Url]] для проверки состояния задачи. | ||
+ | *'''schedule''' - [[Платформа 3V/Планировщик/Описание задач#.D0.A0.D0.B0.D1.81.D0.BF.D0.B8.D1.81.D0.B0.D0.BD.D0.B8.D0.B5|расписание ]] задачи. | ||
+ | *'''isEnable''' - признак включенности задачи, если отметка'''true''' - задача включена и будет обрабатываться планировщиком. | ||
+ | *'''authenticationSettingsId''' - идентификатор [[Платформа 3V/Планировщик/Настройки аутентификации|настроек аутентификации]]. | ||
+ | *'''taskIds''' - коллекция идентификаторов задач цепочки, которые будут выполнятся последовательно (только для ChainScheduledTaskDto). | ||
+ | *'''discriminator''' - [[Платформа 3V/Планировщик/Описание задач#.D0.A2.D0.B8.D0.BF.D1.8B_.D0.B7.D0.B0.D0.B4.D0.B0.D1.87|тип задачи]].<br> | ||
+ | Пример структуры описания задачи: <br> | ||
+ | |||
+ | [[Файл:Задача планировщика.png]] | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:700px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;"> Шаблон описания задачи в формате JSON </div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "id": 0, | ||
+ | "name": "string", | ||
+ | "runUrl": { | ||
+ | "type": "Get", | ||
+ | "url": "string", | ||
+ | "headers": [ | ||
+ | { | ||
+ | "name": "string", | ||
+ | "value": "string" | ||
+ | } | ||
+ | ], | ||
+ | "discriminator": "string" | ||
+ | }, | ||
+ | "checkStateUrl": { | ||
+ | "type": "Get", | ||
+ | "url": "string", | ||
+ | "headers": [ | ||
+ | { | ||
+ | "name": "string", | ||
+ | "value": "string" | ||
+ | } | ||
+ | ], | ||
+ | "discriminator": "string" | ||
+ | }, | ||
+ | "schedule": { | ||
+ | "period": { | ||
+ | "discriminator": "string" | ||
+ | }, | ||
+ | "runTime": { | ||
+ | "hours": 0, | ||
+ | "minutes": 0 | ||
+ | }, | ||
+ | "discriminator": "string" | ||
+ | }, | ||
+ | "isEnable": true, | ||
+ | "authenticationSettingsId": 0, | ||
+ | "discriminator": "string" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div><br> | ||
== Типы задач == | == Типы задач == | ||
− | Задачи бывают | + | Задачи бывают трех видов:<br> |
− | + | ||
− | + | 1.'''ScheduledTaskDto''' - выполнение запроса к сервису | |
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:700px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;"> Пример описания задачи в формате JSON </div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "runUrl": { | ||
+ | "type": "Get", | ||
+ | "url": "https://URL_BASE", | ||
+ | "headers": [], | ||
+ | "discriminator": "TaskUrlDto" | ||
+ | }, | ||
+ | "checkStateUrl": null, | ||
+ | "schedule": { | ||
+ | "timeSpan": "00:10:00", | ||
+ | "period": { | ||
+ | "discriminator": "InfiniteTimesDto" | ||
+ | }, | ||
+ | "runTime": { | ||
+ | "hours": 00, | ||
+ | "minutes": 00 | ||
+ | }, | ||
+ | "discriminator": "TimerScheduleDto" | ||
+ | }, | ||
+ | "isEnable": false, | ||
+ | "authenticationSettingsId": 1, | ||
+ | "id": 1, | ||
+ | "name": "Запрос к сервису", | ||
+ | "discriminator": "ScheduledTaskDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | 2.'''CalcScheduledTaskDto''' - запуск методики (может быть описана в виде выполнения запроса к сервису) | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:700px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;"> Пример описания задачи в формате JSON </div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "runUrl": { | ||
+ | "type": "Get", | ||
+ | "url": "https://******/engine/api/Calculation/206", | ||
+ | "headers": [], | ||
+ | "discriminator": "TaskUrlDto" | ||
+ | }, | ||
+ | "checkStateUrl": null, | ||
+ | "schedule": { | ||
+ | "timeSpan": "00:00:00", | ||
+ | "period": { | ||
+ | "discriminator": "OnceDto" | ||
+ | }, | ||
+ | "runTime": { | ||
+ | "hours": 01, | ||
+ | "minutes": 00 | ||
+ | }, | ||
+ | "discriminator": "TimerScheduleDto" | ||
+ | }, | ||
+ | "isEnable": true, | ||
+ | "authenticationSettingsId": 1, | ||
+ | "id": 1, | ||
+ | "name": "Запуск методики с идентификатором 206", | ||
+ | "discriminator": "CalcScheduledTaskDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | 3. '''ChainScheduledTaskDto''' - цепочка задач.<br> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:700px; overflow:auto;"> | ||
+ | <div style="font-weight:bold;line-height:1.6;"> Пример описания задачи в формате JSON </div> | ||
+ | <div class="mw-collapsible-content mw-collapsed-content"> | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "runUrl": { | ||
+ | "type": "Get", | ||
+ | "url": "https://URL_BASE/engine/api/Calculation/20776", | ||
+ | "headers": [], | ||
+ | "discriminator": "TaskUrlDto" | ||
+ | }, | ||
+ | "checkStateUrl": null, | ||
+ | "schedule": { | ||
+ | "timeSpan": "00:00:00", | ||
+ | "period": { | ||
+ | "discriminator": "OnceDto" | ||
+ | }, | ||
+ | "runTime": { | ||
+ | "hours": 10, | ||
+ | "minutes": 00 | ||
+ | }, | ||
+ | "discriminator": "TimerScheduleDto" | ||
+ | }, | ||
+ | "isEnable": true, | ||
+ | "authenticationSettingsId": 1, | ||
+ | "id": 25, | ||
+ | "name": "Задача 1", | ||
+ | "discriminator": "CalcScheduledTaskDto" | ||
+ | }, | ||
+ | { | ||
+ | "runUrl": { | ||
+ | "type": "Get", | ||
+ | "url": "https://URL_BASE/engine/api/Calculation/20777", | ||
+ | "headers": [], | ||
+ | "discriminator": "TaskUrlDto" | ||
+ | }, | ||
+ | "checkStateUrl": null, | ||
+ | "schedule": { | ||
+ | "timeSpan": "00:00:00", | ||
+ | "period": { | ||
+ | "discriminator": "OnceDto" | ||
+ | }, | ||
+ | "runTime": { | ||
+ | "hours": 10, | ||
+ | "minutes": 00 | ||
+ | }, | ||
+ | "discriminator": "TimerScheduleDto" | ||
+ | }, | ||
+ | "isEnable": true, | ||
+ | "authenticationSettingsId": 1, | ||
+ | "id": 26, | ||
+ | "name": "Задача 2", | ||
+ | "discriminator": "CalcScheduledTaskDto" | ||
+ | }, | ||
+ | { | ||
+ | "taskIds": [ | ||
+ | 25, | ||
+ | 26 | ||
+ | ], | ||
+ | "runUrl": null, | ||
+ | "checkStateUrl": null, | ||
+ | "schedule": { | ||
+ | "timeSpan": "00:00:00", | ||
+ | "period": { | ||
+ | "discriminator": "OnceDto" | ||
+ | }, | ||
+ | "runTime": { | ||
+ | "hours": 10, | ||
+ | "minutes": 00 | ||
+ | }, | ||
+ | "discriminator": "TimerScheduleDto" | ||
+ | }, | ||
+ | "isEnable": true, | ||
+ | "authenticationSettingsId": 1, | ||
+ | "id": 27, | ||
+ | "name": "Запуск цепочки задач 1, 2", | ||
+ | "discriminator": "ChainScheduledTaskDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </div></div> | ||
+ | '''ChainScheduledTaskDto''' от '''ScheduledTaskDto''' отличается тем, что в цепочке указывается коллекция идентификаторов задач цепочки, которые будут выполнятся последовательно. Периодичность и время запуска задач используемых в задаче, не влияет на саму цепочку. В рамках цепочки хранится отдельный статус по выполнению каждой задачи, т.е. её самостоятельные запуски не повлияют на саму цепочку. Если не планируется использовать задачи вне цепочки, то лучше сделать периодичность '''OnceDto''', а время запуска уже прошедшее на момент создания задачи. | ||
== Настройки Url == | == Настройки Url == | ||
Настройки Url для запуска задачи бывают трёх видов: | Настройки Url для запуска задачи бывают трёх видов: | ||
− | + | *'''TaskUrlDto''' - любой тип запроса без параметров в теле запроса | |
− | + | пример: | |
− | + | <syntaxhighlight lang="JSON"> | |
+ | { | ||
+ | "type": "Get", | ||
+ | "url": "https://URL_BASE/repository/api/MetaObjects/Copy?id=17403&parentId=17379", | ||
+ | "headers": null, | ||
+ | "discriminator": "TaskUrlDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | Тип запроса без параметров в теле запроса с аутентификацией в сервисе <br> | ||
+ | пример: | ||
+ | <syntaxhighlight lang="JSON"> | ||
+ | { | ||
+ | "type": "Get", | ||
+ | "url": "https://***********/RefreshConnection", | ||
+ | "headers": [ | ||
+ | { | ||
+ | "name": "secret", | ||
+ | "value": "*****************" | ||
+ | } | ||
+ | ], | ||
+ | "discriminator": "TaskUrlDto" | ||
+ | }, | ||
+ | </syntaxhighlight> | ||
+ | *'''PostWithParamsTaskUrlDto''' - POST-запрос со строковым значением (JSON) параметров в теле запроса | ||
+ | пример: | ||
+ | <syntaxhighlight lang="JSON"> | ||
+ | { | ||
+ | "runBodyParams": "[{\"dictionaryId\":0,\"sortingOptions\":null,\"displayValueOptions\":null,\"options\":{\"groupingOptions\":null,\"groupingMethod\":\"Default\",\"sortingOptions\":null,\"rootElement\":null,\"virtualElements\":null,\"displayValueOptions\":null,\"dictionaryId\":6310,\"filter\":null,\"selection\":null,\"hierarchyId\":null},\"attributeValues\":null,\"defaultValue\":null,\"value\":2,\"isMultiselect\":false,\"isEmptyValuePossible\":false,\"isDisableable\":false,\"isDisabled\":false,\"dataControlOptions\":null,\"id\":2,\"name\":null,\"discriminator\":\"DictionaryParameterDto\"}]", | ||
+ | "type": "Post", | ||
+ | "url": "http://URL_BASE/engine/api/Calculation/16332", | ||
+ | "headers": [], | ||
+ | "discriminator": "PostWithParamsTaskUrlDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | *'''CalcWithParamsTaskUrlDto''' - POST-запрос на запуск методики с описанием параметров в виде параметров методики. | ||
+ | пример: | ||
+ | <syntaxhighlight lang="JSON"> | ||
+ | { | ||
+ | "parameters": [ | ||
+ | { | ||
+ | "options": { | ||
+ | "dictionaryId": 6310, | ||
+ | "filter": null, | ||
+ | "hierarchyId": null, | ||
+ | "limit": null | ||
+ | }, | ||
+ | "value": 3, | ||
+ | "isMultiselect": false, | ||
+ | "id": 2, | ||
+ | "discriminator": "DictionaryParameterDto" | ||
+ | } | ||
+ | ], | ||
+ | "type": "Post", | ||
+ | "url": "http://URL_BASE/engine/api/Calculation/16332", | ||
+ | "headers": [], | ||
+ | "discriminator": "CalcWithParamsTaskUrlDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
Настройки Url для проверки состояния задачи аналогичны настройкам Url для запуска задачи. | Настройки Url для проверки состояния задачи аналогичны настройкам Url для запуска задачи. | ||
+ | |||
+ | Свойство '''type''' доступно только для TaskUrlDto, для CalcWithParamsTaskUrlDto и PostWithParamsTaskUrlDto оно игнорируется и считается равным '''Post''' | ||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Значение !! Описание | ||
+ | |- | ||
+ | | Get(0) || GET-запрос | ||
+ | |- | ||
+ | | Post(1) || POST-запрос | ||
+ | |- | ||
+ | | Put(2) || PUT-запрос | ||
+ | |- | ||
+ | | Delete(3) || DELETE-запрос | ||
+ | |} | ||
== Расписание == | == Расписание == | ||
Расписание бывает двух видов: | Расписание бывает двух видов: | ||
− | + | *'''DaysScheduleDto''' - расписание по дням | |
− | + | пример: | |
+ | <syntaxhighlight lang="JSON"> | ||
+ | "schedule": | ||
+ | { | ||
+ | "days": [ | ||
+ | "Monday", | ||
+ | "Friday" | ||
+ | ], | ||
+ | "period": { | ||
+ | "discriminator": "InfiniteTimesDto" | ||
+ | }, | ||
+ | "runTime": { | ||
+ | "hours": 11, | ||
+ | "minutes": 31 | ||
+ | }, | ||
+ | "discriminator": "DaysScheduleDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | *'''TimerScheduleDto''' - расписание по таймеру. | ||
+ | пример: | ||
+ | <syntaxhighlight lang="JSON"> | ||
+ | "schedule": | ||
+ | { | ||
+ | "timeSpan": "00:05:00", | ||
+ | "period": { | ||
+ | "discriminator": "InfiniteTimesDto" | ||
+ | }, | ||
+ | "runTime": { | ||
+ | "hours": 11, | ||
+ | "minutes": 31 | ||
+ | }, | ||
+ | "discriminator": "TimerScheduleDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
Расписание содержит в себе: | Расписание содержит в себе: | ||
− | *'''Period''' - период действия задачи. | + | *'''Period''' - [[Платформа 3V/Планировщик/Описание задач#.D0.9F.D0.B5.D1.80.D0.B8.D0.BE.D0.B4_.D0.B4.D0.B5.D0.B9.D1.81.D1.82.D0.B2.D0.B8.D1.8F_.D0.B7.D0.B0.D0.B4.D0.B0.D1.87.D0.B8|период действия задачи]]. |
− | *'''RunTime''' - время первого запуска задачи, см. [[Платформа 3V/Планировщик/Настройки задач#.D0.9C.D0.B5.D1.82.D0.BE.D0.B4_GetSchedulerTime|Метод | + | *'''RunTime''' - время первого запуска задачи, см. [[Платформа 3V/Планировщик/Настройки задач#.D0.9C.D0.B5.D1.82.D0.BE.D0.B4_GetSchedulerTime|Метод GetSchedulerTime]]. |
=== Период действия задачи === | === Период действия задачи === | ||
*'''DatePeriodDto''' - период в диапазоне дат. | *'''DatePeriodDto''' - период в диапазоне дат. | ||
+ | пример: | ||
+ | <syntaxhighlight lang="JSON"> | ||
+ | "period": | ||
+ | { | ||
+ | "startDate": "2020-10-12T00:00:00Z", | ||
+ | "endDate": "2020-10-14T00:00:00Z", | ||
+ | "discriminator": "DatePeriodDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
*'''InfiniteTimesDto''' - бесконечный период. | *'''InfiniteTimesDto''' - бесконечный период. | ||
+ | пример: | ||
+ | <syntaxhighlight lang="JSON"> | ||
+ | "period": | ||
+ | { | ||
+ | "discriminator": "InfiniteTimesDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
*'''ManyTimesDto''' - период, ограниченный количеством раз. | *'''ManyTimesDto''' - период, ограниченный количеством раз. | ||
+ | пример: | ||
+ | <syntaxhighlight lang="JSON"> | ||
+ | "period": | ||
+ | { | ||
+ | "times": 5, | ||
+ | "discriminator": "ManyTimesDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
*'''OnceDto''' - Период, ограниченный единственным разом. | *'''OnceDto''' - Период, ограниченный единственным разом. | ||
+ | пример: | ||
+ | <syntaxhighlight lang="JSON"> | ||
+ | "period": | ||
+ | { | ||
+ | "discriminator": "OnceDto" | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Пример == | ||
+ | Пример описания включенной задачи, которая 2 раза с интервалом в 2 минуты выполняет запуск методики ''8380'' со значениями ''[2,3]'' параметра на справочнике с идентификатором ''8376'', с первым запуском в ''10:58'' по времени планировщика и настройками аутентификации с идентификатором ''1'': | ||
+ | <syntaxhighlight lang="JSON"> | ||
+ | { | ||
+ | "runUrl": { | ||
+ | "parameters": [ | ||
+ | { | ||
+ | "dictionaryId": 8376, | ||
+ | "discriminator": "DictionaryParameterDto", | ||
+ | "isMultiselect": true, | ||
+ | "id": 1, | ||
+ | "value": [ | ||
+ | 2, | ||
+ | 3 | ||
+ | ] | ||
+ | } | ||
+ | ], | ||
+ | "type": "Post", | ||
+ | "url": "http://engine/api/Calculation/8380", | ||
+ | "headers": [], | ||
+ | "discriminator": "CalcWithParamsTaskUrlDto" | ||
+ | }, | ||
+ | "checkStateUrl": null, | ||
+ | "schedule": { | ||
+ | "timeSpan": "00:02:00", | ||
+ | "period": { | ||
+ | "times": 2, | ||
+ | "discriminator": "ManyTimesDto" | ||
+ | }, | ||
+ | "runTime": { | ||
+ | "hours": 10, | ||
+ | "minutes": 58 | ||
+ | }, | ||
+ | "discriminator": "TimerScheduleDto" | ||
+ | }, | ||
+ | "isEnable": true, | ||
+ | "authenticationSettingsId": 1, | ||
+ | "id": 1, | ||
+ | "name": "calc_example", | ||
+ | "discriminator": "CalcScheduledTaskDto" | ||
+ | } | ||
+ | </syntaxhighlight> |
Текущая версия на 11:49, 25 апреля 2023
Задача планировщика - это некоторое JSON описание действия, которое повторяется по заданному времени. Планировщик поддерживает несколько видов задач, например, запрос к сервису, запуск методики или цепочка задач.
Содержание
Структура задач планировщика
JSON описание задачи содержит следующую структуру:
- id - идентификатор задачи.
- name - наименование задачи.
- runUrl - настройки Url для запуска задачи.
- checkStateUrl - настройки Url для проверки состояния задачи.
- schedule - расписание задачи.
- isEnable - признак включенности задачи, если отметкаtrue - задача включена и будет обрабатываться планировщиком.
- authenticationSettingsId - идентификатор настроек аутентификации.
- taskIds - коллекция идентификаторов задач цепочки, которые будут выполнятся последовательно (только для ChainScheduledTaskDto).
- discriminator - тип задачи.
Пример структуры описания задачи:
1 {
2 "id": 0,
3 "name": "string",
4 "runUrl": {
5 "type": "Get",
6 "url": "string",
7 "headers": [
8 {
9 "name": "string",
10 "value": "string"
11 }
12 ],
13 "discriminator": "string"
14 },
15 "checkStateUrl": {
16 "type": "Get",
17 "url": "string",
18 "headers": [
19 {
20 "name": "string",
21 "value": "string"
22 }
23 ],
24 "discriminator": "string"
25 },
26 "schedule": {
27 "period": {
28 "discriminator": "string"
29 },
30 "runTime": {
31 "hours": 0,
32 "minutes": 0
33 },
34 "discriminator": "string"
35 },
36 "isEnable": true,
37 "authenticationSettingsId": 0,
38 "discriminator": "string"
39 }
Типы задач
Задачи бывают трех видов:
1.ScheduledTaskDto - выполнение запроса к сервису
1 {
2 "runUrl": {
3 "type": "Get",
4 "url": "https://URL_BASE",
5 "headers": [],
6 "discriminator": "TaskUrlDto"
7 },
8 "checkStateUrl": null,
9 "schedule": {
10 "timeSpan": "00:10:00",
11 "period": {
12 "discriminator": "InfiniteTimesDto"
13 },
14 "runTime": {
15 "hours": 00,
16 "minutes": 00
17 },
18 "discriminator": "TimerScheduleDto"
19 },
20 "isEnable": false,
21 "authenticationSettingsId": 1,
22 "id": 1,
23 "name": "Запрос к сервису",
24 "discriminator": "ScheduledTaskDto"
25 }
2.CalcScheduledTaskDto - запуск методики (может быть описана в виде выполнения запроса к сервису)
1 {
2 "runUrl": {
3 "type": "Get",
4 "url": "https://******/engine/api/Calculation/206",
5 "headers": [],
6 "discriminator": "TaskUrlDto"
7 },
8 "checkStateUrl": null,
9 "schedule": {
10 "timeSpan": "00:00:00",
11 "period": {
12 "discriminator": "OnceDto"
13 },
14 "runTime": {
15 "hours": 01,
16 "minutes": 00
17 },
18 "discriminator": "TimerScheduleDto"
19 },
20 "isEnable": true,
21 "authenticationSettingsId": 1,
22 "id": 1,
23 "name": "Запуск методики с идентификатором 206",
24 "discriminator": "CalcScheduledTaskDto"
25 }
3. ChainScheduledTaskDto - цепочка задач.
1 {
2 "runUrl": {
3 "type": "Get",
4 "url": "https://URL_BASE/engine/api/Calculation/20776",
5 "headers": [],
6 "discriminator": "TaskUrlDto"
7 },
8 "checkStateUrl": null,
9 "schedule": {
10 "timeSpan": "00:00:00",
11 "period": {
12 "discriminator": "OnceDto"
13 },
14 "runTime": {
15 "hours": 10,
16 "minutes": 00
17 },
18 "discriminator": "TimerScheduleDto"
19 },
20 "isEnable": true,
21 "authenticationSettingsId": 1,
22 "id": 25,
23 "name": "Задача 1",
24 "discriminator": "CalcScheduledTaskDto"
25 },
26 {
27 "runUrl": {
28 "type": "Get",
29 "url": "https://URL_BASE/engine/api/Calculation/20777",
30 "headers": [],
31 "discriminator": "TaskUrlDto"
32 },
33 "checkStateUrl": null,
34 "schedule": {
35 "timeSpan": "00:00:00",
36 "period": {
37 "discriminator": "OnceDto"
38 },
39 "runTime": {
40 "hours": 10,
41 "minutes": 00
42 },
43 "discriminator": "TimerScheduleDto"
44 },
45 "isEnable": true,
46 "authenticationSettingsId": 1,
47 "id": 26,
48 "name": "Задача 2",
49 "discriminator": "CalcScheduledTaskDto"
50 },
51 {
52 "taskIds": [
53 25,
54 26
55 ],
56 "runUrl": null,
57 "checkStateUrl": null,
58 "schedule": {
59 "timeSpan": "00:00:00",
60 "period": {
61 "discriminator": "OnceDto"
62 },
63 "runTime": {
64 "hours": 10,
65 "minutes": 00
66 },
67 "discriminator": "TimerScheduleDto"
68 },
69 "isEnable": true,
70 "authenticationSettingsId": 1,
71 "id": 27,
72 "name": "Запуск цепочки задач 1, 2",
73 "discriminator": "ChainScheduledTaskDto"
74 }
ChainScheduledTaskDto от ScheduledTaskDto отличается тем, что в цепочке указывается коллекция идентификаторов задач цепочки, которые будут выполнятся последовательно. Периодичность и время запуска задач используемых в задаче, не влияет на саму цепочку. В рамках цепочки хранится отдельный статус по выполнению каждой задачи, т.е. её самостоятельные запуски не повлияют на саму цепочку. Если не планируется использовать задачи вне цепочки, то лучше сделать периодичность OnceDto, а время запуска уже прошедшее на момент создания задачи.
Настройки Url
Настройки Url для запуска задачи бывают трёх видов:
- TaskUrlDto - любой тип запроса без параметров в теле запроса
пример:
{
"type": "Get",
"url": "https://URL_BASE/repository/api/MetaObjects/Copy?id=17403&parentId=17379",
"headers": null,
"discriminator": "TaskUrlDto"
}
Тип запроса без параметров в теле запроса с аутентификацией в сервисе
пример:
{
"type": "Get",
"url": "https://***********/RefreshConnection",
"headers": [
{
"name": "secret",
"value": "*****************"
}
],
"discriminator": "TaskUrlDto"
},
- PostWithParamsTaskUrlDto - POST-запрос со строковым значением (JSON) параметров в теле запроса
пример:
{
"runBodyParams": "[{\"dictionaryId\":0,\"sortingOptions\":null,\"displayValueOptions\":null,\"options\":{\"groupingOptions\":null,\"groupingMethod\":\"Default\",\"sortingOptions\":null,\"rootElement\":null,\"virtualElements\":null,\"displayValueOptions\":null,\"dictionaryId\":6310,\"filter\":null,\"selection\":null,\"hierarchyId\":null},\"attributeValues\":null,\"defaultValue\":null,\"value\":2,\"isMultiselect\":false,\"isEmptyValuePossible\":false,\"isDisableable\":false,\"isDisabled\":false,\"dataControlOptions\":null,\"id\":2,\"name\":null,\"discriminator\":\"DictionaryParameterDto\"}]",
"type": "Post",
"url": "http://URL_BASE/engine/api/Calculation/16332",
"headers": [],
"discriminator": "PostWithParamsTaskUrlDto"
}
- CalcWithParamsTaskUrlDto - POST-запрос на запуск методики с описанием параметров в виде параметров методики.
пример:
{
"parameters": [
{
"options": {
"dictionaryId": 6310,
"filter": null,
"hierarchyId": null,
"limit": null
},
"value": 3,
"isMultiselect": false,
"id": 2,
"discriminator": "DictionaryParameterDto"
}
],
"type": "Post",
"url": "http://URL_BASE/engine/api/Calculation/16332",
"headers": [],
"discriminator": "CalcWithParamsTaskUrlDto"
}
Настройки Url для проверки состояния задачи аналогичны настройкам Url для запуска задачи.
Свойство type доступно только для TaskUrlDto, для CalcWithParamsTaskUrlDto и PostWithParamsTaskUrlDto оно игнорируется и считается равным Post
Значение | Описание |
---|---|
Get(0) | GET-запрос |
Post(1) | POST-запрос |
Put(2) | PUT-запрос |
Delete(3) | DELETE-запрос |
Расписание
Расписание бывает двух видов:
- DaysScheduleDto - расписание по дням
пример:
"schedule":
{
"days": [
"Monday",
"Friday"
],
"period": {
"discriminator": "InfiniteTimesDto"
},
"runTime": {
"hours": 11,
"minutes": 31
},
"discriminator": "DaysScheduleDto"
}
- TimerScheduleDto - расписание по таймеру.
пример:
"schedule":
{
"timeSpan": "00:05:00",
"period": {
"discriminator": "InfiniteTimesDto"
},
"runTime": {
"hours": 11,
"minutes": 31
},
"discriminator": "TimerScheduleDto"
}
Расписание содержит в себе:
- Period - период действия задачи.
- RunTime - время первого запуска задачи, см. Метод GetSchedulerTime.
Период действия задачи
- DatePeriodDto - период в диапазоне дат.
пример:
"period":
{
"startDate": "2020-10-12T00:00:00Z",
"endDate": "2020-10-14T00:00:00Z",
"discriminator": "DatePeriodDto"
}
- InfiniteTimesDto - бесконечный период.
пример:
"period":
{
"discriminator": "InfiniteTimesDto"
}
- ManyTimesDto - период, ограниченный количеством раз.
пример:
"period":
{
"times": 5,
"discriminator": "ManyTimesDto"
}
- OnceDto - Период, ограниченный единственным разом.
пример:
"period":
{
"discriminator": "OnceDto"
}
Пример
Пример описания включенной задачи, которая 2 раза с интервалом в 2 минуты выполняет запуск методики 8380 со значениями [2,3] параметра на справочнике с идентификатором 8376, с первым запуском в 10:58 по времени планировщика и настройками аутентификации с идентификатором 1:
{
"runUrl": {
"parameters": [
{
"dictionaryId": 8376,
"discriminator": "DictionaryParameterDto",
"isMultiselect": true,
"id": 1,
"value": [
2,
3
]
}
],
"type": "Post",
"url": "http://engine/api/Calculation/8380",
"headers": [],
"discriminator": "CalcWithParamsTaskUrlDto"
},
"checkStateUrl": null,
"schedule": {
"timeSpan": "00:02:00",
"period": {
"times": 2,
"discriminator": "ManyTimesDto"
},
"runTime": {
"hours": 10,
"minutes": 58
},
"discriminator": "TimerScheduleDto"
},
"isEnable": true,
"authenticationSettingsId": 1,
"id": 1,
"name": "calc_example",
"discriminator": "CalcScheduledTaskDto"
}