Workflow

Щепетильная тема, не так ли? Звучная, сложная, манящая, непонятная. Про азы поговорим сейчас, про тонкости — в книге. Workflow или поток операций в простонародии, это инструмент, который позволяет организовать последовательность шагов в единый процесс и контролировать его выполнение. Это неофицильный перевод в моем исполнении. Прелесть потока операций заключается в том, что можно сделать множество путей принятия решений и исполнения потока операций. Если нажал сюда, то случилось это, поэтому надо послать того-то, сохранить запись там-то и написать «всем привет». Если в кадровом мероприятии все прозрачно — сохраняй и заполняй, никакой власти, то в потоках можно настроить практически любые способы взаимодействия пользователя, системы и вселенной.

Представим, что у нас голая система, где еще никто не успел наследить. По умолчанию все отключено, ничего не работает и потоки не гуляют. Надо исправить это в транзакции SWU3. В идеальном мире нам нужно открыть транзакцию, вверх кликнуть на кнопку генерации, и жизнь наладится. Увы. В зависимости от того, какая у вас версия системы, уровень пакетов и прочее, ваш пользователь, под которым вы запускаете эту транзакцию, может принадлежать или нет группе SUPER. В транзакции SU01 надо присвоить текущему пользователю эту группу. Если ее нет, то создать. Это как бы SAP_ALL для админов.

swu3

Если вы присвоили пользователя этой группе, то система автоматически создаст нового пользователя для потоков операций с именем WF-BATCH, а также RFC соединение до самой себя с именем WORKFLOW_LOCAL_XXX, где XXX — номер текущего клиента. Многие остальные настройки система сделает сама. Что не сможет, то будет красным. Надо открыть красные задачи, почитать справа подсказку. Часто там будет написано что сделать. Иногда можно просто встать на задаче и ее выполнить, и она окрасится зеленым. Это ручные или полуавтоматические задания. Где-то надо будет поменять профиль сервера и перезагрузить сервер. Делается все это элементарно и один раз.

Внизу будет возможность запустить тестовый поток операций в разделе Classify General Tasks. Запустите, откройте SAP Office  в транзакции SBWP. Вам должен будет приехать тестовый поток во входящих. Поиграйтесь с ним.

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

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

Передем к вкусному. Транзакция SWDD. Редактор потоков операций. Предлагаю изучать на боевой задаче. Давайте при изменении 8 инфотипа будем уведомлять службу финансовой безопасности. В стандарте такое можно сделать через абап, через функцию MAIL в динамических мероприятиях. Беда только в том, что динамические мероприятия не всегда работают, а события всегда. Прилетит нам, например, айдок или внешний FM вызовет изменение инфотипа, а мы и не знаем. Попробуем?

Для начала я бы выяснил а как же нам отловить факт изменения инфотипа. Для этого есть трассировка событий. В транзакции SWELS активируем трассировку событий. Идем в PA30 и меняем инфотип. Сохраняем. Смотрим в транзакции SWEL что случилось. Видно, что вызывалось событие  CHANGED объекта BASICPAY. Ага, попался. Выключаем трассировку. Записываем. Идем наливать чай.

SWDD. Заполняем вводное окошко с названием потока и коротким названием. Два раза кликаем в центре потока и вставляем шаг Send Mail. Вот так получается:

swdd_1

У меня виден еще один шаг — Attributes Changed. Сейчас мы его добавим. Сначала сохраняем поток и активируем. Теперь начнем фантастиш творить. Открываем меню Goto — Basic Data. Прописываем наш бизнес-объект и событие. Нажимаем кнопочки связывание (второй маленький квадратик).

swdd_2

У вас должно открыться вот такое окошко, где нужно нажать кнопку генерации. Это мы связываем этот шаг с бизнес-объектом. Тем самым говорим, какие выходные параметры объекта связать с входными параметрами шага. Идея такова, что мы на входе из события получаем объект BASICPAY, где есть нужная нам информация. Следовательно, раз у нас событие инициирует поток, то надо дальше по эстафетной линии передать этот объект дальше. Поэтому мы его и прописываем в параметрах.

swdd_3

Есть такая буква. Начало положено. Теперь открываем наш шаг с отправкой почты. Для начала упростим задачу и отправим сообщение самим себе. С помощью кнопочек вставки переменных задаем заголовок письма и текст примерно таким образом:

swdd_4

Давайте теперь убедимся, что наш объект действительно доступен в потоке. Для этого нажимаем на кнопку «Step Types That Can Be Inserted» и выбираем «Workflow Container». Ищем наш объект. Если не находим, то надо создать.

swdd_5

Во время создания надо еще сказать, что этот объект у нас импортируется из внешней среды. Делается это вот такой галочкой:

swdd_6

Активируем поток и пойдем проверять. Изменяем в ИТ0008 деньги и идем в почту:

swdd_7

Элементарно, не так ли? Про рассылку уведомлений на почтовые ящики службы безопасности поговорим завтра. Там есть тонкости 😉

P.S. Стоило настроить такой поток, как выяснилось, что такое есть в стандарте 😉

Workflow: 2 комментария

  1. Vasiliy

    Спасибо! В поставке есть потоки на многие случаи жизни, но понимать как создавать его с нуля — тоже полезно.
    Виталий, правильно ли я понимаю, что следующий шаг и агент WF в ERP просчитывается в момент окончания предыдущего, а не в начале потока весь маршрут, обеспечивая тем самым ветвление?

  2. VirVit Автор записи

    Это зависит от того, как мы определяем агентов. Можно фиксированно прописать для отдельных шагов/задач, а можно сделать так называемые правила выбора агента. Тогда перед выполнением шага система будет выполнять правило, а по нему определять куда отправлять задачу. Я покажу это на примере с массовой рассылкой, там схожий подход. Можно и вовсем своим FM-ником определять.

Добавить комментарий