Workflow. Вызов субпотока в потоке операций

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

Для чего это может быть полезным?

Конечно же мы понимаем, что чем больше шагов согласования, email информирования пользователей и пр. опций содержит ваш поток операций, тем скорее он перестанет быть «читаемым» и удобным для просмотра, к примеру, в транзакции SWDD. Мало того, что эта транзакция и так не всегда вызывает радостные ощущения от ее использования, а постоянные прокрутки и масштабирование вокруг нужных вам задач - занятие скучное и муторное.

Конечно же, многое зависит от того, для чего используется тот или иной поток операций, и в какой функциональности планируется его применение (SAP Processes and Forms, Personnel Administration, Finance, SD etc.) Но если разрастание вашего потока неизбежно, возможно разбить его на какие-то логические составляющие (куски), и вывести их в субпоток, который будет вызываться из главного потока.

Например, работая с потоками операций для согласования ASR процессов, бизнес пользователям очень часто необходимо наличие возможности добавления дополнительных согласующих в маршрут согласования. Ну и, конечно же, более распространенная ситуация, когда каждый участник процесса согласования может добавлять для утверждения процесса дополнительных участников. В зависимости от условий, предъявляемых бизнес пользователями к вашему потоку, вы можете какие-то части таких операций (в данном примере, согласование дополнительными участниками), вынести в отдельный субпоток.

Схематически, самый примитивный поток, к примеру, может выглядеть следующим образом

На приведенной схеме опущены такие моменты, как возврат на доработку, в случае, если не было произведено согласование кем-то из участников. А также проверки типа "было ли выполнено согласование участником". Стоит обратить внимание на, что

  1. Для определенной функции (согласование дополнительными согласующими) осуществляется вызов субпотока
  2. На выходе из субпотока, осуществляется проверка условия, было ли произведено согласование дополнительным согласующим

Пример реализации вызова субпотока в потоке операций

Для того, чтобы продемонстрировать последовательность действий, необходимых для вызова субпотока, я буду использовать workflow для согласования ASR процесса

См. заметку Создание Workflow для процесса SAP Processes and Forms (FPM)

Выглядит он следующим образом

В моем случае, вызов субпотока будет произведен, если на первом шаге участник не выполнит согласование, а вернет процесс на доработку пользователю (значение элемента контейнера потока операций PROCSTATE = BACK).

Чтобы вызвать субпоток, логично, что его нужно сначала создать. Создать его можно, например, копированием уже существующего. Приступаем

После того, как субпоток создан, необходимо осуществить его вызов из основного. Ниже представлен соответствующий видеофрагмент

Субпоток почти готов к тому, чтобы быть инициированным

Осталось наполнить субпоток каким-то содержимым. Например, добавить в него задачу утверждения, и проверить, что возвращаемые значения элементов контейнера из субпотока в основной, будут считаны и интерпретированы корректно.

Готово!

Тестирование

Моделируем условие, по результатам которого, должен быть запущен субпоток

Условие, при котором должен был быть запущен субпоток выполнено. Как следствие, субпоток запущен, и ожидает выполнения согласования пользователем. Продолжаем тестирование

В результате согласования пользователем и успешного выполнения субпотока, значение элемента контейнера PROCSTATE было передано в основной поток, в котором, после проверки условия (PROCSTATE = APPROVED или PROCSTATE = PROCESSED), основной поток был успешно завершен.