Workflow. Отправка электронных писем
Пояснение к заметке
В этой заметке я постараюсь не быть скучным и предсказуемым.
В этой заметке я не буду пошагово разглагольствовать о том, как же круто, что можно сформировать и отправить электронное сообщение в потоке операций через шаг типа Send Mail. Вы, скорее всего, догадываетесь об этом сами.
В этой заметке я представлю вариант использования задачи типа Activityдля формирования и отправки письма нужному адресату.
См. Activity
Стоит добавить, что интересно мне здесь будет не сколько отправка письма, сколько преобразование текста, содержащегося в задаче, в формат HTML.
Зачем так извращаться, блогер?
Шаг типа Activity в потоке операций - это универсальный инструмент, который помогает решать много задач. Одной из таких задач вполне себе может быть и отправка письма, учитывая, что его текст содержится в этой же самой задаче.
Принимая во внимание факт, что при работе с текстом задачи вы вправе задавать разные условия, то одна задача может быть источником разных текстов одним и тем же адресатам.
Про возможность использования условий в задачах типа Activity, я писал в заметке Стандартные возможности настройки задачи потока операций
В этой заметке я постараюсь рассказать каким образом добавить немного динамичности обычному тексту задачи, преобразовав его в формат HTML.
1. Создание потока операций
Для демонстрации в этой заметке я буду использовать простой поток операций без инициирующих событий, созданный посредством транзакции SWDD, и добавлю в него задачу типа Activity.
Для управления данной задачей я буду использовать utility-класс
Пример создания utility-класса см. в заметке Поиск обработчика задачи в потоке операций (пункт #3. Создание utility-класса)
2. Текст задачи
Добавлю текст задачи, который будет отправляться адресату
2. Обработка текста задачи
Алгоритм работы метода класса в данном конкретном случае должен быть приблизительно следующий:
- Определить идентификатор шага/задачи (workitem id) в котором(ой) содержится отправляемый текст
- Считать текст из задачи (на помощь придет ФМ SWU_GET_TASK_TEXTLINES)
- Добавить в тело формируемого сообщения открывающий и закрывающий <HTML>, <BODY> теги, и между ними добавить текст из задачи
- Сформировать электронное письмо, скажем, посредством класса CL_BCS
Следует также помнить о том, что перед запуском потребуется выполнить binding элементов контейнера потока операций
Тестирование. Итерация 1
Тестирование будет проведено весьма оригинально. А именно:
- Я запущу поток поток операций
- Скопирую идентификатор нужного мне _workitem id _в котором хранится текст задачи и прогоню его через созданный ранее метод utility-класса
- В результате у меня должно сформироваться письмо, которое в системе SAP можно проверить через транзакцию SOST
Тестирование. Итерация 2
Усложню задачу, применив телу письма простенький CSS
N.B. Обратите свое внимание на то, что внешний вид письма, который доступен через транзакцию SOST может не соответствовать тому, что вы будете видеть в почтовом клиенте. Советую обязательно проверять как текст будет выглядеть в почтовом клиенте.
Тестирование. Итерация 3
Чтобы убедиться, что я не обманываю вас и самого себя, и то, что представлено в итерации #2 не инсценировка, я уберу в коде метода добавление HTML тэгов, и проверю, что было сформировано в транзакции SOST
Спасибо за внимание. Вы, как всегда, непревзойденны. Ваш, ignatov.