diff --git a/README.md b/README.md index 82c9c4f..a2cdb9a 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,146 @@ Библиотека TaskManagerFor1C предназначена для создания асинхронных и параллельных алгоритмов с гарантированным выполнением в среде 1С Предприятия на базе фоновых заданий. -Цели TaskManagerFor1C: -* повышение производительности программных продуктов за счет добавления параллелелизма в программный код; -* повышение продуктивности разработчиков за счет упрощения работы по управлению заданиями. \ No newline at end of file +## Цели TaskManagerFor1C: + +- Повышение производительности программных продуктов за счет добавления параллелелизма в программный код; +- Повышение продуктивности разработчиков за счет упрощения работы по управлению заданиями. + +## Область применения + +- Использование параллельных вычислений в автоматизации бизнес процессов, например: + - Расчет заработной платы можно распараллелить по отдельным сотрудникам; + - Параллельное выполнение запросов в долгих отчетах/обработках; +- Процессы загрузки/выгрузки данных; +- Организация нагрузочного тестирования. + +## Настройка + +Для настройки нужно использовать обработку[^Имя обработки]: +[^Имя обработки]: Название в конфигураторе - мзУправлениеМенеджеромЗаданий, синоним - Управление менеджером заданий + +![Управление менеджером заданий](http://habrastorage.org/files/5d3/c22/ba9/5d3c22ba93ac40dba8096b5689850cfe.JPG "Настройки менеджера заданий") + +Доступные настройки: + +- Ограничение на количество исполнителей - для балансировки нагрузки на сервер 1С. Принимает значение от 0 до 9999. При значении 0 задания в работу браться не будут. +- Глубина хранения истории (дни) - если указано значение отличное от 0, тогда подсистема сама будет чистить информацию по старым выполненным заданиям оставляя последние N дней указанных в настройке. + +Запуск подсистемы, остановка и очистка очереди выполняется верхними, говорящими за себя кнопками. +В качестве индикатора работы подсистемы выступает флаг `Менеджер запущен`. + +## Жизненный цикл задания + +![Жизненный цикл задания](http://habrastorage.org/files/e6d/5cd/332/e6d5cd3327874df8a41402d446c5fa70.jpg) + +## Программный интерфейс + +#### ДобавитьЗадание(ИмяМетода, Параметры) + + Добавляет новое задание в очередь. На задания в очереди распространяется ограничение на количество одновременно работающих исполнителей. + + Параметры: + + ИмяМетода - точка входа для выполнения задания. Сигнатура метода должна быть с одним параметром, например, МетодЗадания(Параметры). + + Параметры - структура содержащая необходимые входные данные, для выполнения задания. При добавлении расширяется свойством "КлючЗадания", значением которого будет идентификатор задания в очереди. + + Возвращает: + + Идентификатор задания. + +#### ДобавитьЗаданиеВнеОчереди(ИмяМетода, Параметры) + + Запускает асинхронное выполнение задания минуя очередь. + +>*На такие задания ограничение на количество исполнителей НЕ распространяется, НО квота используется* + + Параметры: + + ИмяМетода - точка входа для выполнения задания. Сигнатура метода должна быть с одним параметром, например, МетодЗадания(Параметры). + + Параметры - структура содержащая необходимые входные данные, для выполнения задания. При добавлении расширяется свойством "КлючЗадания", значением которого будет идентификатор задания в очереди. + + Возвращает: + + Идентификатор задания. + +#### ПолучитьСостояниеЗадания(КлючЗадания) + + Позволяет получить текущее состояние задания. + + Параметры: + + КлючЗадания - идентификатор задания. + + Возвращает: + + Состояние задания. + +#### ОжидатьСостояниеЗадания(КлючЗадания, ОжидаемоеСостояние, Таймаут = 5) + + Усыпляет текущий поток до установления указанного состояния у задания либо до истечения указанного времени. + + Параметры: + + КлючЗадания - идентификатор задания. + + ОжидаемоеСостояние - состояние, которого хотим дождаться. + + Таймаут - максимальное время ожидания, сек. + + Возвращает: + + Истина, если состояния дождались иначе Ложь. + +#### ОжидатьИзмененияСостояния(КлючЗадания, ТекущееСостояние, Таймаут = 5) + + Усыпляет текущий поток до изменения состояния у задания с указанного на любое другое либо до истечения указанного времени. + + Параметры: + + КлючЗадания - идентификатор задания. + + ТекущееСостояние - состояние с которого хотим уйти. + + Таймаут - максимальное время ожидания, сек. + + Возвращает: + + Истина, если состояния дождались иначе Ложь. + +#### ДождатьсяВыполнения(КлючиЗаданий, Таймаут = 5) + + Усыпляет текущий поток до выполнения указанного списка заданий либо до истечения указанного времени (таймаут) + + Параметры: + + КлючиЗаданий - массив с идентификаторами заданий. + + ТекущееСостояние - состояние с которого хотим уйти. + + Таймаут - максимальное время ожидания, сек. + + Возвращает: + + Истина, если состояния дождались иначе Ложь. + +#### ОтменитьЗадание(КлючЗадания) + + Отменяет задание, если оно находится в состоянии Ожидает. + + Параметры: + + КлючЗадания - идентификатор задания. + +#### ОтменитьВсеЗаданияВОчереди() + + Отменяет все задания в состоянии Ожидает. + +#### СократитьИсториюВыполненияЗаданий(ТребуемаяГлубинаИсторииВДнях) + + Очищает информацию по старым выполненным заданиям оставляя последнее указанное количество дней. Предназначен для "ручного" управления историей выполнения заданий. + + Параметры: + + ТребуемаяГлубинаИсторииВДнях - количество дней истории, которые необходимо оставить. \ No newline at end of file