В СМЭВ предусмотрена возможность предоставления ИС УВ сведений о количестве сообщений в своих очередях доставки. Для этого ИС УВ со своей стороны должны развернуть сервис приёма push-уведомлений и подать заявку на его регистрацию в СМЭВ.
Участником взаимодействия может быть разработан сервис приёма push-уведомлений самостоятельно в соответствии с данным описанием, либо использовано готовое решение, которое входит в состав набора шаблонов электронных сервисов.
10.1. Описание сервиса приёма push-уведомлений
Сервис приёма push-уведомлений осуществляет приём входных и отправку выходных данных, приведённых в таблице 10.
Таблица 10 – Перечень входных и выходных данных сервиса приёма push-уведомлений
№ |
Название |
Тип |
Обозначение |
Описание |
1 |
Входные данные |
|||
1.1 |
Push-уведомление |
Контейнер |
PushNotification |
Push-уведомление передаётся средствами метода PushNotification веб-сервиса и включает следующие данные (рисунок ): 48 · Время опроса очередей доставки ИС УВ; · Наименования очередей доставки; · Количество сообщений в каждой очереди доставки. SOAP-запрос приведён на рисунке . 48 |
1.1.1 |
Время опроса очередей доставки ИС УВ |
dateTime |
InformationTimestamp |
Время опроса в формате ГГГГ-ММ-ДДTЧЧ:ММ:ССZ |
1.1.2 |
Данные состояния очереди |
Контейнер |
QueueInformation |
Включает следующие данные: · Наименование очереди доставки; · Количество сообщений в очереди доставки. |
1.1.2.1 |
Наименование очереди доставки |
String |
QueueName |
Наименование одной из трёх очередей доставки (не более 500 символов). |
1.1.2.2 |
Количество сообщений в очереди доставки |
Int |
QueueSize |
Количество сообщений в очереди доставки, которая соответствует queueName. |
2 |
Выходные данные |
|||
2.1 |
Ответное сообщение на отправленное push-уведомление |
Контейнер |
PushNotificationResponse |
Ответное сообщение на отправленное push-уведомление является подтверждением успешного получения ИС УВ push-уведомления. Ответное сообщение передаётся средствами метода PushNotification веб-сервиса и не содержит никаких бизнес данных (рисунок 49). |
2.2 |
Ответное сообщение с ошибкой на отправленное push-уведомление |
Контейнер |
PushNotificationException |
Ответное сообщение с ошибкой на отправленное push-уведомление является подтверждением успешного получения ИС УВ push-уведомления. Ответное сообщение с ошибкой передаётся средствами метода PushNotification веб-сервиса и может содержать описание ошибки (рисунок 50). |
2.3 |
Метод передачи данных push-уведомления |
Метод SOAP-сервера |
PushNotificationData |
Метод передаёт следующие данные: · Время опроса очередей доставки ИС УВ; · Наименования очередей доставки; · Количество сообщений в каждой очереди доставки. |
Рисунок 44 – Схема структуры данных push-уведомления.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <PushNotificationRequest xmlns:m="urn://x-artefacts-smev-gov-ru/smev/1.0"> <PushNotification> <InformationTimestamp>2015-02-06T15:14:20Z</InformationTimestamp> <QueueInformation> <QueueName>name1</QueueName> <QueueSize>2</QueueSize> </QueueInformation> <QueueInformation> <QueueName>name2</QueueName> <QueueSize>25</QueueSize> </QueueInformation> <QueueInformation> <QueueName>name3</QueueName> <QueueSize>12</QueueSize> </QueueInformation> </PushNotification> </PushNotificationRequest> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
Рисунок 45 – SOAP-структура push-уведомления.
Рисунок 46 – Схема структуры данных ответного сообщения на отправленное push-уведомление.
Рисунок 47– Схема структуры данных ответного сообщения с ошибкой на отправленное push-уведомление.
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="urn://x-artefacts-smev-gov-ru/smev/1.0" targetNamespace="urn://x-artefacts-smev-gov-ru/smev/1.0" elementFormDefault="unqualified"> <xs:element name="PushNotificationRequest" type="tns:PushNotificationRequest"/> <xs:complexType name="PushNotificationRequest"> <xs:sequence> <xs:element name="PushNotification" type="tns:QueueNotificationInformation"/> </xs:sequence> </xs:complexType> <xs:complexType name="QueueNotificationInformation"> <xs:sequence> <xs:element name="InformationTimestamp" type="xs:dateTime"/> <xs:element name="QueueInformation" type="tns:QueueInformation" form="qualified" nillable="true" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="QueueInformation"> <xs:sequence> <xs:element name="QueueName"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="1"/> <xs:maxLength value="500"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="QueueSize" type="xs:int"/> </xs:sequence> </xs:complexType> <xs:element name="PushNotificationResponse" type="tns:PushNotificationResponse"/> <xs:complexType name="PushNotificationResponse"> <xs:sequence> <xs:element name="DescriptionResponse" type="tns:Description"/> </xs:sequence> </xs:complexType> <xs:element name="PushNotificationException" type="tns:PushNotificationException"/> <xs:complexType name="PushNotificationException"> <xs:sequence> <xs:element name="DescriptionException" type="tns:Description"/> </xs:sequence> </xs:complexType> <xs:complexType name="Description"> <xs:sequence> <xs:element name="Description" type="xs:string" form="qualified" nillable="true" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:schema> |
Рисунок 48 – xsd-схема сервиса приёма push-уведомлений «PushNotificationSchema.xsd».
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn://x-artefacts-smev-gov-ru/smev/1.0" targetNamespace="urn://x-artefacts-smev-gov-ru/smev/1.0"> <wsdl:types> <xs:schema> <xs:import namespace="urn://x-artefacts-smev-gov-ru/smev/1.0" schemaLocation="PushMessageSchema.xsd"/> </xs:schema> </wsdl:types> <wsdl:message name="PushNotificationRequest"> <wsdl:part name="parameter" element="tns:PushNotificationRequest"/> </wsdl:message> <wsdl:message name="PushNotificationResponse"> <wsdl:part name="parameter" element="tns:PushNotificationResponse"/> </wsdl:message> <wsdl:message name="PushNotificationException"> <wsdl:part name="parameter" element="tns:PushNotificationException"/> </wsdl:message> <wsdl:portType name="PushNotificationType"> <wsdl:operation name="PushNotification"> <wsdl:input name="PushNotificationRequest" message="tns:PushNotificationRequest"/> <wsdl:output name="PushNotificationResponse" message="tns:PushNotificationResponse"/> <wsdl:fault name="PushNotificationException" message="tns:PushNotificationException"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="PushNotificationBinding" type="tns:PushNotificationType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="PushNotification"> <soap:operation soapAction=" PushNotification "/> <wsdl:input name="PushNotificationRequest"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="PushNotificationResponse"> <soap:body use="literal"/> </wsdl:output> <wsdl:fault name="PushNotificationException"> <soap:fault name="PushNotificationException" use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="PushNotificationService"> <wsdl:port name="PushNotificationPort" binding="tns:PushNotificationBinding"> <soap:address location="ServiceAdress"/> </wsdl:port> </wsdl:service> </wsdl:definitions> |
Рисунок 49 – wsdl-описание веб-сервиса сервиса приёма push-уведомлений.