Правила ответственности при настройке Workflow.

В этой заметке я опять затрону тему потоков операций. Можно сказать, что данный материал будет являться логическим продолжением опубликованной ранее заметки Поиск обработчика задачи в потоке операций, в которой я предоставил описание поиска обработчика диалоговой задачи в потоке операций, настраиваемого для документа оценки. Еще раз обращу ваше внимание на то, что обработчик был найден не без помощи ABAP, что, безусловно, является нормальным подходом при работе с потоками операций (особенно при нахождении обработчиков).

Другой вариант определения обработчика диалоговой задачи потока операций - использование Правил, для которых определен тип/категория «Определение агента: Ответственность». Я позволю себе называть это все одним термином _Правило Ответственности. _В системе Правило представлено объектом AC- "Rule". Про Ответственность речь пойдет ниже.

См. Rules for Agent Determination for Tasks

Транзакция для ведения Правил

Транзакция для ведения правил PFAC

Рисунок 1.

Обратите внимание, что при создании Правила необходимо определить его категорию. Более детальную информацию по категориям можно прочитать, нажав на клавишу F1, предварительно выбрав поле Category.

Что из себя представляет Правило?

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

Рисунок 2.

Что представляет собой Ответственность в настройке Правила?

После того, как вы настроили контейнер Правила для него необходимо определить Ответственность. Иначе говоря, ответить на вопрос, кто будет согласовывать задачу в зависимости от входных значений контейнера?

Рисунок 3.

В системе SAP Ответственность представлена объектом RY - "Responsibility"

Пример создания Правила ответственности

На видеофрагменте представлен пример создания Правила, на вход в которое передается значение Раздела персонала. Разным значениям Раздела персонала присвоены различные обработчики.

Проверка определения обработчика в Правиле

Чтобы протестировать настроенные Ответственности в Правиле, нажмите на кнопку 

В зависимости от входных параметров контейнера в Правиле Ответственности будет меняться найденный обработчик.

Использование Правил в потоке операций

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

Тестирование нахождения обработчика задачи

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

По-хорошему, значение Раздела персонала, конечно же, должно заполняться в потоке операций, и передаваться на вход в _Правило Ответственности, _что называется, автоматически (например, посредством utility класса).

Для демонстрации в этой заметке, я пропишу два различных значения Раздела персонала в качестве входных параметров в Правило Ответственности, запущу поток операций с этими значениями, проверяя, кто был присвоен в качестве обработчика задачи.

Почему это может быть удобно?

Допустим, что вы настраиваете поток операций для документа оценки. Бизнес пользователи поставили перед вами требование, что сначала согласовать документ оценки должен какой-нибудь ответственный специалист. Только в компании так сложилось исторически, что ответственные специалисты различаются в зависимости от Раздела & Подраздела персонала.

Правило Ответственности - идеальный вариант для реализации такого требования. Вы создаете Правило, для которого определяете контейнер в виде пары Раздела & Подраздела персонала. Первоначально заполняете Ответственности для соответствующих значений контейнера.

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

Рисунок 5.

Если по каким-то соображениям транзакция OOCU_RESP не подходит, можно создать свои собственные, используя в качестве примера транзакции FITP_RESPO или PTRV_RESPO

См. SAP Note 534029 - Maintaining responsibilities in locked clients

Transactions OOCU_RESP or PFAC_RESPO are available for maintaining the client-specific responsibilities of a rule. PFAC_RESPO provides a predefined selection screen.

Using OOCU_RESP, you can create your own customizing transactions which automatically jump to the rule specified in each case and is able to maintain the responsibilities there. Transaction SE93 is available for this. A possible example would be transactions FITP_RESPO or PTRV_RESPO.