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