Workflow. Отслеживание выполнения условий элементов потока операций
На днях мне посчастливилось поработать с удобным инструментарием потоков операций, который, признаться, никогда ранее не применял. По этому поводу позволю себе выразить немного сожаления, так как он очень хорошо подходит для решения большого количества проектных задач.
О чем здесь пойдет речь?
Про настройку элемента потока операций, находящуюся на закладке Conditions.
Немного официоза
См. Conditions Tab Page
The entries you make on this tab page define conditions related to the workflow container to influence the generation and completion of a work item. The conditions are checked by a background job that runs periodically and is scheduled in Automatic Workflow Customizing.
Немного по существу
Посредством нехитрых манипуляций, о которых пойдет речь далее, при проектировании потока операций, можно динамически принимать решение о том, что необходимо сделать с элементом потока операций в зависимости от наступления какого-то условия.
Хорошее описание каждого из возможных условий для задачи, и ее поведения представлено в справочном материале.
См. Conditions Tab Page
Generate work item
If a work item is created by the workflow system, it receives the status In preparation . The wait step work item is only set to the status In process if no condition is entered on this tab page or the condition is already met.
Complete work item
If you enter a condition on this tab page, the step gains the additional outcome Condition for ‘complete work item’ is true . This branch is performed if the condition is fulfilled. The work item is set to status Completed .
Complete execution
...This condition is checked if an event for the wait step occurs. If the condition is met, the work item is set to the status Completed . If the condition is not met, the system waits for the next event to occur.
Важным здесь является то, что условия отслеживаются для потоков, находящихся в статусе STARTED.
Задача для демонстрации.
Для демонстрации в этой заметке, я хочу рассмотреть пример реализации условия, результатом положительного выполнения которого будет являться созданная диалоговая задача, с присвоенным ей в качестве обработчика, пользователем.
Шаг 1. Создание потока операций
Для демонстрации в этой заметке я буду использовать поток операций вида.
Обработчиком единственной диалоговой задачи в этом потоке выступает инициатор.
См. заметку Поиск обработчика задачи в потоке операций
Шаг 2. Создание utility класса для использования в потоке операций
Посредством utility класса, и соответствующего функционального метода этого класса, я планирую проверять выполнение нужного мне условия (согласно обозначенной выше задаче)
См. заметку Workflow. Использование функциональных методов в потоках операций
Шаг 3. Создание нового элемента контейнера потока операций
Новый элемент контейнера потока будет иметь тип созданного ранее utility класса
Этот элемент контейнера должен быть доступен на уровне диалоговой задачи, условие которой я планирую активировать и проверять в дальнейшем. Также должен быть выполнен binding
См. Definition of Binding
Шаг 4. Определение условия
Как было обозначено ранее, создание диалоговой задачи потока операций в статусе, в котором с ней может начать работать пользователь, зависит от выполнения условия, активированного на этой задаче. Контроль над выполнением условия остается на стороне функционального метода вышеупомянутого класса. Именно этот метод мне необходимо указать в выражении, истинность которого должна быть проверена. На следующем видеофрагменте представлена соответствующая последовательность действий.
Шаг 5. Первое тестирование
На следующем видеофрагменте представлена последовательность действий, в результате которой выполняется запуск потока операций и проверяется ранее настроенное условие (активирована точка остановки в функциональном методе utility класса)
N.B. Обратите внимание на то, что диалоговая задача потока все еще недоступна для пользователя (на видеофрагменте это отражено через запуск транзакции SBWP).
N.B. Диалоговой задаче в результате данного прогона присвоен статус IN PREPARATION (условие создания задачи не было выполнено)
См. Status of a Dialog Work Item
in preparation - The work item has been created, but the condition defined for starting the work item has not yet been fulfilled. Work items in this status are not displayed in the workflow inbox
Шаг 6. Инструменты для постоянного отслеживания выполнения условий задачи
Активированное на задаче условие было проверено единожды в момент запуска потока. Вполне нормальная ситуация, при которой условие не выполняется сразу, но может быть скорректировано в течение периода жизни запущенного потока операций. Выполнять такую проверку также поможет стандартный механизм, любезно продуманный и предоставленный вендором.
При первичной настройке потоков операций вы, скорее всего, должны были столкнуться с транзакцией SWU3, одной из задач которой является настройка планирования фоновых заданий, обеспечивающих обработку различных ситуаций, актуальных для потоков операций.
См. SAP Note 2366252 - Transaction SWU3 explained
См. pdf версию SAP Note 2366252 - Transaction SWU3 explained
Одной из таких ситуаций является обработка задач на которых активно какое-либо условие (закладка Conditions)
За мониторинг задач с условиями ответственна программа RSWWCOND
Все задачи, по которым не выполнены условия, доступны через работу с программой RSWWCOND_MON
На следующем видеофрагменте выполняется запуск программ RSWWCOND и RSWWCOND_MON для демонстрации результатов выполненного прогона проверки.
Запуск программы RSWWCOND в продуктивной системе, по умолчанию, осуществляется каждые 30 минут. Таким образом, каждые полчаса может выполняться проверка условия, в результате которого должно быть принято решение о том, может ли быть создан элемент моего потока операций.
Шаг 7. Тестирование создание элемента потока операций, посредством запуска программы RSWWCOND
На следующем видеофрагменте представлена последовательность действий, в результате которой
- Выполняется запуск программы RSWWCOND
- Выполняется корректировка настроенного условия (через отладку)
- Проверяется результат отработанного условия: создан ли нужный элемент потока операций, через запуск транзакции SBWP