You've already forked TaskManagerFor1C
mirror of
https://github.com/wizi4d/TaskManagerFor1C.git
synced 2026-04-01 17:50:16 +02:00
148 lines
10 KiB
Markdown
148 lines
10 KiB
Markdown
# TaskManagerFor1C
|
|
|
|
Библиотека TaskManagerFor1C предназначена для создания асинхронных и параллельных алгоритмов с гарантированным выполнением в среде 1С Предприятия на базе фоновых заданий.
|
|
|
|
Файлы поставки доступны на [закладке с релизами](https://github.com/wizi4d/TaskManagerFor1C/releases).
|
|
|
|
## Цели TaskManagerFor1C:
|
|
|
|
- Повышение производительности программных продуктов за счет добавления параллелелизма в программный код;
|
|
- Повышение продуктивности разработчиков за счет упрощения работы по управлению заданиями.
|
|
|
|
## Область применения
|
|
|
|
- Использование параллельных вычислений в автоматизации бизнес процессов;
|
|
- Параллельное выполнение запросов в долгих отчетах/обработках;
|
|
- Процессы загрузки/выгрузки данных;
|
|
- Организация нагрузочного тестирования.
|
|
|
|
## Принцип работы
|
|
|
|

|
|
|
|
## Настройка
|
|
|
|
Для настройки нужно использовать обработку "Управление менеджером заданий".
|
|
|
|

|
|
|
|
Доступные настройки:
|
|
|
|
- Ограничение на количество исполнителей - для балансировки нагрузки на сервер 1С. Принимает значение от 0 до 9999. При значении 0 задания в работу браться не будут.
|
|
- Глубина хранения истории (дни) - если указано значение отличное от 0, тогда подсистема сама будет чистить информацию по старым выполненным заданиям оставляя последние N дней указанных в настройке.
|
|
|
|
Запуск подсистемы, остановка и очистка очереди выполняется верхними, говорящими за себя кнопками.
|
|
В качестве индикатора работы подсистемы выступает флаг `Менеджер запущен`.
|
|
|
|
При нажатии на кнопку с шестеренкой (рядом с кнопкой `Все действия`) открываются настройки методов-обработчиков:
|
|
- Максимальное количество попыток выполнения - при достижении лимита на количество попыток выполнения задание будет автоматически отменяться;
|
|
- Пауза перед новой попыткой выполнения - время отсрочки повторного запуска в секундах. В качестве отправной точки отсчета используется время начала неудачной попытки выполнения. Если НачалоВыполнения + ПаузаПередНовойПопыткой > текущего времени, то задание ставится на паузу. Когда НачалоВыполнения + ПаузаПередНовойПопыткой становится <= текущему времени, задание с паузы снимается;
|
|
- Максимальное количество исполнителей - персональное ограничение метода-обработчика на количество исполнителей;
|
|
- Приоритет метода-обработчика - задания с максимальным приоритетом всегда выдаются из очереди первыми.
|
|
|
|
## Жизненный цикл задания
|
|
|
|

|
|
|
|
## Программный интерфейс
|
|
|
|
#### ДобавитьЗадание(ИмяМетода, Параметры)
|
|
|
|
Добавляет новое задание в очередь. На задания в очереди
|
|
распространяется ограничение на количество одновременно
|
|
работающих исполнителей.
|
|
|
|
Параметры:
|
|
ИмяМетода - точка входа для выполнения задания.
|
|
Сигнатура метода должна быть с одним параметром,
|
|
например, МетодЗадания(Параметры).
|
|
Параметры - структура содержащая необходимые входные
|
|
данные, для выполнения задания. При добавлении
|
|
расширяется свойством "КлючЗадания", значением
|
|
которого будет идентификатор задания в очереди.
|
|
Возвращает:
|
|
Идентификатор задания.
|
|
|
|
#### ДобавитьЗаданиеВнеОчереди(ИмяМетода, Параметры)
|
|
|
|
Запускает асинхронное выполнение задания минуя очередь.
|
|
|
|
>*На такие задания ограничение на количество исполнителей НЕ распространяется, НО квота используется*
|
|
|
|
Параметры:
|
|
ИмяМетода - точка входа для выполнения задания.
|
|
Сигнатура метода должна быть с одним параметром,
|
|
например, МетодЗадания(Параметры).
|
|
Параметры - структура содержащая необходимые входные
|
|
данные, для выполнения задания. При добавлении
|
|
расширяется свойством "КлючЗадания", значением
|
|
которого будет идентификатор задания в очереди.
|
|
Возвращает:
|
|
Идентификатор задания.
|
|
|
|
#### ПолучитьСостояниеЗадания(КлючЗадания)
|
|
|
|
Позволяет получить текущее состояние задания.
|
|
|
|
Параметры:
|
|
КлючЗадания - идентификатор задания.
|
|
Возвращает:
|
|
Состояние задания.
|
|
|
|
#### ОжидатьСостояниеЗадания(КлючЗадания, ОжидаемоеСостояние, Таймаут = 5)
|
|
|
|
Усыпляет текущий поток до установления указанного состояния
|
|
у задания либо до истечения указанного времени.
|
|
|
|
Параметры:
|
|
КлючЗадания - идентификатор задания.
|
|
ОжидаемоеСостояние - состояние, которого хотим дождаться.
|
|
Таймаут - максимальное время ожидания, сек.
|
|
Возвращает:
|
|
Истина, если состояния дождались иначе Ложь.
|
|
|
|
#### ОжидатьИзмененияСостояния(КлючЗадания, ТекущееСостояние, Таймаут = 5)
|
|
|
|
Усыпляет текущий поток до изменения состояния у задания
|
|
с указанного на любое другое либо до истечения указанного
|
|
времени.
|
|
|
|
Параметры:
|
|
КлючЗадания - идентификатор задания.
|
|
ТекущееСостояние - состояние с которого хотим уйти.
|
|
Таймаут - максимальное время ожидания, сек.
|
|
Возвращает:
|
|
Истина, если состояния дождались иначе Ложь.
|
|
|
|
#### ДождатьсяВыполнения(КлючиЗаданий, Таймаут = 5)
|
|
|
|
Усыпляет текущий поток до выполнения указанного списка
|
|
заданий либо до истечения указанного времени.
|
|
|
|
Параметры:
|
|
КлючиЗаданий - массив с идентификаторами заданий.
|
|
ТекущееСостояние - состояние с которого хотим уйти.
|
|
Таймаут - максимальное время ожидания, сек.
|
|
Возвращает:
|
|
Истина, если состояния дождались иначе Ложь.
|
|
|
|
#### ОтменитьЗадание(КлючЗадания)
|
|
|
|
Отменяет задание, если оно находится в состоянии Ожидает.
|
|
|
|
Параметры:
|
|
КлючЗадания - идентификатор задания.
|
|
|
|
#### ОтменитьВсеЗаданияВОчереди()
|
|
|
|
Отменяет все задания в состоянии Ожидает и НаПаузе.
|
|
|
|
#### СократитьИсториюВыполненияЗаданий( ТребуемаяГлубинаИсторииВДнях)
|
|
|
|
Очищает информацию по старым выполненным заданиям оставляя
|
|
последнее указанное количество дней. Предназначен для "ручного"
|
|
управления историей выполнения заданий.
|
|
|
|
Параметры:
|
|
ТребуемаяГлубинаИсторииВДнях - количество дней истории,
|
|
которые необходимо оставить. |