Если все IDoc в пакете имеют одинаковый тип, то адаптер обрабатывает
этот пакет IDoc как одну единицу работы. Все эти IDoc в пакете IDoc составляют
одну транзакцию XA для конечной точки. Что касается механизма восстановления
событий, то обработка событий в этом случае аналогична обработке событий при
передаче отдельного IDoc; пакет IDoc считается одной единицей работы, поэтому сбой,
регистрируемый конечной точкой для какого-то одного IDoc, вызывает сбой в обработке
всего пакета. В этом случае все IDoc в пакете IDoc должны быть переданы в конечную
точку повторно.
Процедура обработки адаптером входящего события для неделимого
пакета следующая:
- Когда система SAP передает в адаптер ИД транзакции, адаптер проверяет состояние
события и выполняет одно из следующих действий:
- Если это новое событие, адаптер записывает в таблицу восстановления событий
значение EVNTID (соответствующее ИД транзакции) и состояние 0.
- Если состояние события равно -1 (Откат), то адаптер изменяет
состояние на CREATED (Создано).
- Если состояние события - 1 (Выполнено), то адаптер
возвращает системе SAP признак успеха.
- Система SAP передает адаптеру пакет IDoc; адаптер анализирует этот пакет,
преобразует его в массив объектов IDoc и сохраняется в памяти.
- Адаптер передает эти бизнес-объекты в конечную точку. Адаптер может доставлять
объекты в конечные точки, которые не обязательно поддерживают транзакции.
- Если во время обработки события адаптером возникает исключительная ситуация,
либо исключительная ситуация порождается конечной точкой, то состояние события
изменяется на -1 (Откат).
- Если исключительных ситуаций не возникает, система SAP выполняет следующие
задачи:
- Отправляет адаптеру вызов COMMIT; состояние события изменяется на
1 (Выполнено).
- Отправляет адаптеру вызов CONFIRM.
После этого адаптер удаляет записи
с состоянием 1 (Выполнено) и заносит в протокол событие CEI
(инфраструктуры обработки событий общего формата), которое может использоваться в
целях отслеживания и контроля.