4. Транзакция по шаблону "Взаимные обязательства"

4. Транзакция по шаблону "Взаимные обязательства"

122. Транзакция по шаблону "Взаимные обязательства" может быть выполнена только в том случае, если респондент исполнил свою часть обязательств по запросу инициатора, уведомил его об этом и получил от него подтверждение, что его часть обязательств также успешно выполнена.

Если хотя бы одно из вышеперечисленных действий не может быть выполнено по каким-либо причинам, транзакция должна быть отменена как на стороне инициатора, так и на стороне респондента.

123. Инициатор отправляет респонденту сообщение-запрос в рамках транзакции общего процесса.

Респондент должен отправить сообщение-ответ до истечения времени, определенного как время для ответа.

В процессе выполнения транзакции общего процесса оба участника общего процесса должны отправлять друг другу сигналы-подтверждения "Получено" и "Принято в обработку".

124. В процессе выполнения транзакции общего процесса по шаблону "Взаимные обязательства" реализуется следующая последовательность обмена сообщениями:

инициатор отправляет в адрес респондента сообщение-запрос и ждет подтверждения получения запроса до истечения времени, определенного как время для подтверждения получения;

респондент принимает сообщение-запрос и отправляет инициатору сигнал-подтверждение "Получено";

инициатор после обработки принятого им от респондента сигнала-подтверждения "Получено" ждет подтверждения принятия в обработку информации, содержащейся в сообщении-запросе, до истечения времени, определенного как время для подтверждения обработки;

респондент проводит контроль данных, содержащихся в сообщении-запросе, в соответствии с регламентом информационного взаимодействия и подтверждает принятие в обработку полученной им информации, посылая инициатору сигнал-подтверждение "Принято в обработку";

инициатор после обработки полученного им от респондента сигнала-подтверждения "Принято в обработку" ждет получения сообщения-ответа с информацией до истечения времени, определенного как время для получения ответа;

респондент обеспечивает обработку принятого сообщения-запроса и отправляет инициатору сообщение-ответ, после чего ждет подтверждения инициатором получения сообщения-ответа до истечения времени, определенного как время для подтверждения получения;

инициатор принимает сообщение-ответ с информацией и как получатель информации подтверждает получение ответа, посылая респонденту сигнал-подтверждение "Получено";

респондент после обработки принятого им от инициатора сигнала-подтверждения "Получено" ждет подтверждения принятия в обработку информации, содержащейся в сообщении-ответе, до истечения времени, определенного как время для подтверждения обработки;

инициатор проводит контроль данных, содержащихся в ответе, в соответствии с регламентом информационного взаимодействия, подтверждает принятие в обработку полученной им информации, посылая респонденту сигнал-подтверждение "Принято в обработку", и ждет до истечения времени, определенного как время для подтверждения обработки, чтобы дать возможность респонденту просигнализировать об ошибке контроля при проверке полученного им уведомления о принятии в обработку или об истечении времени ожидания уведомления о принятии в обработку. Если по истечении времени для подтверждения обработки инициатор не получил сигнал-исключение "Ошибка контроля" и если все сигналы-подтверждения и сообщение-ответ получены до истечения времени, отведенного для их получения, то транзакция считается завершенной;

если инициатор не получил сигнал-подтверждение или сообщение-ответ до истечения времени, отведенного для их получения, он повторно инициирует транзакцию, если не исчерпано количество повторов.

Последовательность выполнения транзакции общего процесса по шаблону "Взаимные обязательства" представлена на рисунке 2.

┌───────────┐                                                 ┌───────────┐
│:инициатор │                                                 │:респондент│
└─────┬─────┘                                                 └─────┬─────┘

                           Сообщение-запрос
      ├────────────────────────────────────────────────────────────>│

      │             Сигнал-подтверждение "Получено"                 │
      │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤

      │       Сигнал-подтверждение "Принято в обработку"            │
      │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤

      │                     Сообщение-ответ                         │
      │<────────────────────────────────────────────────────────────┤

      │             Сигнал-подтверждение "Получено"                 │
      │─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ >│

      │       Сигнал-подтверждение "Принято в обработку"            │
      │─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ >│

      │                                                             │

Рис. 2. Последовательность выполнения транзакции общего
процесса по шаблону "Взаимные обязательства"