Войти

Табличная маршрутизация

Табличная маршрутизация – это метод передачи СМЭВ-сообщения от системы-отправителя к системе-получателю, при котором система-получатель определяется по таблице (связке кода маршрутизации и системы-получателя), хранимой в СМЭВ. Реализация данного метода доступна при наличии зарегистрированных в СМЭВ информационных систем (ИС) - участников взаимодействия (УВ).

Перечень (таблица) возможных систем-ответчиков для каждого протокола обмена (вида сведений) ведётся в СМЭВ, и каждый его пункт содержит:

·      указание на систему-ответчика, в адрес которой может быть направлено сообщение-запрос в рамках данного протокола обмена (вида сведений);

·      значение кода маршрутизации.

Код маршрутизации – это составная часть СМЭВ-документа, которая передаётся в сообщениях-запросах. Код маршрутизации в сообщении заполняется и передается внутри передаваемых сведений в соответствии с требованиями вида сведений с табличной маршрутизацией. СМЭВ в сообщении определяет код маршрутизации по xpath-выражению. Xpath-выражение необходимо передавать для регистрации в СМЭВ в заявке на регистрацию вида сведений с табличной маршрутизацией.

Пример блока запроса по приведенной схеме вида сведений нескольким системам-получателям:

<?xml version="1.0" encoding="UTF-8"?>
<tns:RoutingRequest xmlns:tns="urn://version_table/3.0.0">
     <tns:OrganizationCode>1600001</tns:OrganizationCode>
     <tns:RequestContent>Запрос</tns:RequestContent>
</tns:RoutingRequest>
<tns:RoutingRequest xmlns:tns="urn://version_table/3.0.0">
     <tns:OrganizationCode>1600002</tns:OrganizationCode>
     <tns:RequestContent>Запрос2</tns:RequestContent>
</tns:RoutingRequest>
Пример xpath-выражения, указывающего место в структуре передаваемого запроса «RoutingRequest», где содержится код маршрутизации «OrganizationCode»: 
/*[local-name()="RoutingRequest"]/*[local-name()="OrganizationCode"]/text()

Сопоставляя его значение с перечнем возможных ответчиков, СМЭВ определяет единственную систему-ответчика. В её очереди размещается сообщение-клон, содержимое которого полностью соответствует содержимому исходного сообщения-запроса. Перечень возможных ответчиков изменяется через ЛК УВ.

Передача сообщений с табличной маршрутизацией схематично представлена на (Рисунке 1).

Табличная - 1.jpg

Рисунок 1 – Схема табличной маршрутизации

Для системы-отправителя УВ необходимо зарегистрировать вид сведений (ВС). Вид сведений разрабатывается одним из участников взаимодействия в Личном кабинете (ЛК УВ)  самостоятельно в соответствии с Методическими рекомендациями по работе со СМЭВ. Для системы-получателя УВ необходимо получить доступ к ВС

Необходимый метод маршрутизации задается при регистрации ВС через ЛК УВ. Для начала, нужно выбрать режим сеанса обмена (Рисунок 2).

Табличная - 2.jpg

Рисунок 2 – Выбор режима сеанса обмена

На следующем этапе задать необходимый тип (Рисунок 3).

Табличная - 3.jpg

Рисунок 3 – Выбор типа маршрутизации

Также при добавлении комплекта схем необходимо указать где в схеме располагается код маршрутизации, в атрибуте или элементе. От указанного варианта будет формироваться xpath-выражение. Пример представлен на (Рисунке 4).

Табличная - 4.png

Рисунок 4 - Ввод элемента схемы версии ВС, содержащий код маршрутизации

После успешной регистрации ВС в карточке ВС появляется соответствующая отметка в строке Тип маршрутизации (Рисунок 5).

Табличная - 5.jpg

Рисунок 5 – Карточка ВС

Раздел Ответчики для ВС с табличной маршрутизацией должен иметь следующий вид (Рисунок 6).

Табличная - 6.jpg

Рисунок 6 – Раздел Ответчики в карточке ВС

Исходя из вышеуказанных данных можно сделать вывод, что по данному ВС есть несколько ответчиков: ИС с мнемоникой U3833 с кодом маршрутизации (1600001) и ИС с мнемоникой U3834 с кодом маршрутизации (1600002). Данные ИС являются получателями сообщений по данному ВС. Пример простого запроса с табличной маршрутизацией без вложений, где мнемоника U3836 – является мнемоникой ИС инициатора сообщения, а “ urn://version_table/3.0.0” – адрес ВС в ЛК УВ, будет иметь следующий вид:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:typ="urn://x-artefacts-smev-gov-ru/services/service-adapter/types">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:ClientMessage xmlns:ct="urn://version_table/3.0.0" >
      <typ:itSystem>U3836</typ:itSystem>
      <typ:RequestMessage>
        <typ:RequestMetadata>
          <typ:clientId>c1a2a59c-74e0-48a2-b883-4bc9ce6b1b07</typ:clientId>         
        </typ:RequestMetadata>
         <RequestContent>
                  <content>
                     <MessagePrimaryContent>
                        <tns:RoutingRequest xmlns:tns="urn://version_table/3.0.0">
                           <tns:OrganizationCode xmlns:tns="urn://version_table/3.0.0">1600001</tns:OrganizationCode>
                                 <tns:RequestContent xmlns:tns="urn://version_table/3.0.0">Запрос</tns:RequestContent>
                        </tns:RoutingRequest>
                     </MessagePrimaryContent>
                  </content>
               </RequestContent>
      </typ:RequestMessage>
    </typ:ClientMessage>
   </soapenv:Body>
</soapenv:Envelope>   

Данный пример описывает передачу сообщения с текстом “Запрос” системе-получателю по коду маршрутизации “1600001”. 

Если же необходимо отправить сообщения нескольким системам-получателям, то текст запроса будет иметь следующий вид: 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/&quot; xmlns:typ="urn://x-artefacts-smev-gov-ru/services/service-adapter/types">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:ClientMessage xmlns:ct="urn://version_table/3.0.0" >
      <typ:itSystem>U3836</typ:itSystem>
      <typ:RequestMessage>
        <typ:RequestMetadata>
          <typ:clientId>049c9dbc-864d-4f94-9617-0499065417b0</typ:clientId>         
        </typ:RequestMetadata>
         <RequestContent>
                  <content>
                     <MessagePrimaryContent>
                        <tns:RoutingRequest xmlns:tns="urn://version_table/3.0.0">
                           <tns:OrganizationCode xmlns:tns="urn://version_table/3.0.0">1600001</tns:OrganizationCode>
                                   <tns:RequestContent xmlns:tns="urn://version_table/3.0.0">Запрос</tns:RequestContent>
                        </tns:RoutingRequest>
                        <tns:RoutingRequest xmlns:tns="urn://version_table/3.0.0">
                           <tns:OrganizationCode xmlns:tns="urn://version_table/3.0.0">1600002</tns:OrganizationCode>
                                   <tns:RequestContent xmlns:tns="urn://version_table/3.0.0">Запрос2</tns:RequestContent>
                        </tns:RoutingRequest>
                     </MessagePrimaryContent>
                  </content>
               </RequestContent>
      </typ:RequestMessage>
    </typ:ClientMessage>
   </soapenv:Body>
</soapenv:Envelope>


После чего каждая система-получатель получит каждая свой текст запроса. Пример конверта запроса для одного из получателей представлен на (Рисунке 7).

Табличная - 7.jpg
Рисунок 7 – Конверт запроса для ИС получателя с кодом маршрутизации 1600002

Авторизуйтесь, чтобы оставить комментарий к статье