5. Особенности формирования служебных сообщений
64. К классу служебных сообщений относятся:
а) технологические сообщения об ошибке;
б) служебные сообщения интегрированной системы.
65. Технологическое сообщение об ошибке свидетельствует о критической ошибке, не позволяющей выполнить обработку и (или) передачу сообщения и не связанной с семантикой данных прикладного уровня.
Технологическое сообщение об ошибке представляет собой SOAP-сообщение Fault, оформленное согласно спецификации SOAP 1.2. Пример технологического сообщения об ошибке приведен в приложении N 3 к настоящим Правилам.
66. Заголовок wsa:To технологического сообщения об ошибке должен быть заполнен значением wsa:FaultTo/wsa:Address исходного сообщения, если данный заголовок присутствовал в исходном сообщении, либо значением wsa:ReplyTo/wsa:Address, если заголовок wsa:FaultTo/wsa:Address в исходном сообщении отсутствовал.
67. Для идентификации отправителя технологического сообщения об ошибке должен использоваться заголовок wsa:From.
68. Заголовок wsa:RelatesTo технологического сообщения об ошибке должен содержать атрибут int:RelatesAction типа xs:anyURI. Указанный атрибут должен содержать значение заголовка wsa:Action сообщения, на которое формируется данное технологическое сообщение об ошибке. Схема данных атрибута int:RelatesAction приведена в приложении N 2 к настоящим Правилам.
69. Заголовки wsa:ReplyTo и wsa:FaultTo для технологических сообщений об ошибке формироваться не должны.
70. Заголовок wsa:Action технологического сообщения об ошибке должен содержать одно из следующих значений:
а) для технологических сообщений об ошибках, предусмотренных спецификацией WS-Addressing 1.0 - Binding, - значение http://www.w3.org/2005/08/addressing/fault;
б) для прочих технологических сообщений об ошибках - значение http://www.w3.org/2005/08/addressing/soap/fault.
71. Прочие заголовки блока заголовков технологического сообщения об ошибке должны заполняться согласно правилам, приведенным в подразделе 2 раздела IV настоящих Правил.
72. Блок содержимого технологического сообщения об ошибке должен содержать элементы, набор которых представлен в таблице 7.
Таблица 7
Состав блока содержимого технологического сообщения
об ошибке
Элемент
|
Тип данных
|
Описание
|
Кратность
|
soap:Fault
|
soap:Fault
|
оборачивающий элемент блока
|
|
soap:Code
|
soap:faultcode
|
оборачивающий элемент
|
1
|
soap:Value
|
soap:faultcodeEnum
|
класс ошибки
|
1
|
soap:Subcode
|
soap:subcode
|
оборачивающий элемент кода ошибки
|
1
|
soap:Value
|
xs:QName
|
код ошибки
|
1
|
soap:Reason
|
soap:faultreason
|
оборачивающий элемент текстового описания ошибки
|
1
|
soap:Text
|
soap:reasontext
|
блок текстового описания ошибки
|
1..*
|
@xml:lang
|
-
|
языковой идентификатор
|
1
|
soap:Detail
|
soap:detail
|
детализация ошибки
|
0..1
|
73. Элемент soap:Code/soap:Value должен заполняться согласно требованиям спецификации SOAP 1.2.
74. Элемент soap:Code/soap:Subcode/soap:Value должен содержать код ошибки.
Перечень типовых кодов ошибок и правила использования кодов спецификации WS-Addressing 1.0 - Binding представлены в таблице 8.
Таблица 8
Типовые коды ошибок
Класс ошибки
|
Код ошибки
|
Описание и особенности применения
|
soap:Sender
|
wsa:InvalidAddressingHeader
|
используется согласно правилам, определенным спецификацией WS-Addressing 1.0 - Binding, со следующими ограничениями:
|
значения Subsubcode не используются
|
||
ошибка типа wsa:DuplicateMessageID не формируется и не отправляется
|
||
soap:Sender
|
wsa:MessageAddressingHeaderRequired
|
используется согласно правилам, определенным спецификацией WS-Addressing 1.0 - Binding
|
soap:Sender
|
wsa:DestinationUnreachable
|
используется согласно правилам, определенным спецификацией WS-Addressing 1.0 - Binding
|
soap:Sender
|
wsa:ActionNotSupported
|
используется согласно правилам, определенным спецификацией WS-Addressing 1.0 - Binding
|
soap:Sender
|
int:InvalidHeader
|
отсутствует один или несколько специализированных заголовков интегрированной системы
|
soap:Receiver
|
wsa:EndpointUnavailable
|
используется согласно правилам, определенным спецификацией WS-Addressing 1.0 - Binding, со следующим ограничением: при реализации электронного обмена данными в рамках общих процессов элемент wsa:RetryAfter использоваться не должен
|
soap:Receiver
|
int:InternalError
|
при обработке сообщения произошла непредвиденная ошибка
|
soap:Sender
|
int:DataError
|
полученные данные прикладного уровня имеют неверную структуру
|
75. Элемент soap:Text должен содержать текстовое описание ошибки.
Каждый элемент soap:Text должен содержать языковой идентификатор xml:lang, формируемый согласно спецификации XML 1.0.
В случае если в технологическом сообщении об ошибке присутствует набор элементов soap:Text, каждый из указанных элементов должен содержать языковой идентификатор xml:lang, отличный от идентификаторов других элементов soap:Text.
В технологическом сообщении об ошибке должен присутствовать хотя бы один элемент soap:Text, содержимое которого представлено на русском языке, а языковой идентификатор xml:lang должен содержать значение ru.
76. Необязательный элемент soap:Detail должен содержать информацию, детализирующую ошибку.
При формировании технологического сообщения об ошибке в элемент soap:Detail рекомендуется вкладывать сообщение (включая блоки заголовка и содержимого), при обработке которого возникла ошибка. Данная операция выполняется в следующем порядке:
вкладываемое сообщение обрамляется тегами CDATA согласно правилам спецификации XML 1.0;
полученная на первом шаге конструкция вкладывается в элемент int:ProblemMessage;
полученная на втором шаге конструкция вкладывается в элемент soap:Detail.
Схема данных заголовка элемента int:ProblemMessage приведена в приложении N 2 к настоящим Правилам.
77. Служебные сообщения интегрированной системы используются для передачи данных между компонентами интегрированной системы.
В блоке содержимого служебного сообщения интегрированной системы должны быть указаны данные, состав которых определяется при разработке компонентов интегрированной системы.
Элемент wsa:Action служебного сообщения интегрированной системы должен заполняться унифицированным идентификатором ресурса (URI), состоящим из следующих компонентов, разделенных символом "/":
фиксированный префикс "int://";
идентификатор SR;
один или несколько компонентов, идентифицирующих содержимое служебного сообщения интегрированной системы.
Прочие заголовки блока заголовков служебного сообщения интегрированной системы должны заполняться согласно правилам, приведенным в подразделе 2 раздела IV настоящих Правил.