Skip to content

Commit

Permalink
Merge branch 'release/1.2.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
wizi4d committed Apr 7, 2015
2 parents d93a7f3 + 4c67094 commit 801a509
Show file tree
Hide file tree
Showing 4 changed files with 152 additions and 3 deletions.
Binary file modified 1Cv8.cf
Binary file not shown.
146 changes: 143 additions & 3 deletions README.md
Expand Up @@ -2,6 +2,146 @@

Библиотека TaskManagerFor1C предназначена для создания асинхронных и параллельных алгоритмов с гарантированным выполнением в среде 1С Предприятия на базе фоновых заданий.

Цели TaskManagerFor1C:
* повышение производительности программных продуктов за счет добавления параллелелизма в программный код;
* повышение продуктивности разработчиков за счет упрощения работы по управлению заданиями.
## Цели 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)

Усыпляет текущий поток до выполнения указанного списка заданий либо до истечения указанного времени (таймаут)

Параметры:

КлючиЗаданий - массив с идентификаторами заданий.

ТекущееСостояние - состояние с которого хотим уйти.
Таймаут - максимальное время ожидания, сек.

Возвращает:

Истина, если состояния дождались иначе Ложь.

#### ОтменитьЗадание(КлючЗадания)

Отменяет задание, если оно находится в состоянии Ожидает.

Параметры:

КлючЗадания - идентификатор задания.

#### ОтменитьВсеЗаданияВОчереди()

Отменяет все задания в состоянии Ожидает.

#### СократитьИсториюВыполненияЗаданий(ТребуемаяГлубинаИсторииВДнях)

Очищает информацию по старым выполненным заданиям оставляя последнее указанное количество дней. Предназначен для "ручного" управления историей выполнения заданий.

Параметры:

ТребуемаяГлубинаИсторииВДнях - количество дней истории, которые необходимо оставить.
9 changes: 9 additions & 0 deletions ReleaseHistory.md
@@ -1,3 +1,12 @@
# 1.2.0
Удобные методы управления рабочим процессом на основе менеджера заданий стали частью API:
- (new) ДождатьсяВыполнения(КлючиЗаданий, Таймаут = 5) - усыпляет текущий поток до выполнения указанного списка заданий либо до истечения указанного времени (таймаут)
- ОжидатьСостояниеЗадания(КлючЗадания, ОжидаемоеСостояние, Таймаут = 5) - усыпляет текущий поток до установления указанного состояния у задания либо до истечения указанного времени (таймаут)
- ОжидатьИзмененияСостояния(КлючЗадания, ТекущееСостояние, Таймаут = 5) - усыпляет текущий поток до изменения состояния у задания с указанного на любое другое либо до истечения указанного времени (таймаут)

# 1.1.0
Добавлен функционал на мгновенный запуск задания вне очереди

# 1.0.0
Реализованы программные интерфейсы:
- управления менеджером заданий - жизненный цикл, ограничение по количеству исполнителей, глубина хранения истории по заданиям
Expand Down
Binary file modified Тесты/Тесты_МенеджерЗаданий.epf
Binary file not shown.

0 comments on commit 801a509

Please sign in to comment.