Управление завершением потока операций.

В этой заметке я предлагаю вам рассмотреть несколько вариантов того, как можно завершить поток операций. Под завершением я понимаю изменение его статуса. В частности, будет рассмотрен вариант изменения статуса запущенного потока операций по какому-то условию, а также вариант отмены потока операций посредством запуска функционального модуля. Давайте рассмотрим эти варианты.

Вариант 1. Завершение потока операций по какому-то условию

Рисуя и проектируя свой поток с помощью транзакции SWDD, вполне может получиться так, что вам потребуется отменить или завершить поток операций по какому-то условию. Под условием я имею ввиду, к примеру, отслеживание значения элемента потока операций, проанализировав которое, вы можете определить, завершить/отменить поток операций или нет.

Для демонстрации этого варианта, я создам в своем демонстрационном потоке элемент контейнера с наименованием CANCEL_WF

Чтобы отследить значение элемента в поток необходимо добавить условие (шаг типа Condition)

Рисунок 2. GIF-анимация: добавления шага типа Condition в поток операций

Что было сделано? В поток операций было добавлено условие на определение значения элемента контейнера. Далее необходимо добавить шаг завершения потока операций, в зависимости от принятого значения элемента CANCEL_WF. В моем случае, если значение равно "X" я буду отменять поток, иначе - продолжать. Добавьте в поток элемент типа Process Control

Рисунок 3. GIF-анимация: добавление шага типа Process Control в поток операций

Обратите внимание на функции управления потоком операций, которые доступны при добавлении шага типа Process Control

Рисунок 4.

К каждому из этих пунктов вы найдете справочное описание по нажатию на клавишу F1

Рисунок 5.

В моем примере, у потока операций будет изменяться статус на "Cancelled". Проверяю (прошу прощения за такую длинную GIF-ку)

Рисунок 6. GIF-анимация: тестирование потока операций (статус потока операций = CANCELLED)

Поток операций завершился со статусом "Cancelled". Теперь я меняю значение элемента контейнера CANCEL_WF и повторно выполняю тестирование (условие, добавленное выше, не должно быть задействовано)

Рисунок 7. GIF-анимация: тестирование потока операций (статус потока операций = STARTED)

Что и получается на выходе.

Вариант 2. Завершение потока операций посредством ФМ SWP_WORKFLOW_ITEM_CANCEL

Вариант второй несколько проще первого. Его стоит иметь в виду, например, если вы хотите отменить запущенный поток операций в какой-нибудь ABAP программе. Запустите функциональный модуль SWP_WORKFLOW_ITEM_CANCEL, передав ему на вход параметр WI_ID, принимающий значение запущенного потока операций

Рисунок 8.

В результате запуска этого ФМ, статус потока операций будет изменен на CANCELLED

Рисунок 9.