1. Транзакции общего процесса

1. Транзакции общего процесса

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

97. Информационное взаимодействие участников при реализации общего процесса осуществляется посредством транзакций общего процесса.

98. В рамках транзакций общего процесса осуществляется обмен сообщениями по типовым шаблонам, описание которых приведено в подразделах 4 - 9 настоящего раздела.

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

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

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

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

Сигнал-исключение представляет собой прикладное сообщение, свидетельствующее об отклонении от регламентной процедуры обработки сообщения общего процесса.

Описание сигналов-подтверждений и сигналов-исключений приведено в подразделе 3 настоящего раздела.

100. Для целей реализации надежного информационного взаимодействия каждый шаблон транзакции общего процесса предусматривает возможность повторной отправки сообщения общего процесса, если на это сообщение ответ не получен либо получено технологическое сообщение об ошибке.

При повторной отправке сообщения должен формироваться новый идентификатор сообщения wsa:MessageID.

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

102. Для обеспечения связи между сообщениями внутри транзакций у всех сообщений общего процесса, за исключением сообщения, инициирующего транзакцию общего процесса, заполняется поле wsa:RelatesTo.

Поле wsa:RelatesTo содержит идентификатор сообщения wsa:MessageID, полученного участником общего процесса на предыдущем этапе выполнения транзакции общего процесса (рисунок 1).

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

      │                                                             │
┌─────┴───────┬─────────────────────────────────────────────────────┼─────┐
│Транзакция 1 /                                                           │
├─────┬────────                                                     │     │
│                          Сообщение-запрос                               │
│     │   (wsa:MessageID-"AAAA-...", wsa:RelatesTo - отсутствует)   │     │
│     ├────────────────────────────────────────────────────────────>│     │
│                                                                         │
│     │             Сигнал-подтверждение "Получено"                 │     │
│            (wsa:MessageID-"BBBB-...", wsa:RelatesTo=" AAAA-...")        │
│     │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤     │
│                                                                         │
│     │       Сигнал-подтверждение "Принято в обработку"            │     │
│           (wsa:MessageID-"CCCC-...", wsa:RelatesTo=" AAAA-...")         │
│     │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤     │
│                                                                         │
│     │                     Сообщение-ответ                         │     │
│           (wsa:MessageID-"DDDD-...", wsa:RelatesTo=" AAAA-...")         │
│     │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┤     │
│                                                                         │
└─────┼─────────────────────────────────────────────────────────────┼─────┘

┌─────┴────────┬────────────────────────────────────────────────────┼─────┐
│Транзакция  2 /                                                          │
├─────┬────────                                                     │     │
│                                                                         │
│     │                  Сообщение-уведомление                      │     │
│         (wsa:MessageID="XXXX-...", wsa:RelatesTo - отсутствует)         │
│     ├────────────────────────────────────────────────────────────>│     │
│                                                                         │
└─────┼─────────────────────────────────────────────────────────────┼─────┘
      │                                                             │

Рис. 1. Пример связывания сообщений общего процесса
в транзакциях общего процесса

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