Платформа 3V/Планировщик/Описание задач: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показаны 24 промежуточные версии 5 участников)
Строка 1: Строка 1:
 
{{DISPLAYTITLE:Описание задач}}
 
{{DISPLAYTITLE:Описание задач}}
*'''runUrl''' - настройки Url для запуска задачи.
+
Задача планировщика - это некоторое JSON описание действия, которое повторяется по заданному времени. Планировщик поддерживает несколько видов задач, например, запрос к сервису, запуск методики или цепочка задач.
*'''checkStateUrl''' -  настройки Url для проверки состояния задачи.
+
== Структура задач планировщика ==
*'''schedule''' - расписание задачи.
+
JSON описание задачи содержит следующую структуру:
*'''isEnable''' - признак включенности задачи, '''true''' - задача включена и будет обрабатываться планировщиком.
 
*'''authenticationSettingsId''' - идентификатор [[Платформа 3V/Планировщик/Настройки аутентификации|настроек аутентификации]].
 
 
*'''id''' - идентификатор задачи.
 
*'''id''' - идентификатор задачи.
 
*'''name''' - наименование задачи.
 
*'''name''' - наименование задачи.
*'''discriminator''' - тип задачи ([[Платформа 3V/Планировщик/Описание задач#.D0.92.D0.B8.D0.B4.D1.8B_.D0.B7.D0.B0.D0.B4.D0.B0.D1.87]]).<br>
+
*'''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>
#'''ScheduledTaskDto''' - выполнение запроса к сервису  
+
 
#'''CalcScheduledTaskDto''' - запуск методики (может быть описана в виде выполнения запроса к сервису)
+
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''' - любой тип запроса без параметров в теле запроса
+
*'''TaskUrlDto''' - любой тип запроса без параметров в теле запроса
#'''PostWithParamsTaskUrlDto''' - POST-запрос со строковым значением (JSON) параметров в теле запроса
+
пример:
#'''CalcWithParamsTaskUrlDto''' - POST-запрос на запуск методики с описанием параметров в виде параметров методики.
+
<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''' - расписание по дням
+
*'''DaysScheduleDto''' - расписание по дням
#'''TimerScheduleDto''' - расписание по таймеру.
+
пример:
 +
<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|Метод AddNewTask]].
+
*'''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 - тип задачи.

Пример структуры описания задачи:

Задача планировщика.png

Шаблон описания задачи в формате JSON
 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 - выполнение запроса к сервису

Пример описания задачи в формате JSON
 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 - запуск методики (может быть описана в виде выполнения запроса к сервису)

Пример описания задачи в формате JSON
 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 - цепочка задач.

Пример описания задачи в формате JSON
 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"
}

Расписание содержит в себе:

Период действия задачи

  • 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"
}