Интерфейсы и протоколы взаимодействия в рамках получения НСИ (версия 11)

 

  Главная      Книги - Разные 

 

поиск по сайту            правообладателям  

    

 

   

 

   

 

 

 

 

 

Интерфейсы и протоколы взаимодействия в рамках получения НСИ (версия 11)

 

 

Протокол взаимодействия с единой системой ведения и управления
реестрами, регистрами, справочниками и классификаторами в части
централизованного получения нормативно-справочной информации,
необходимой в рамках межведомственного электронного
взаимодействия
(версия 11)
Листов 148
Москва, 2016
2
Содержание
1
Общие положения
5
2
Перечень сокращений
8
3
Требования к взаимодействию в рамках обмена нормативно-справочной
информацией
9
4
Порядок организации взаимодействия
12
5
Механизм рассылки репликаций НСИ
16
6
Веб-интерфейс системы НСИ подсистемы информационного взаимодействия
18
6.1
Окно с формой авторизации
18
6.2
Основная форма
18
6.3
Вкладка «Изменения»
19
6.4
Добавление/редактирование подписки
21
6.5
Лог очереди пакетов
23
6.6
Вкладка «Каталоги»
25
7
Сервис рассылки реплик НСИ (СРР)
27
7.1
Методы сервиса
27
7.1.1
Метод getCatalogChangesWSE
27
7.1.2
Метод getCatalogChangesWS
27
7.1.3
Метод getCatalogChanges
28
7.1.4
Метод getCatalogChangesUnSubWSE
29
7.1.5
Метод getCatalogChangesUnSubWS
29
7.1.6
Метод getCatalogChangesUnSub
30
7.1.7
Метод getHierarchyChangesWSE
31
7.1.8
Метод getHierarchyChangesWS
32
7.1.9
Метод getHierarchyChanges
32
7.1.10
Метод getHierarchyChangesUnSubWSE
33
7.1.11
Метод getHierarchyChangesUnSubWS
34
7.1.12
Метод getHierarchyChangesUnSub
34
7.1.13
Метод getUndeliveriedPackages
35
7.1.14
Метод setDeliveryForUndeliveriedPackages
36
7.1.15
Метод setDeliveryForUndeliveriedPackagesWID
36
7.2
Формат сообщений
37
8
Сервис рассылки реплик НСИ (СРР) v2
45
8.1
Методы сервиса
45
8.1.1
Метод getCatalogChanges
45
8.1.2
Метод getCatalogChangesCount
45
8.1.3
Метод getCatalogChangesUnSub
46
8.1.4
Метод getHierarchyChanges
47
8.1.5
Метод getHierarchyChangesCount
47
8.1.6
Метод getHierarchyChangesUnSub
48
8.1.7
Метод getUndeliveriedPackages
49
8.1.8
Метод setDeliveryForUndeliveriedPackages
49
8.2
Формат сообщений
49
9
Сервис получения реплик НСИ (СПР)
56
9.1
Методы сервиса
56
9.1.1
Метод receive_change
56
10
Сервис получения реплик НСИ (СПР) v2
57
10.1
Методы сервиса
57
10.1.1
Метод receive_change
57
11
Сервис получения данных (СПД)
58
11.1
Описание методов сервиса
58
11.1.1
Метод getCatalogList
58
3
11.1.2
Метод getHierarchyList
58
11.1.3
Метод getCatalogHierarchies
59
11.1.4
Метод getCatalogSpec
60
11.1.5
Метод getHierarchySpec
61
11.1.6
Метод getCatalogItems
62
11.1.7
Метод getCatalogItemsByAttrValue
63
11.1.8
Метод getCatalogItemsByCategory
64
11.1.9
Метод getCategories
66
11.1.10
Метод getCategoriesByAttrValue
67
11.1.11
Метод getCategoryParent
69
11.1.12
Метод getCategoryChildren
69
11.1.13
Метод getCategoryByCtgItmKey
70
11.2
Примеры использования методов
71
11.3
Реализация классов сервиса
72
12
Сервис получения данных v2.0 (СПД)
80
12.1
Описание методов сервиса
80
12.1.1
Метод getCatalogList
80
12.1.2
Метод getHierarchyList
80
12.1.3
Метод getCatalogHierarchies
81
12.1.4
Метод getCatalogSpec
81
12.1.5
Метод getHierarchySpec
82
12.1.6
Метод getCatalogItems
83
12.1.7
Метод getCatalogItemsCount
85
12.1.8
Метод getCategories
86
12.1.9
Метод getCategoriesCount
88
12.1.10
Метод getCatalogPassport
89
12.1.11
Метод getCatalogVersions
89
12.1.12
Метод getSignByGUID
90
12.1.13
Метод getUrlFileCatalogData
90
12.2
Примеры использования методов
91
12.3
Описание основных структур сервиса
93
13
Сервис загрузки данных НСИ (СЗД)
97
13.1
Методы сервиса
97
13.1.1
Метод setData
97
14
Сервис загрузки данных НСИ с проверкой подписи оператора (СЗДППО)
100
14.1
Методы сервиса
101
14.1.1
Метод setData
101
15
Асинхронный сервис загрузки данных НСИ (АСЗД)
102
15.1
Методы сервиса
103
15.1.1
Метод setData
103
15.1.2
Метод getCatalogXmlMessage
108
15.1.3
Метод getStatusMessage
110
15.2
Сервис приема статусов обработки сообщений загрузки
112
15.2.1
Метод sendStatus
113
Приложение A
115
Приложение Б
116
Приложение В
117
Приложение Г
118
Приложение Д
119
Приложение Е
120
Приложение Ж
121
Приложение И
122
4
Приложение К
128
Приложение Л
129
Приложение М
131
Приложение Н
132
Приложение П
133
Приложение Р
134
Приложение С
135
Приложение Т
138
Приложение У
142
5
1 Общие положения
В рамках организации электронного взаимодействия при оказании
государственных услуг должно быть обеспечено централизованное
получение необходимой нормативно-справочной информации.
Обеспечение подготовки, ведения, предоставления и репликации
общегородских справочников и классификаторов, в т.ч. применяемых в
рамках информационного взаимодействия органов исполнительной
власти города Москвы при оказании государственных услуг и исполнении
функций, осуществляет Информационная система управления
классификаторами и справочниками (ИС НСИ), входящая в состав
Единой системы ведения и управления реестрами, регистрами,
справочниками и классификаторами (АС УР).
В структуре ИС НСИ существуют следующие виды объектов:
1. Атрибут - атомарная единица информации. Атрибут имеет
идентификатор, наименование, порядковый индекс вхождения и
значение;
2. Иерархия
- древовидная структура, элементами которой
являются категории. Каждая иерархия имеет идентификатор и
наименование;
3. Категория - элемент иерархии, элементами категории являются
атрибуты, при этом атрибут с одним и тем же именем и
идентификатором может входить в категорию несколько раз,
отличаясь порядковым индексом вхождения;
4. Каталог - плоская структура, элементами которой являются
записи. Каждый каталог имеет идентификатор и наименование;
5. Запись
- элемент каталога, элементами записи являются
атрибуты, при этом атрибут с одним и тем же именем и
6
идентификатором может входить в запись несколько раз,
отличаясь порядковым индексом вхождения.
Категория может иметь несколько дочерних и один родительский
элемент. Запись каталога может входить в одну или несколько категорий
одной или нескольких иерархий. Схематично взаимосвязь каталогов,
записей, иерархий и категорий представлена ниже (Рисунок 1).
Рисунок 1 - Структура НСИ
Например, для справочника «Адресный реестр» дома - это записи
каталога с одноименным названием. Каталог «Адресный реестр»
структурирован по двум иерархиям - «Улицы» и «Округа», то есть каждая
7
запись каталога привязана к категории (улице) иерархии «Улицы» и
категории (округу) иерархии «Округа».
8
2 Перечень сокращений
В данном документе используются термины и сокращения,
приведенные в следующей таблице (Таблица 1).
Таблица 1 - Список терминов и сокращений
Сокращения и термины
Определение
BASE64
Сиситема для представления бинарных файлов в тексте
письма
GUID
Уникальный идентификатор
URL
Единообразный локатор (определитель
местонахождения) ресурса
WSDL
Язык описания веб-сервисов и доступа к ним,
основанный на языке XML
XML
Расширяемый язык разметки
XSD
Язык описания структуры XML документа
АС УР
Единая система ведения и управления реестрами,
регистрами, справочниками и классификаторами
ИС
Информационная система
ИС НСИ
Информационная система управления общегородскими
классификаторами и справочниками, входящая в
состав АС УР
КМС
Корпоративная мультисервисная сеть
НСИ
Нормативно-справочная информация
ОИВ
Орган(ы) исполнительной власти города Москвы
РСМЭВ
Среда электронного взаимодействия Метасистемы
«Электронная Москва» (Региональный сегмент единой
системы межведомственного электронного
взаимодействия)
СЗД
Сервис загрузки данных
СЗДППО
Сервис загрузки данных НСИ с проверкой подписи
оператора
СМЭВ
Единая система межведомственного электронного
взаимодействия
СПД
Сервис получения данных
СПР
Сервис получения репликаций
СРР
Сервис рассылки репликаций
ЭП
Электронная подпись
9
3 Требования к взаимодействию в рамках обмена
нормативно-справочной информацией
При взаимодействии со смежными информационными системами в
рамках обмена нормативно-справочной информацией должна
обеспечиваться синхронизация нормативно-справочной информации,
используемой в ИС ОИВ, с ИС НСИ, входящей в состав Единой системы
ведения и управления реестрами, регистрами, справочниками и
классификаторами, в соответствии с требованиями, установленными
нормативными документами и методическими рекомендациями
Департамента информационных технологий города Москвы.
Должны выполняться следующие требования:
- любые справочники и классификаторы, используемые при
взаимодействии со смежными ИС, а также общероссийские и
общегородские справочники и классификаторы, должны
размещаться в ИС НСИ;
- ИС ОИВ должна взаимодействовать с ИС НСИ в части
получения и/или экспорта справочников посредством РСМЭВ
(по технологии веб-сервисов;
- в случае необходимости использования в Системе
общероссийских
и
общегородских
справочников
и
классификаторов, а также справочников смежных ИС, ИС ОИВ
должна получать их из ИС НСИ одним из следующих способов:
- в режиме онлайн посредством веб-сервисов;
- в режиме онлайн посредством веб-интерфейса ИС НСИ;
- получение данных справочников и классификаторов в
установленном формате посредством запроса через
РСМЭВ;
10
- получение репликации справочников и классификаторов
для сохранения в своих системах;
-
ИС ОИВ может выступать в роли поставщика-НСИ и/или
потребителя-НСИ:
- поставщик-НСИ - информационная система содержащая
справочник и/или классификатор, за ведение которого
отвечает ОИВ, являющийся оператором данной системы,
и
обеспечивающая
предоставление
данного
справочника/классификатора в другие ведомства;
- потребитель-НСИ
- информационная система ОИВ,
использующая сведения справочника, владельцем
которого является другой ОИВ (поставщик-НСИ);
-
атрибутный состав записи справочника в ИС ОИВ должен
содержать поля для хранения атрибутов записи данного
элемента в ИС НСИ;
-
в ИС ОИВ должна быть реализована возможность подписания
электронной подписью передаваемых в ИС НСИ сведений;
-
НСИ-поставщик
должна
удовлетворять
следующим
требованиям:
- при создании или изменении записи справочника:
- экспортировать в ИС НСИ атрибуты данной записи с
признаками «новая запись» или «измененная
запись»;
- при
удалении
(блокировании
от
дальнейшего
использования) записи справочника:
- передавать в ИС НСИ атрибуты данной записи с
признаками «удаленная (блокированная) запись»;
11
- НСИ-потребитель
должна
удовлетворять
следующим
требованиям:
- получать из ИС НСИ новую запись справочника и
размещать ее в собственном справочнике;
- получать из ИС НСИ измененную запись и,
соответственно, изменять атрибуты записи в собственном
справочнике;
- получать из ИС НСИ команду блокирования записи от
дальнейшего
использования
и
устанавливать
соответствующий признак записи в своем справочнике;
- система не должна позволять производить изменения
справочника (включая удаление записей) в НСИ-
потребителе без взаимодействия с ИС НСИ.
12
4 Порядок организации взаимодействия
Для обеспечения доступа внешняя информационная система
должна быть зарегистрирована в ИС НСИ. Для этого необходимо
направить заявку на регистрацию информационной системы на адрес
asur_support@mos.ru в следующем объеме:
- полное наименование информационной системы;
- краткое наименование информационной системы;
- наименование органа исполнительной власти, в интересах
которого функционирует информационная система (ОИВ
-
владелец системы);
- адрес электронной почты ответственного за информационную
систему лица;
- сертификат технологической подписи информационной
системы (в случае предоставления обязательно в архиве).
Сертификат можно установить самостоятельно позднее,
необходим в случае взаимодействия с использованием
Технологической электронной подписи.
После этого будет предоставлен доступ к подсистеме
информационного
взаимодействия
(ссылки
на
подсистему:
-
продуктивная
площадка,
http://31.13.60.150:8080/Systems/ - тестовая).
Обращение ИС ОИВ к ИС НСИ осуществляется как в режиме
синхронного обмена, так и в режиме асинхронного обмена посредством
веб-сервисов.
Обращение ИС ОИВ к ИС НСИ осуществляется посредством
РСМЭВ.
Сообщение, передаваемое через РСМЭВ, должно соответствовать
техническим требованиям к взаимодействию информационных систем
13
органов исполнительной власти города Москвы и централизованных
информационных систем Правительства Москвы, обеспечивающих
управление государственными услугами в электронном виде.
Для получения репликаций справочников из ИС НСИ на стороне
ИС ОИВ должен быть разработан и зарегистрирован в РСМЭВ веб-сервис
получения репликаций. Должна быть обеспечена работоспособность
сервиса в круглосуточном режиме. При этом все изменения справочников
будут высылаться в виде xml-сообщений на данный веб-сервис. Все
уведомления, в том числе, в случае недоступности сервиса или сбоев в его
работе будут высылаться на e-mail, указанный в заявке на подписку
изменений справочника.
На стороне получателя процесс приёма репликаций рекомендуется
реализовывать через два параллельно работащих механизма:
1)
Приемщик пакета
-
получает реплику, проверяет
контрольную сумму на соответствие количества сообщений,
указанного в заголовке пакета (<package id="…" count="…">),
фактическому количеству сообщений (блоков <catalog
name="…">), кладет валидную реплику в локальную очередь,
дает ответ что пакет получен.
2) Разборщик пакета (парсер) - читает локальную очередь,
осуществляет проверку содержимого блока <catalog name="…">
на соответствие бизнес-требований, складывает валидные
изменения в локальные справочники.
Необходимо иметь в виду, что в момент получения пакета реплика
уже является сформированной и не подлежит модификации даже в случае
выявления замечаний к содержимому пакета. В связи с этим, если есть
замечания к содержимому реплики (не пройдена проверка валидности) -
она должна быть пропущена на стороне получателя, и инициировано
обращение в службу технической поддержки АС УР asur_request@mos.ru .
14
При этом необходимо учитывать, что исправленные значения (в случае
подтверждения ошибки) будут присланы новым пакетом репликаций
(старый пакет не будет исправлен).
Рекомендуется сохранять полученные пакеты репликаций на
стороне получателя для:
1) Разбора инцидентов;
2) Возможности повторной загрузки пакетов репликаций в
случае потери данных.
Синхронизация данных НСИ представлена ниже (Рисунок 2).
Для подписки на рассылку изменений необходимо использовать
веб-интерфейс подсистемы рассылки реплик.
Веб-интерфейс позволяет:
- указать веб-адрес сервиса приема реплик;
- адрес электронной почты для уведомлений;
- указать каталоги и иерархии, по которым необходимо получать
изменения;
- указать минимальный и максимальный размер пакета
изменений;
- указать интервал рассылки реплик.
Для работы с веб-интерфейсом системы необходимо получить
учетную запись у администратор ИС НСИ.
15
Рисунок 2 - Блок схема синхронизации НСИ
16
5 Механизм рассылки репликаций НСИ
Сначала отрабатывает механизм формирования пакетов из
изменений, берутся все, необработанные изменения из базы и, для
каждого изменения, ищутся подписки, для которых необходимо
формировать пакеты по заданному изменению, затем изменение
добавляется во все найденные пакеты подписок. Далее запускается
механизм автоматической рассылки.
Для каждой подписки формируется очередь из пакетов,
изначально, при создании нового пакета у него проставляется параметр
«количество попыток отправки» = 10. Затем начинается отправка пакетов,
по порядку, согласно очереди.
Если пакет отправлен успешно, то он удаляется из очереди и
начинается отправка следующего пакета.
Если при отправке пакета произошла ошибка, то параметр
«количество попыток отправки» уменьшается на единицу.
Если исчерпаны все десять попыток отправки, отправка изменений
для данной подписки приостанавливается с соответсвующим
уведомлением по e-mail. Заново инициировать отправку можно либо через
веб-интерфейс рассылки реплик нажатием кнопки «Доставить все
недоставленные», либо посредством обращения к сервису рассылки
реплик (метод setDeliveryForUndeliveriedPackages). При инициализации
отправки будет осуществлено не более 5 попыток отправки ошибочного
пакета, если они тоже завершатся ошибкой, очередь снова будет
остановлена. Если ошибочный пакет будет успешно отправлен, то очередь
заработает в обычном режиме (для каждого последующего пакета
допускается 10 ошибок отправки). Если же количество попыток отправки
не исчерпано
- отправка пакетов для текущего подписчика
17
останавливается, однако, при следующем цикле отправки очередь вновь
встает на отправку.
Интервал одного цикла отправки - 5 минут.
18
6 Веб-интерфейс системы НСИ подсистемы
информационного взаимодействия
6.1 Окно с формой авторизации
Окно с формой авторизации представлено ниже (Рисунок 3).
Рисунок 3 - Окно с формой авторизации
6.2 Основная форма
Основная форма представлена ниже (Рисунок 4).
19
Рисунок 4 - Основная форма
Основная форма содержит данные о текущей системе, списка
пользователей ИС НСИ, от имени которых система может выполнять
запросы на получение или внесение данных, установленных сертификатов
для системы, а также подписки системы на репликации классификаторов.
6.3 Вкладка «Изменения»
Вкладка «Изменения» представлена ниже (Рисунок 5).
20
Рисунок 5 - Вкладка «Изменение»
Вкладка «Изменения» служит для контроля наличия изменений за
определенный период и облегчения отладки взаимодействия с
подсистемой рассылки репликаций НСИ.
Чтобы сформировать пакеты из сообщений по заданным условиям
необходимо перейти на вкладку «Изменения». В фильтре задаем период,
за который необходимо найти изменения, а также тип объекта
(каталог/иерархия) и статус сообщения. Далее нажимаем кнопку
«Показать». В таблице отображаются все найденные по выбранным
условиям данные. Чтобы просмотреть содержимое конкретного
сообщения нужно кликнуть по ссылке «Нажмите для просмотра
содержимого сообщения». Чтобы сформировать пакеты из сообщений
необходимо поставить галочку напротив тех сообщений, которые
необходимо отправить, затем выбрать подписку, для которой
21
формируются пакеты и нажать кнопку «Отправить выбранные
сообщения».
Также, если известны идентификаторы сообщений, из которых
необходимо сформировать пакеты, можно перейти на вкладку
«Идентификаторы сообщений» и вставить их в текстовое поле, разделяя
идентификаторы сообщений символом точка с запятой (Рисунок 6):
Рисунок 6 - Вкладка «Идентификаторы сообщений»
6.4 Добавление/редактирование подписки
Окно с формой для добавления/редактирования подписки
представлено ниже (Рисунок 7).
Рисунок 7 - Окно для добавления/редактирования подписки
22
Чтобы добавить/изменить текущую подписку на репликации,
необходимо в основной форме нажать кнопку «Добавить» для
добавления, «Редактировать» для редактирования выбранной подписки.
Параметры подписки:
-
Имя - имя подписки, будет использоваться в сервисе рассылки
репликаций (subscriberID);
-
Адрес веб-сервиса - адрес веб-сервиса приема репликаций
(endpoint, не WSDL);
-
E-mail - адрес электронной почты для рассылки уведомлений.
Возможно указать несколько адресов, разделенных символом
точка с запятой;
-
Минимальная длина отправляемого пакета - минимальный
размер пакета с репликациями, который можно отправлять на
сервис приема репликаций, в случае, когда пакет еще не набрал
минимальный объем, он может быть отправлен, однако это
произойдет в момент следующего цикла рассылки репликаций
(1 цикл = 5 минут);
-
Максимальная длина отправляемого пакета - максимальный
размер отправляемого пакета с репликациями, значение по-
умолчанию 100Кб, максимально возможное - 2000Кб. В случае,
когда в очереди окажется сообщение об изменении,
превышающее максимально разрешенный размер пакета, из
такого сообщения формируется отдельный пакет, отправка
которого будет сразу остановлена с уведомлением на e-mail об
ошибке;
-
Версия - версия протокола отправки сообщений:
- РСМЭВ v10 - Формат РСМЭВ v10, пакет передается с
экранированными угловыми кавычками;
23
- РСМЭВ v10+BASE64
- Формат РСМЭВ v10, пакет
передается в кодировке BASE64;
- Минкомсвязь
2.5.6
-
Формат подписи РСМЭВ в
соответствии с требованиями Минкомсвязи 2.5.6;
-
Отправлять с, по - временной интервал отправки сообщений,
относительно времени суток;
-
Отправлять по факту - условие отправки сообщений: по факту
изменения, по факту подписания или в обоих случаях;
-
Проверять ЭП в ответе сервиса - флаг, нужно ли проверять
электронную подпись в ответе от сервиса приема репликаций.
Если флаг указан, но подпись в ответе некорректная, то это
будет считаться ошибкой отправки и будут предприняты новые
попытки отправки данного пакета;
-
Проставлять идентификатор каталога в сообщении - флаг,
добавлять ли в тег catalog информацию об идентификаторе
каталога (по умолчанию передается только наименование,
которое тем не менее уникально в рамках ИС НСИ и не
подлежит изменению).
В списке каталогов и иерархий необходимо выбрать
интересующие справочники и выбрать в выпадающем меню
«подписаться» напротив нужных каталогов/иерархий. Чтобы сохранить
сделанные изменения, нужно нажать кнопку «Сохранить».
6.5 Лог очереди пакетов
Лог очереди пакетов представлен ниже (Рисунок 8).
24
Рисунок 8 - Лог очереди пакетов
Чтобы посмотреть текущее состояние очереди пакетов для
конкретной подписке, необходимо в основной форме отметить
интересующую подписку и нажать кнопку «Просмотр лога». Откроется
форма просмотра лога всех пакетов, для выбранной подписки.
Чтобы посмотреть содержимое пакета, необходимо кликнуть на
ссылку «Содержимое пакета». Чтобы посмотреть лог действий с пакетом,
необходимо кликнуть на поле «Статус» напротив интересующего пакета.
Данное поле содержит последний статус пакета. Пример лога действий с
пакетом предоставлен ниже (Рисунок 9).
25
Рисунок 9 - Лог действий с пакетом
Также
можно
отфильтровать
пакеты
по
дате
поступления/изменения/предполагаемой дате отправки и статусу.
В случае остановки отправки изменений по данной подписке
заново инициировать отправку можно нажатием кнопки «Доставить все
недоставленные».
6.6 Вкладка «Каталоги»
Вкладка «Каталоги» представлена ниже (Рисунок 10).
26
Рисунок 10 - Вкладка «Каталоги»
Также в интерфейсе есть возможность получить спецификацию и
паспорт каталога. Для этого в основном окне необходимо перейти на
вкладку «Каталоги». Чтобы получить паспорт или спецификацию
выбранного каталога, необходимо кликнуть по соответствующей ссылке
напротив названия выбранного каталога.
27
7 Сервис рассылки реплик НСИ (СРР)
Тип сервиса: асинхронный.
WSDL сервиса в приложении к настоящему документу
(Приложение Ж).
7.1 Методы сервиса
7.1.1
Метод getCatalogChangesWSE
Позволяет получить все изменения каталога за заданный период,
для получателя, подписанного на рассылку изменений. Инициирует
формирование и отправку пакетов с изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- catalogID - числовой идентификатор каталога;
- periodStart - начальная дата периода;
- periodEnd - конечная дата периода;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.2
Метод getCatalogChangesWS
Позволяет получить все изменения каталога за период с заданной
даты до текущей даты, для получателя, подписанного на рассылку
28
изменений. Инициирует формирование и отправку пакетов с
изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- catalogID - числовой идентификатор каталога;
- periodStart - начальная дата периода;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.3
Метод getCatalogChanges
Позволяет получить все изменения каталога, для получателя,
подписанного на рассылку изменений. Инициирует формирование и
отправку пакетов с изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- catalogID - числовой идентификатор каталога;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
29
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.4
Метод getCatalogChangesUnSubWSE
Позволяет получить все изменения каталога за заданный период,
для получателя, не подписанного на рассылку изменений. Инициирует
формирование и отправку пакетов с изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- URL - адрес веб-сервиса получателя;
- Email - адрес электронной почты для рассылки уведомлений;
- packSize - максимальный размер пакета в Кб;
- catalogID - числовой идентификатор каталога;
- periodStart - начальная дата периода;
- periodEnd - конечная дата периода;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.5
Метод getCatalogChangesUnSubWS
Позволяет получить все изменения каталога за период с заданной
даты до текущей даты, для получателя, не подписанного на рассылку
30
изменений. Инициирует формирование и отправку пакетов с
изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- URL - адрес веб-сервиса получателя;
- Email - адрес электронной почты для рассылки уведомлений;
- packSize - максимальный размер пакета в Кб;
- catalogID - числовой идентификатор каталога;
- periodStart - начальная дата периода;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.6
Метод getCatalogChangesUnSub
Позволяет получить все изменения каталога, для получателя, не
подписанного на рассылку изменений. Инициирует формирование и
отправку пакетов с изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- URL - адрес веб-сервиса получателя;
- Email - адрес электронной почты для рассылки уведомлений;
- packSize - максимальный размер пакета в Кб;
- catalogID - числовой идентификатор каталога;
31
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.7
Метод getHierarchyChangesWSE
Позволяет получить все изменения иерархии за заданный период,
для получателя, подписанного на рассылку изменений. Инициирует
формирование и отправку пакетов с изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- hierarchyID - числовой идентификатор иерархии;
- periodStart - начальная дата периода;
- periodEnd - конечная дата периода;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
32
7.1.8
Метод getHierarchyChangesWS
Позволяет получить все изменения иерархии за период с заданной
даты до текущей даты, для получателя, подписанного на рассылку
изменений. Инициирует формирование и отправку пакетов с
изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- hierarchyID - числовой идентификатор иерархии;
- periodStart - начальная дата периода;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.9
Метод getHierarchyChanges
Позволяет получить все изменения иерархии, для получателя,
подписанного на рассылку изменений. Инициирует формирование и
отправку пакетов с изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- hierarchyID - числовой идентификатор иерархии;
33
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.10
Метод getHierarchyChangesUnSubWSE
Позволяет получить все изменения иерархии за заданный период,
для получателя, не подписанного на рассылку изменений. Инициирует
формирование и отправку пакетов с изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- URL - адрес веб-сервиса получателя;
- Email - адрес электронной почты для рассылки уведомлений;
- packSize - максимальный размер пакета в Кб;
- hierarchyID - числовой идентификатор иерархии;
- periodStart - начальная дата периода;
- periodEnd - конечная дата периода;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
34
7.1.11
Метод getHierarchyChangesUnSubWS
Позволяет получить все изменения иерархии за период с заданной
даты до текущей даты, для получателя, не подписанного на рассылку
изменений. Инициирует формирование и отправку пакетов с
изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- URL - адрес веб-сервиса получателя;
- Email - адрес электронной почты для рассылки уведомлений;
- packSize - максимальный размер пакета в Кб;
- hierarchyID - числовой идентификатор иерархии;
- periodStart - начальная дата периода;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.12
Метод getHierarchyChangesUnSub
Позволяет получить все изменения иерархии, для получателя, не
подписанного на рассылку изменений. Инициирует формирование и
отправку пакетов с изменениями.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- URL - адрес веб-сервиса получателя;
- Email - адрес электронной почты для рассылки уведомлений;
35
- packSize - максимальный размер пакета в Кб;
- hierarchyID - числовой идентификатор иерархии;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.13
Метод getUndeliveriedPackages
Позволяет получить список идентификаторов недоставленных
пакетов для подписчика с заданным идентификатором и паролем.
Возвращает
строку,
состоящую
из
идентификаторов
недоставленных пакетов, разделенных символом точка с запятой.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
36
7.1.14
Метод setDeliveryForUndeliveriedPackages
Позволяет инициировать доставку недоставленных ранее пакетов.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.1.15
Метод setDeliveryForUndeliveriedPackagesWID
Позволяет инициировать доставку недоставленных ранее пакетов.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- IDs - cтрока, состоящая из идентификаторов недоставленных
пакетов, разделенных символом точка с запятой. Если параметр
пустой, инициируется доставка всех недоставленных ранее
пакетов;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
37
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
7.2 Формат сообщений
Формат сообщения изменения элемента каталога:
<catalog name ="nameCatalog">
<categories>Родительские категории
<category nameHier=”nameHierarchy” idHier=”idHierarchy”>CategoryCode</category>
Имя иерархии,Идентификатор иерархии, Код категории(ключ)
<category nameHier=”nameHierarchyN” idHier=”idHierarchyN”>CategoryCodeN</category>
Имя иерархии,Идентификатор иерархии, Код категории(ключ)
</categories>
Данные записи
<data action = "действие с записью {ADDED,DELETED,MODIFIED,SIGNED}">
<attribute name="Attr_name1" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1">attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<groupvalue>
Блок/блоки присутствуют в случае, если тип атрибута Grouping
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
</groupvalue>
Блок/блоки присутствуют в случае, если тип атрибута не Grouping
<value occurrence="N">attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1">attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<groupvalue>
38
Атрибут - группа атрибутов
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
</groupvalue>
<value occurrence="N">attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
</data>
</catalog>
Пример:
<catalog name="Общемосковский классификатор улиц Москвы">
<categories>
<category nameHier="Общемосковский классификатор улиц Москвы”
idHier=”2231”>1</category>
</categories>
<data action = "MODIFIED">
<attribute name="KOD_FO" type="STRING">
<values>
<value occurrence="0">00130</value>
</values>
</attribute>
<attribute name="NMSTREET" type="STRING">
<values>
<value occurrence="0">1-й Автозаводский пр</value>
</values>
</attribute>
<attribute name="POSITION" type="STRING">
<values>
<value occurrence="0"></value>
</values>
</attribute>
<attribute name="TYP_U" type="LOOKUP_TABLE">
<values>
<value occurrence="0">251059</value>
</values>
</attribute>
<attribute name="DAT_UL" type="STRING">
<values>
<value occurrence="0">15.03.1954</value>
39
</values>
</attribute>
<attribute name="KOD_TE" type="STRING">
<values>
<value occurrence="0">0609</value>
</values>
</attribute>
<attribute name="KOD_TM" type="STRING">
<values>
<value occurrence="0">010</value>
</values>
</attribute>
<attribute name="OLD" type="GROUPING">
<values>
<groupvalue>
<attribute name="OLD/NMSTREET_O" type="STRING">
<values>
<value occurrence="0">Тюфелев проезд</value>
</values>
</attribute>
<attribute name="OLD/TYP_R" type="LOOKUP_TABLE">
<values>
<value occurrence="0">251059</value>
</values>
</attribute>
<attribute name="OLD/DAT_OLD" type="STRING">
<values>
<value occurrence="0">до 1917 г.</value>
</values>
</attribute>
</groupvalue>
</values>
</attribute>
<attribute name="SORT" type="STRING">
<values>
<value occurrence="0">Автозаводский</value>
</values>
</attribute>
<attribute name="DOP_SORT" type="STRING">
<values>
<value occurrence="0">1-й</value>
</values>
</attribute>
</data>
</catalog>
Формат сообщения изменения элемента иерархии:
<hierarchy name="nameHierarchy">
<categories>Родительские категории
<category nameHier=”nameHierarchy” idHier=”idHierarchy”>CategoryCode</category>
Имя иерархии,Идентификатор иерархии, Код категории(ключ)
<category nameHier=”nameHierarchyN” idHier=”idHierarchyN”>CategoryCodeN</category>
Имя иерархии,Идентификатор иерархии, Код категории(ключ)
Код категории
</categories>
Данные записи
<data action = "действие с записью {ADDED,DELETED,MODIFIED,SIGNED}">
< attribute name="Attr_name1" type="nameType">
Имя и тип атрибута
40
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
< value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
</data>
</hierarchy>
Пример:
<hierarchy name="Общемосковский классификатор улиц Москвы">
<categories>
<category nameHier="Общемосковский классификатор улиц Москвы”
idHier=”2231”>-1</category>
</categories>
<data action = "MODIFIED">
<attribute name="ID" type="INTEGER">
<values>
<value occurrence="0">1</value>
</values>
</attribute>
<attribute name="Name" type="STRING">
<values>
<value occurrence="0">Все элементы></value>
</values>
</attribute>
</data>
</hierarchy>
Поля типа LOOKUP_TABLE:
В поле типа LOOKUP_TABLE содержится внутренний
идентификатор lookup таблицы. Описание всех lookup таблиц, на которые
есть ссылки в сообщениях пакета, находятся в секции <lookups>.
Пример размещения и формата lookup таблицы в пакета:
<package id = "1" count = "1">
<lookups>
<lookup>
<id>4124</id>
<attribute name="Key" type="STRING"><values><value occurrence="0">0</value></values></attribute>
<attribute name="Value" type="NUMBER"><values><value occurrence="0"></value></values></attribute>
</lookup>
…….<-здесь повторяются секции <lookup> для всех идентификаторов lookup таблиц, найденных в пакете
41
</lookups>
<catalog name="БТИ. Адресный реестр">
<categories><category nameHier="Общемосковский классификатор улиц Москвы”
idHier=”2231”>1</category></categories>
<data action = "MODIFIED">
<attribute name="ID" type="SEQUENCE"><values><value occurrence="0">238601</value></values></attribute>
……перечисление атрибутов
<attribute name="SOOR" type="LOOKUP_TABLE"><values><value occurrence="0">4124</value></values></attribute>
……перечисление атрибутов
</data>
</catalog>
</package>
Как видно из примера, поле SOOR типа LOOKUP_TABLE имеет
идентификатор 4124, описание lookup таблицы находится в начале пакета,
идентификатор таблицы указывается в теге <id> далее идет перечисление
атрибутов, в таком же формате, как и для всех остальных секций элемента
выбранного каталога.
XSD сообщения:
<?xml version=”1.0” encoding=”utf-8”?>
<xs:schema xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="NewDataSet"
<xs:element name="package">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="lookups">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="lookup">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="id" nillable="true">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="value_Text" msdata:Ordinal="1">
<xs:extension base="xs:string">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="attribute">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="values">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="value" nillable="true">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="value_Text" msdata:Ordinal="1">
<xs:extension base="xs:string">
<xs:attribute name="occurrence" type="xs:string" />
</xs:extension>
</xs:simpleContent>
42
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="type" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="unbounded" name="catalog">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="categories">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="category" nillable="true">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="value_Text" msdata:Ordinal="1">
<xs:extension base="xs:string">
<xs:attribute name="nameHier" type="xs:string" />
<xs:attribute name="idHier" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="data">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="attribute">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="values">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="value" nillable="true">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="value_Text" msdata:Ordinal="1">
<xs:extension base="xs:string">
<xs:attribute name="occurrence" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="groupvalue">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="attribute">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="values">
43
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="value" nillable="true">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="value_Text" msdata:Ordinal="1">
<xs:extension base="xs:string">
<xs:attribute name="occurrence" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="type" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="type" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="action" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="count" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element msdata:IsDataSet="true" msdata:UseCurrentLocale="true" name="NewDataSet">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="package" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Формат пакета:
<package id=[Числовой идентификатор пакета] count=N>
<Список lookup таблиц со всеми атрибутами>
<Сообщение 1>
<Сообщение 2>
44
<Сообщение N>
</package>
N - количество сообщений в пакете.
45
8 Сервис рассылки реплик НСИ (СРР) v2
Тип сервиса: асинхронный.
WSDL сервиса в приложении к настоящему документу
(Приложение К).
8.1 Методы сервиса
8.1.1
Метод getCatalogChanges
Позволяет получить все изменения каталога за заданный период,
для получателя, подписанного на рассылку изменений. Инициирует
формирование и отправку пакетов с изменениями в асинхронном режиме.
Возвращает код «OK» и RequestId (строковый идентификатор,
предназначенный для сквозной нумерации вызовов сервисов,
представляет собой GUID унифицированной структуры (xxxxxxxx-
xxxxxxxx-xxxx-xxxxxxxxxxxx)), в случае успеха, либо код и описание
ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- catalogID - числовой идентификатор каталога;
- periodStart*1
- начальная дата периода (необязательный
параметр);
- periodEnd* - конечная дата периода (необязательный параметр).
8.1.2
Метод getCatalogChangesCount
Позволяет получить количество изменений каталога за заданный
период, для получателя, подписанного на рассылку изменений.
1
* - в случае, когда не задана конечная дата, но задана начальная, будут высылаться изменения за
период от начальной даты до текущей даты, в случае, если не задана начальная и конечная дата, будут
высланы все изменения, хранящиеся в базе по выбранному объекту
46
Возвращает количество изменений в случае успеха, либо описание
ошибки.
Вызов осуществляется со следующими параметрами:
- catalogID - числовой идентификатор каталога;
- periodStart*
- начальная дата периода (необязательный
параметр);
- periodEnd* - конечная дата периода (необязательный параметр);
- grouping - параметр группировки результата (YEAR, MONTH,
DAY, NONE), в случае, когда группировка задана, возвращает
количество элементов, сгруппированное по заданному периоду.
8.1.3
Метод getCatalogChangesUnSub
Позволяет получить все изменения каталога за заданный период,
для получателя, не подписанного на рассылку изменений. Инициирует
формирование и отправку пакетов с изменениями в асинхронном режиме.
Возвращает код «OK» и RequestId (строковый идентификатор,
предназначенный для сквозной нумерации вызовов сервисов,
представляет собой GUID унифицированной структуры (xxxxxxxx-
xxxxxxxx-xxxx-xxxxxxxxxxxx)), в случае успеха, либо код и описание
ошибки.
Вызов осуществляется со следующими параметрами:
- URL - адрес веб-сервиса получателя;
- Email - адрес электронной почты для рассылки уведомлений;
- packSize - максимальный размер пакета в Кб;
- protocolVersion**2
- версия протокола подписания пакетов
(RSMEV,RSMEV_BASE64,MIN_COM256);
2 ** - версии протоколов:
- RSMEV - формат РСМЭВ, пакет записывается с экранированными угловыми кавычками;
- RSMEV_BASE64 - формат РСМЭВ, пакет записывается в кодировке BASE64;
-
MIN_COM256 - формат подписи РСМЭВ в соответствии с требованиями Минкомсвязи 2.5.6.
47
- catalogID - числовой идентификатор каталога;
- periodStart*
- начальная дата периода (необязательный
параметр);
- periodEnd* - конечная дата периода (необязательный параметр).
8.1.4
Метод getHierarchyChanges
Позволяет получить все изменения иерархии за заданный период,
для получателя, подписанного на рассылку изменений. Инициирует
формирование и отправку пакетов с изменениями в асинхронном режиме.
Возвращает код «OK» и RequestId (строковый идентификатор,
предназначенный для сквозной нумерации вызовов сервисов,
представляет собой GUID унифицированной структуры (xxxxxxxx-
xxxxxxxx-xxxx-xxxxxxxxxxxx)), в случае успеха, либо код и описание
ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя;
- hierarchyID - числовой идентификатор иерархии;
- periodStart*
- начальная дата периода (необязательный
параметр);
- periodEnd* - конечная дата периода (необязательный параметр).
8.1.5
Метод getHierarchyChangesCount
Позволяет получить количество изменений иерархии за заданный
период, для получателя, подписанного на рассылку изменений.
Возвращает количество изменений в случае успеха, либо описание
ошибки.
Вызов осуществляется со следующими параметрами:
- hierarchyID - числовой идентификатор иерархии;
48
- periodStart*
- начальная дата периода (необязательный
параметр);
- periodEnd* - конечная дата периода (необязательный параметр);
- grouping - параметр группировки результата (YEAR, MONTH,
DAY, NONE), в случае, когда группировка задана, возвращает
количество элементов, сгруппированное по заданному периоду.
8.1.6
Метод getHierarchyChangesUnSub
Позволяет получить все изменения иерархии за заданный период,
для получателя, не подписанного на рассылку изменений. Инициирует
формирование и отправку пакетов с изменениями в асинхронном режиме.
Возвращает код «OK» и RequestId (строковый идентификатор,
предназначенный для сквозной нумерации вызовов сервисов,
представляет собой GUID унифицированной структуры (xxxxxxxx-
xxxxxxxx-xxxx-xxxxxxxxxxxx)), в случае успеха, либо код и описание
ошибки.
Вызов осуществляется со следующими параметрами:
- URL - адрес веб-сервиса получателя;
- Email - адрес электронной почты для рассылки уведомлений;
- packSize - максимальный размер пакета в Кб;
- protocolVersion**
- версия протокола подписания пакетов
(RSMEV,RSMEV_BASE64,MIN_COM256);
- hierarchyID - числовой идентификатор иерархии;
- periodStart*
- начальная дата периода (необязательный
параметр);
- periodEnd* - конечная дата периода (необязательный параметр).
49
8.1.7
Метод getUndeliveriedPackages
Позволяет получить список идентификаторов недоставленных
пакетов, удаленных из очереди на отправку, для подписчика с заданным
идентификатором и паролем.
Возвращает массив идентификаторов недоставленных пакетов,
удаленных из очереди на отправку.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя.
8.1.8
Метод setDeliveryForUndeliveriedPackages
Возвращает в очередь отправки все пакеты, удаленные из очереди.
Возвращает «OK», в случае успеха, либо описание ошибки.
Вызов осуществляется со следующими параметрами:
- subsсriberID - строковый идентификатор получателя;
- password - пароль получателя.
8.2 Формат сообщений
Формат сообщения изменения элемента каталога:
<catalog name ="nameCatalog">
<categories>Родительские категории
<category nameHier=”nameHierarchy” idHier=”idHierarchy”>CategoryCode</category>
Имя иерархии,Идентификатор иерархии, Код категории(ключ)
<category nameHier=”nameHierarchyN” idHier=”idHierarchyN”>CategoryCodeN</category>
Имя иерархии,Идентификатор иерархии, Код категории(ключ)
</categories>
Данные записи
<data action = "действие с записью {ADDED,DELETED,MODIFIED,SIGNED}">
Действия с записью:добавление, удаление, изменение, подписание
<attribute name="Attr_name1" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1">attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<groupvalue>
Блок/блоки присутствуют в случае, если тип атрибута Grouping
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<value occurrence="N"> attr_valueN</value>
50
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
</groupvalue>
Блок/блоки присутствуют в случае, если тип атрибута не Grouping
<value occurrence="N">attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1">attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<groupvalue>
Атрибут - группа атрибутов
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
</groupvalue>
<value occurrence="N">attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
</data>
</catalog>
Пример:
<catalog name="Общемосковский классификатор улиц Москвы">
<categories>
<category nameHier="Общемосковский классификатор улиц Москвы”
idHier=”2231”>1</category>
51
</categories>
<data action = "MODIFIED">
<attribute name="KOD_FO" type="STRING">
<values>
<value occurrence="0">00130</value>
</values>
</attribute>
<attribute name="NMSTREET" type="STRING">
<values>
<value occurrence="0">1-й Автозаводский пр</value>
</values>
</attribute>
<attribute name="POSITION" type="STRING">
<values>
<value occurrence="0"></value>
</values>
</attribute>
<attribute name="TYP_U" type="LOOKUP_TABLE">
<values>
<value occurrence="0">251059</value>
</values>
</attribute>
<attribute name="DAT_UL" type="STRING">
<values>
<value occurrence="0">15.03.1954</value>
</values>
</attribute>
<attribute name="KOD_TE" type="STRING">
<values>
<value occurrence="0">0609</value>
</values>
</attribute>
<attribute name="KOD_TM" type="STRING">
<values>
<value occurrence="0">010</value>
</values>
</attribute>
<attribute name="OLD" type="GROUPING">
<values>
<groupvalue>
<attribute name="OLD/NMSTREET_O" type="STRING">
<values>
<value occurrence="0">Тюфелев проезд</value>
</values>
</attribute>
<attribute name="OLD/TYP_R" type="LOOKUP_TABLE">
<values>
<value occurrence="0">251059</value>
</values>
</attribute>
<attribute name="OLD/DAT_OLD" type="STRING">
<values>
<value occurrence="0">до 1917 г.</value>
</values>
</attribute>
</groupvalue>
</values>
</attribute>
<attribute name="SORT" type="STRING">
<values>
52
<value occurrence="0">Автозаводский</value>
</values>
</attribute>
<attribute name="DOP_SORT" type="STRING">
<values>
<value occurrence="0">1-й</value>
</values>
</attribute>
</data>
</catalog>
Формат сообщения изменения элемента иерархии:
<hierarchy name="nameHierarchy">
<categories>Родительские категории
<category nameHier=”nameHierarchy” idHier=”idHierarchy”>CategoryCode</category>
Имя иерархии,Идентификатор иерархии, Код категории(ключ)
<category nameHier=”nameHierarchyN” idHier=”idHierarchyN”>CategoryCodeN</category>
Имя иерархии,Идентификатор иерархии, Код категории(ключ)
Код категории
</categories>
Данные записи
<data action = "действие с записью {ADDED,DELETED,MODIFIED,SIGNED}">
Действия с записью:добавление, удаление, изменение, подписание
< attribute name="Attr_name1" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
< value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
<attribute name="Attr_nameN" type="nameType">
Имя и тип атрибута
<values>
<value occurrence="1"> attr_value1</value>
Порядковый номер вхождения атрибута и его значение
<value occurrence="N"> attr_valueN</value>
Порядковый номер вхождения атрибута и его значение
</values>
</attribute>
</data>
</hierarchy>
Пример:
<hierarchy name="Общемосковский классификатор улиц Москвы">
<categories>
<category nameHier="Общемосковский классификатор улиц Москвы”
idHier=”2231”>-1</category>
</categories>
<data action = "MODIFIED">
<attribute name="ID" type="INTEGER">
<values>
<value occurrence="0">1</value>
</values>
</attribute>
53
<attribute name="Name" type="STRING">
<values>
<value occurrence="0">Все элементы></value>
</values>
</attribute>
</data>
</hierarchy>
XSD сообщения:
<?xml version=”1.0” encoding=”utf-8”?>
<xs:schema xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns="" id="NewDataSet"
<xs:element name="package">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="catalog">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="categories">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="category" nillable="true">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="value_Text" msdata:Ordinal="1">
<xs:extension base="xs:string">
<xs:attribute name="nameHier" type="xs:string" />
<xs:attribute name="idHier" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="data">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="attribute">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="values">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="value" nillable="true">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="value_Text" msdata:Ordinal="1">
<xs:extension base="xs:string">
<xs:attribute name="occurrence" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="groupvalue">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="attribute">
<xs:complexType>
<xs:sequence>
54
<xs:element minOccurs="0" maxOccurs="unbounded" name="values">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="value" nillable="true">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="value_Text" msdata:Ordinal="1">
<xs:extension base="xs:string">
<xs:attribute name="occurrence" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="type" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="type" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="action" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="count" type="xs:string" />
<xs:attribute name="final" type="xs:string" use="optional"/>
<xs:attribute name="guid" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element msdata:IsDataSet="true" msdata:UseCurrentLocale="true" name="NewDataSet">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="package" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
Формат пакета:
55
<package id=[Числовой идентификатор пакета] count=[количество
сообщений в пакете] final=[флаг окончания рассылки - признак последнего
пакета(true/false)] guid=[RequestId, возвращенный при вызове метода сервиса]>
<Сообщение 1>
<Сообщение 2>
<Сообщение N>
</package>
56
9 Сервис получения реплик НСИ (СПР)
Тип сервиса: синхронный.
Для обработки поступающих сообщений в смежной системе
должен быть разработан веб-сервис со всеми необходимыми методами
взаимодействия с сервисом рассылки репликаций ИС НСИ. Сервис
использует для приема сообщений протокол РСМЭВ v10.
WSDL сервиса в приложении к настоящему документу
(Приложение М).
9.1 Методы сервиса
9.1.1
Метод receive_change
Выполняет обработку поступившего пакета.
Возвращает «OK:Идентификатор полученного пакета», в случае
успеха, либо «FAIL: Идентификатор полученного пакета:Описание
ошибки».
Вызов осуществляется со следующими параметрами:
- xml
- текст полученного пакета изменений в формате,
описанном в п. 7.2.
Необходимые значения параметров сервиса:
- SOAPAction: http://nsi.asur.mos.ru/receive_change;
- NameSpace: http://nsi.asur.mos.ru/.
57
10 Сервис получения реплик НСИ (СПР) v2
Тип сервиса: синхронный.
Для обработки поступающих сообщений в смежной системе
должен быть разработан веб-сервис со всеми необходимыми методами
взаимодействия с сервисом рассылки репликаций ИС НСИ. Сервис
использует для приема сообщений протокол Минкомсвязь 2.5.6.
WSDL сервиса в приложении к настоящему документу
(Приложение Н).
10.1 Методы сервиса
10.1.1
Метод receive_change
Выполняет обработку поступившего пакета. Возвращает
следующие параметры:
- result
- код результата обработки пакета
(1
- обработка
успешна, 0 - ошибка);
- packageId - идентификатор принятого пакета;
- message - в случае ошибки - текстовое описание ошибки.
Вызов осуществляется со следующими параметрами:
- xml
- текст полученного пакета изменений в формате,
описанном в п. 8.2 (Секция smev:Message содержит в себе
служебные параметры, которые заполняются в соответствии с
требованиями СМЭВ, в секции smev:AppData приходит сам
пакет репликаций).
58
11 Сервис получения данных (СПД)
WSDL сервиса в приложении к настоящему документу
(Приложение A).
Данный сервис работает в синхронном режиме. Для снижения
нагрузки на сервер было введено ограничение на количество
одновременных запросов в сервису. Количество одновременных запросов
равно 10. В случае если это значение привышено, сервис выдает ответ:
<resultCode>ERROR_LIMIT_REQUEST</resultCode>
<trace>Превышено максимально допустимое количество обращений к
сервису.</trace>
11.1 Описание методов сервиса
11.1.1
Метод getCatalogList
Получение перечня каталогов ИС НСИ.
Возвращает Catalogs - список объектов типа pimCatalog.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
11.1.2
Метод getHierarchyList
Получение перечня иерархий ИС НСИ.
59
Возвращает Hierarchies - список объектов типа pimHierarchy.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
11.1.3
Метод getCatalogHierarchies
Получение перечня иерархий, в которых используются элементы
конкретного каталога.
Возвращает Hierarchies - список объектов типа pimHierarchy.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- idCatalog - числовой идентификатор каталога;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
60
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
11.1.4
Метод getCatalogSpec
Получение спецификации элементов каталога в формате.
Возвращает AttrSpec - список объектов типа CommonAttribute.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- idCatalog - числовой идентификатор каталога;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
Блок-схема вызова метода представлена ниже (Рисунок 11).
61
Рисунок 11 - Блок-схема вызова метода getCatalogSpec
11.1.5
Метод getHierarchySpec
Получение спецификации элементов иерархии.
Возвращает AttrSpec - список объектов типа CommonAttribute.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- idHierarhy - числовой идентификатор иерархии;
62
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
Блок-схема вызова метода getHierarchySpec аналогична вызову
метода getCatalogSpec (Рисунок 11).
11.1.6
Метод getCatalogItems
Получение записей каталога.
Возвращает CatalogItems - список объектов типа pimCatalogItem.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- versionDate - дата версии;
- idCatalog - числовой идентификатор каталога;
- Attributes - строка наименований атрибутов через запятую,
которые должны содержаться в результирующей выборке. В
случае если строка пустая, в результирующей выборке
отображаются все атрибуты записей каталога;
- AttrSort - наименование атрибута сортировки;
- SortType - тип сортировки (ASC - по возрастанию, DESC - по
убыванию);
- Start - порядковый номер записи из результирующей выборки,
начало диапазона;
63
- End - порядковый номер записи из результирующей выборки,
конец диапазона;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
Блок-схема вызова метода getCatalogItems аналогична вызову
метода getCatalogSpec.
11.1.7
Метод getCatalogItemsByAttrValue
Получение записей каталога по заданному значению атрибута.
Возвращает CatalogItems - список объектов типа pimCatalogItem.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- versionDate - дата версии;
- idCatalog - числовой идентификатор каталога;
- attrName - наименование атрибута;
- attrValue - значение атрибута. Предполагается использование
выражения <Символы>*. При этом в выборку должны попадать
все категории, значение атрибута attrName которых начинается
с <Символы>;
- Attributes - строка наименований атрибутов через запятую,
которые должны содержаться в результирующей выборке. В
64
случае если строка пустая, в результирующей выборке
отображаются все атрибуты записей каталога;
-
AttrSort - наименование атрибута сортировки;
SortType - тип сортировки (ASC - по возрастанию, DESC - по
убыванию);
-
Start - порядковый номер записи из результирующей выборки,
начало диапазона;
-
End - порядковый номер записи из результирующей выборки,
конец диапазона;
-
requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
Блок-схема вызова метода getCatalogItemsByAttrValue аналогична
вызову метода getCatalogSpec.
11.1.8
Метод getCatalogItemsByCategory
Получение записей каталога по категории.
Возвращает CatalogItems - список объектов типа pimCatalogItem.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- versionDate - дата версии;
- idCatalog - числовой идентификатор каталога;
65
-
idHierarсhy - числовой идентификатор иерархии;
idCategory - числовой идентификатор категории;
Attributes - строка наименований атрибутов через запятую,
которые должны содержаться в результирующей выборке. В
случае если строка пустая, в результирующей выборке
отображаются все атрибуты записей каталога;
-
AttrSort - наименование атрибута сортировки;
SortType - тип сортировки (ASC - по возрастанию, DESC - по
убыванию);
-
Start - порядковый номер записи из результирующей выборки,
начало диапазона;
-
End - порядковый номер записи из результирующей выборки,
конец диапазона;
-
requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
Блок-схема вызова метода представлена ниже (Рисунок 12).
66
Рисунок 12 - Блок-схема вызова метода getCatalogItemsByCategory
11.1.9
Метод getCategories
Получение категорий.
Возвращает Categories - список объектов типа pimCategory.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
67
-
versionDate - дата версии;
idHierarchy - числовой идентификатор иерархии;
Attributes - строка наименований атрибутов через запятую,
которые должны содержаться в результирующей выборке. В
случае если строка пустая, в результирующей выборке
отображаются все атрибуты категории;
-
AttrSort - наименование атрибута сортировки;
SortType - тип сортировки (ASC - по возрастанию, DESC - по
убыванию);
-
Start - порядковый номер записи из результирующей выборки,
начало диапазона;
-
End - порядковый номер записи из результирующей выборки,
конец диапазона;
-
requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
11.1.10
Метод getCategoriesByAttrValue
Получение категорий по заданному значению атрибута.
Возвращает Categories - список объектов типа pimCategory.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
68
-
versionDate - дата версии;
idHierarchy - числовой идентификатор иерархии;
attrName - наименование атрибута;
attrValue - значение атрибута. Предполагается использование
выражения <Символы>*. При этом в выборку должны попадать
все категории, значение атрибута attrName которых начинается
с <Символы>;
-
Attributes - строка наименований атрибутов через запятую,
которые должны содержаться в результирующей выборке. В
случае если строка пустая, в результирующей выборке
отображаются все атрибуты категории;
-
AttrSort - наименование атрибута сортировки;
SortType - тип сортировки (ASC - по возрастанию, DESC - по
убыванию);
-
Start - порядковый номер записи из результирующей выборки,
начало диапазона;
-
End - порядковый номер записи из результирующей выборки,
конец диапазона;
-
requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
Блок-схема вызова метода getCategoriesByAttrValue аналогична
вызову метода getCatalogSpec (Рисунок 11).
69
11.1.11
Метод getCategoryParent
Получение родительского элемента категории.
Возвращает объект типа pimCategory.
Вызов осуществляется со следующими параметрами:
-
user - имя пользователя;
password - пароль;
company - код компании;
idHierarchy - числовой идентификатор иерархии;
idCategory - числовой идентификатор категории;
Attributes - строка наименований атрибутов через запятую,
которые должны содержаться в результирующей выборке. В
случае если строка пустая, в результирующей выборке
отображаются все атрибуты родительской категории;
-
requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
11.1.12
Метод getCategoryChildren
Получение дочерних элементов категории.
Возвращает Categories - список объектов типа pimCategory.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
70
-
versionDate - дата версии;
idHierarchy - числовой идентификатор иерархии;
idCategory - числовой идентификатор категории;
Attributes - строка наименований атрибутов через запятую,
которые должны содержаться в результирующей выборке. В
случае если строка пустая, в результирующей выборке
отображаются все атрибуты дочерних категорий;
-
Start - порядковый номер записи из результирующей выборки,
начало диапазона;
-
End - порядковый номер записи из результирующей выборки,
конец диапазона;
-
requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
11.1.13
Метод getCategoryByCtgItmKey
Получение категории по идентификатору записи каталога.
Возвращает объект типа pimCategory.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- versionDate - дата версии;
- idCatalog - числовой идентификатор каталога;
71
- idHierarchy - числовой идентификатор иерархии;
- Key - строковый ключ элемента каталога;
- Attributes - строка наименований атрибутов через запятую,
которые должны содержаться в результирующей выборке. В
случае если строка пустая, в результирующей выборке
отображаются все атрибуты категории;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
11.2 Примеры использования методов
Получение плоского справочника:
- получаем список всех каталогов getCatalogList (п. 11.1.1);
- выбираем идентификатор необходимого каталога;
- получаем список элементов каталога по идентификатору
getCatalogItems(Идентификатор каталога).
Получение иерархического справочника:
- получаем список всех каталогов getCatalogList (п. 11.1.1);
- выбираем идентификатор необходимого каталога. Например,
идентификатор Адресного реестра;
- получаем
список
всех
иерархий
getCatalogHierarchies(Идентификатор каталога);
- выбираем идентификатор необходимой иерархии для каталога.
Например, идентификатор иерархии Улицы;
72
- рекурсивно строим структуру категорий, используя метод
getCategoryChildren(id_hierarchy, id_category, attributes), где:
- id_hierarchy - идентификатор иерархии (Улицы);
- id_category - идентификатор категории (при значении «-
1» получаем список корневых категорий);
- attributes - выводимые атрибуты (например, «Id,Name»);
- для каждой категории получаем записи каталога
getCatalogItemsByCategory(id_catalog, id_hierarchy, id_category,
attributes, AttrSort, sortType), где:
- id_catalog - идентификатор каталога (Адресный реестр);
- id_hierarchy - идентификатор иерархии (Улицы);
- id_category - идентификатор категории;
- attributes - выводимые атрибуты;
- AttrSort - атрибут сортировки;
- sortType - тип сортировки.
11.3 Реализация классов сервиса
public class AttrSpec{
private List<CommonAttributes> list; //список общих атрибутов
private int countItems;
public AttrSpec(){
super();
list = new ArrayList<CommonAttributes>();
countItems = 0;
}
public void setList(List<CommonAttributes> listitem) {
this.list = listitem;
}
public List<CommonAttributes> getList() {
return this.list;
}
public void addItem(CommonAttributes item) {
if (list != null) list.add(item);
73
}
public CommonAttributes getItem(int index) {
if (list != null) return list.get(index);
return null;
}
public int count() {
return list.size();
}
public int getCount(){
return this.countItems;
}
public void setCount(int c){
this.countItems = c;
}
}
enum pimType
{INTEGER,STRING,NUMBER,DATE,BINARY,GROUPING,LOOKUP_TABLE,
UNKNOWN,URL,SEQUENCE,RELATIONSHIP,PASSWORD,
EXTERNAL_CONTENT_REFERENCE,STRING_ENUMERATION,
FLAG}; //типы атрибутов
//INTEGER - целочисленный тип
//STRING - строковый тип
//NUMBER - числовой тип
/NUMBER_ENUMERATION - перечисление чисел
//DATE - тип Дата/Время
//BINARY - неструктурированные данные
//GROUPING - атрибут-группа, не содержит значений
//LOOKUP_TABLE - тип элемента из связанной с классификатором таблицы значений
//URL - веб-ссылка
//SEQUENCE - автоинкремент
//RELATIONSHIP - тип элемента из связанного классификатора
//PASSWORD - тип Пароль, значение скрывается звездочками
//EXTERNAL_CONTENT_REFERENCE - ссылка на внешнее содержимое
//STRING_ENUMERATION - перечисление строк
//FLAG - тип Флаг (например, Да/Нет, Есть/Нет)
public class CommonAttributes {
public enum pimType {
INTEGER, STRING, NUMBER, DATE, BINARY, GROUPING,
LOOKUP_TABLE, URL, SEQUENCE, RELATIONSHIP, PASSWORD,
EXTERNAL_CONTENT_REFERENCE, STRING_ENUMERATION, FLAG,
UNKNOWN
}
private String name;
//наименование
74
private pimType type;
//тип атрибута
private boolean isPrimaryKey;
//признак - первичный ключ
public CommonAttributes() {
super();
name = "";
type = pimType.UNKNOWN;
isPrimaryKey = false;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String typ) {
this.type = typ;
}
public boolean getIsPK() {
return isPrimaryKey;
}
public void setIsPK(boolean b) {
this.isPrimaryKey = b;
}
}
public class Attribute extends CommonAttributes {
private List<Object> value; //список значений атрибута
public Attribute()
{
value = new ArrayList<Object>();
}
public List<Object> getValue() {
return this.value;
}
public void setValue(List<Object> val)
{
this.value = val;
75
}
public void addValueItem(Object item)
{
if (item != null) this.value.add(item);
}
public void getValueItem(int index)
{
this.value.get(index);
}
}
public class pimCatalog {
private int id; //индентификатор каталога
private String name; //наименование каталога
public pimCatalog() {
name = "";
id = -1;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
public class pimHierarchy {
private int id;
//идентификатор
private String name; //наименование
public pimHierarchy() {
name = "";
id = -1;
}
public String getName() {
76
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
public class pimCategory {
private List<Attribute> list; //список атрибутов
public pimCategory() {
super();
list = new ArrayList<Attribute>();
}
public void setList(List<Attribute> listitem) {
this.list = listitem;
}
public List<Attribute> getList() {
return this.list;
}
public void addItem(Attribute item) {
if (list != null) list.add(item);
}
public Attribute getItem(int index) {
if (list != null) return list.get(index);
return null;
}
public void clear() {
this.list.clear();
}
}
public class pimCatalogItem{
private List<Attribute> list; //список атрибутов
77
private String id;
public pimCatalogItem() {
super();
id = "";
list = new ArrayList<Attribute>();
}
public String getId(){
return this.id;
}
public void setId(String key){
this.id = key;
}
public void setList(List<Attribute> listitem) {
this.list = listitem;
}
public List<Attribute> getList() {
return this.list;
}
public void addItem(Attribute item) {
if (list != null) list.add(item);
}
public Attribute getItem(int index) {
if (list != null) return list.get(index);
return null;
}
public void clear() {
this.list.clear();
}
}
public class Catalogs {
private List<pimCatalog> list; //список каталогов
public Catalogs(){
super();
list = new ArrayList<pimCatalog>();
}
public void setList(List<pimCatalog> items) {
this.list = items;
}
public List<pimCatalog> getList() {
return this.list;
78
}
public void addItem(pimCatalog item) {
if (list != null) list.add(item);
}
public pimCatalog getItem(int index) {
if (list != null) return list.get(index);
return null;
}
public int count(){
return list.size();
}
public class Hierarchies {
private List<pimHierarchy> list; //список иерархий
public Hierarchies(){
super();
list = new ArrayList<pimHierarchy>();
}
public void setList(List<pimHierarchy> items) {
this.list = items;
}
public List<pimHierarchy> getList() {
return this.list;
}
public void addItem(pimHierarchy item) {
if (list != null) list.add(item);
}
public pimHierarchy getItem(int index) {
if (list != null) return list.get(index);
return null;
}
public int count(){
return list.size();
}
}
public class CatalogItems{
private List<pimCatalogItem> list; //список записей каталога
public CatalogItems(){
super();
list = new ArrayList<pimCatalogItem>();
}
public void setList(List<pimCatalogItem> listitem) {
this.list = listitem;
79
}
public List<pimCatalogItem> getList() {
return this.list;
}
public void addItem(pimCatalogItem item) {
if (list != null) list.add(item);
}
public pimCatalogItem getItem(int index) {
if (list != null) return list.get(index);
return null;
}
public int count() {
return list.size();
}
}
public class Categories{
private List<pimCategory> list; //список категорий
public Categories(){
super();
list = new ArrayList<pimCategory>();
}
public void setList(List<pimCategory> list) {
this.list = list;
}
public List<pimCategory> getList() {
return this.list;
}
public void addItem(pimCategory item) {
if (list != null) list.add(item);
}
public pimCategory getItem(int index) {
if (list != null) return list.get(index);
return null;
}
public int count(){
return list.size();
}
}
80
12 Сервис получения данных v2.0 (СПД)
Тип сервиса: синхронный.
Для снижения нагрузки на сервер было введено ограничение на
количество одновременных запросов в сервису. Количество
одновременных запросов равно
10. В случае если это значение
привышено, сервис выдает ответ:
<resultCode>ERROR_LIMIT_REQUEST</resultCode>
<trace>Превышено максимально допустимое количество обращений к
сервису.</trace>
WSDL сервиса в приложении к настоящему документу
(Приложение Б).
12.1 Описание методов сервиса
12.1.1
Метод getCatalogList
Получение перечня каталогов ИС НСИ.
Возвращает Catalogs - список объектов типа pimCatalog.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- name - фильтр по наименованию каталога.
12.1.2
Метод getHierarchyList
Получение перечня иерархий ИС НСИ.
Возвращает Hierarchies - список объектов типа pimHierarchy.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
81
- name - фильтр по наименованию иерархии.
12.1.3
Метод getCatalogHierarchies
Получение перечня иерархий, в которых используются элементы
конкретного каталога.
Возвращает Hierarchies - список объектов типа pimHierarchy.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- idCatalog - числовой идентификатор каталога.
12.1.4
Метод getCatalogSpec
Получение спецификации элементов каталога в формате.
Возвращает AttrSpec - список объектов типа CommonAttribute.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- idCatalog - числовой идентификатор каталога.
Блок-схема вызова метода представлена ниже (Рисунок 13).
82
Рисунок 13 - Блок-схема вызова метода getCatalogSpec
12.1.5
Метод getHierarchySpec
Получение спецификации элементов иерархии.
Возвращает AttrSpec - список объектов типа CommonAttribute.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- idHierarhy - числовой идентификатор иерархии.
83
Блок-схема вызова метода getHierarchySpec аналогична вызову
метода getCatalogSpec (Рисунок 13).
12.1.6
Метод getCatalogItems
Получение записей каталога.
Ограничение на количество выводимых записей высчитывается по
формуле
[количество_записей]*[количество_выводимых_атрибутов]*[количество_
значений_атрибута]<=5000.
Возвращает CatalogItems - список объектов типа pimCatalogItem.
Вызов осуществляется со следующими параметрами:
-
user - имя пользователя;
password - пароль;
company - код компании;
-
verDate - дата версии;
idCatalog - числовой идентификатор каталога;
-
attributes - массив наименований атрибутов, которые должны
содержаться в результирующей выборке. В случае если массив
пустой, в результирующей выборке отображаются все атрибуты
записей каталога;
-
sortItems - парметр структурированного типа предназначеный
для сортировки выдаваемого результата. Данный параметр
имеет следующую структуру:
- attrSort - наименование атрибута сортировки;
- sortType - тип сортировки (ASC - по возрастанию, DESC
- по убыванию);
-
attrSearchValues
- параметр структурированного типа
предназначен для филтрации элементов справочника по
84
значению атрибута. Данный параметр имеет слудующую
структуру:
- attrName - наименование атрибута;
- from - значение атрибута «от»;
- to - значение атрибута «до»;
значения могут быть типа даты (в формате dd/MM/yyyy
HH:mm:ss, yyyy-MM-dd'T'HH:mm:ss, dd.MM.yyyy HH:mm:ss),
строковыми, числовыми;
-
modifiedItems
-
параметр
структурированного
типа
предназначеный для фильтрации элементов справочника по
дате изменения. Данный параметр имеет следующую структуру:
- from - значение атрибута «от»;
- to - значение атрибута «до»;
параметры принимают значения типа дата (в формате
dd/MM/yyyy HH:mm:ss, yyyy-MM-dd'T'HH:mm:ss, dd.MM.yyyy
HH:mm:ss);
-
categoryItems
-
параметр
структурированного
типа
предназначеный для фильтрации элементов каталога по
категории. Данный параметр имеет следующую структуру:
- idHierCtg - идентификатор иерархии;
- idCatCtg - идентификатор категории;
-
Start - порядковый номер записи из результирующей выборки,
начало диапазона;
-
End - порядковый номер записи из результирующей выборки,
конец диапазона.
Блок-схема вызова метода getCatalogItems аналогична вызову
метода getCatalogSpec (Рисунок 13).
85
12.1.7
Метод getCatalogItemsCount
Получение количества записей каталога.
Возвращает CountAll - количество элементов каталога.
Вызов осуществляется со следующими параметрами:
-
user - имя пользователя;
password - пароль;
company - код компании;
verDate - дата версии;
idCatalog - числовой идентификатор каталога;
attributes - массив наименований атрибутов, которые должны
содержаться в результирующей выборке. В случае если массив
пустой, в результирующей выборке отображаются все атрибуты
записей каталога;
-
sortItems - парметр структурированного типа предназначеный
для сортировки выдаваемого результата. Данный параметр
имеет следующую структуру:
- attrSort - наименование атрибута сортировки;
- sortType - тип сортировки (ASC - по возрастанию, DESC
- по убыванию);
-
attrSearchValues
- параметр структурированного типа
предназначен для филтрации элементов справочника по
значению атрибута. Данный параметр имеет слудующую
структуру:
- attrName - наименование атрибута;
- from - значение атрибута «от»;
- to - значение атрибута «до»;
86
значения могут быть типа даты (в формате dd/MM/yyyy
HH:mm:ss, yyyy-MM-dd'T'HH:mm:ss, dd.MM.yyyy HH:mm:ss),
строковыми, числовыми;
- modifiedItems
-
параметр
структурированного
типа
предназначеный для фильтрации элементов справочника по
дате изменения. Данный параметр имеет следующую структуру:
- from - значение атрибута «от»;
- to - значение атрибута «до»;
параметры принимают значения типа дата (в формате
dd/MM/yyyy HH:mm:ss, yyyy-MM-dd'T'HH:mm:ss, dd.MM.yyyy
HH:mm:ss);
- categoryItems
-
параметр
структурированного
типа
предназначеный для фильтрации элементов каталога по
категории. Данный параметр имеет следующую структуру:
- idHierCtg - идентификатор иерархии;
- idCatCtg - идентификатор категории.
Блок-схема вызова метода getCatalogItemsCount аналогична вызову
метода getCatalogSpec (Рисунок 13).
12.1.8
Метод getCategories
Получение категорий.
Возвращает Categories - список объектов типа pimCategory.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- verDate - дата версии;
- idHierarchy - числовой идентификатор иерархии;
87
-
attributes - массив наименований атрибутов, которые должны
содержаться в результирующей выборке. В случае если массив
пустой, в результирующей выборке отображаются все атрибуты
записей каталога;
-
sortCategory
-
парметр
структурированного
типа
предназначеный для сортировки выдаваемого результата.
Данный параметр имеет следующую структуру:
- attrSort - наименование атрибута сортировки;
- sortType - тип сортировки (ASC - по возрастанию, DESC
- по убыванию);
-
attrSearchValues
- параметр структурированного типа
предназначен для филтрации элементов иерархии по значению
атрибута. Данный параметр имеет слудующую структуру:
- attrName - наименование атрибута;
- from - значение атрибута «от»;
- to - значение атрибута «до»;
значения могут быть типа даты (в формате dd/MM/yyyy
HH:mm:ss, yyyy-MM-dd'T'HH:mm:ss, dd.MM.yyyy HH:mm:ss),
строковыми, числовыми;
-
hierParams- параметр структурированного типа предназначеный
для фильтрации элементов иерархии по категория. Данный
параметр имеет следующую структуру:
- category - идентификатор категории;
- what - тип запрашиваемых атрибутов (PARENT, CHILD);
-
Start - порядковый номер записи из результирующей выборки,
начало диапазона;
-
End - порядковый номер записи из результирующей выборки,
конец диапазона.
88
12.1.9
Метод getCategoriesCount
Получение количества категорий.
Возвращает Categories - список объектов типа pimCategory.
Вызов осуществляется со следующими параметрами:
-
user - имя пользователя;
password - пароль;
company - код компании;
verDate - дата версии;
idHierarchy - числовой идентификатор иерархии;
attributes - массив наименований атрибутов, которые должны
содержаться в результирующей выборке. В случае если массив
пустой, в результирующей выборке отображаются все атрибуты
записей каталога;
-
sortCategory
-
парметр
структурированного
типа
предназначеный для сортировки выдаваемого результата.
Данный параметр имеет следующую структуру:
- attrSort - наименование атрибута сортировки;
- sortType - тип сортировки (ASC - по возрастанию, DESC
- по убыванию);
-
attrSearchValues
- параметр структурированного типа
предназначен для филтрации элементов иерархии по значению
атрибута. Данный параметр имеет слудующую структуру:
- attrName - наименование атрибута;
- from - значение атрибута «от»;
- to - значение атрибута «до»;
значения могут быть типа даты (в формате dd/MM/yyyy
HH:mm:ss, yyyy-MM-dd'T'HH:mm:ss, dd.MM.yyyy HH:mm:ss),
строковыми, числовыми;
89
- hierParams- параметр структурированного типа предназначеный
для фильтрации элементов иерархии по категория. Данный
параметр имеет следующую структуру:
- category - идентификатор категории;
- what - тип запрашиваемых атрибутов (PARENT, CHILD).
Блок-схема вызова метода getCategoriesCount аналогична вызову
метода getCatalogSpec (Рисунок 13).
12.1.10
Метод getCatalogPassport
Получение паспорта каталога.
Возвращает объект типа CatalogPassport
- перечень общих
сведений о справочнике.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- idCategory - числовой идентификатор категории.
12.1.11
Метод getCatalogVersions
Получение списка версий каталога.
Возвращает Versions - список объектов типа Version.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- idCategory - числовой идентификатор категории;
- date - дата версии (в формате dd/MM/yyyy HH:mm:ss, yyyy-MM-
dd'T'HH:mm:ss, dd.MM.yyyy HH:mm:ss).
90
12.1.12
Метод getSignByGUID
Получение сертификатов подписи элемента по заданному guid’у.
Возвращает объект типа SignByGUID.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- guid - гуид элемента - значение атрибута REGISTER_GUID.
Порядок получения сертификата записи справочника:
- получаем список всех какталогов getCatalogList(п. 12.1.1);
- выбираем идентификатор необходимого какталога;
- получаем список элементов каталога по идентификатору
getCatalogItems;
- находим нужный элемент;
- выбиараем атрибут REGISTER_GUID, получаем его значение;
- получаем
сертификат
SignByGUID
по
значению
REGISTER_GUID записи.
12.1.13
Метод getUrlFileCatalogData
Получение каталога в виде файла по заданному идентификатору
каталога.
Возвращает UrlFileCatalogData.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- idCatalog - числовой идентификатор каталога;
- fileType - тип выгружаемого файла (CSV, XLS, XML).
91
12.2 Примеры использования методов
Получение плоского справочника:
- получаем список всех каталогов getCatalogList (п. 12.1.1);
- выбираем идентификатор необходимого каталога;
- получаем список элементов каталога по идентификатору
getCatalogItems(Идентификатор каталога).
Получение иерархического справочника:
- получаем список всех каталогов getCatalogList (п. 12.1.1);
- выбираем идентификатор необходимого каталога. Например,
идентификатор Адресного реестра;
- получаем
список
всех
иерархий
getCatalogHierarchies(Идентификатор каталога);
- выбираем идентификатор необходимой иерархии для каталога.
Например, идентификатор иерархии Улицы;
- рекурсивно строим структуру категорий, используя метод
getCategory (idHierarchy, category, what), где:
- idHierarchy - идентификатор иерархии (Улицы);
- category - идентификатор категории (при значении «-1»
получаем список корневых категорий);
- what - положение категорий в иерархии (parent, child).
Коды статусов приема запроса представлены ниже (Таблица 2).
Таблица 2 - Коды статусов приема запроса
Код статуса
Расшифровка
OK
Успешно
ERROR_INTERNAL
Внутренняя
ошибка,
обратитесь
к
администратору ИС НСИ
ERROR_ACCESS_DENIED
Доступ пользователя запрещен (недопустимое
имя пользователя, пароль, код компании, или
пользователь заблокирован).
Решение: проверить корректность введенных
данных
92
Код статуса
Расшифровка
ERROR_EDS
Некорректная цифровая подпись, или
цифровая подпись отсутствует.
Решение: проверить корректность ЭП.
ERROR_CERT_NOT_FOUND
Неизвестный сертификат системы.
Решение: необходимо установить сертифика в
подсистеме интеграции
ERROR_PK_NOT_FOUND
Запись по первичному ключу не найдена.
Решение: проверить корректность введенных
данных
ERROR_CTG_NOT_FOUND
Каталог не существует.
Решение: проверить корректность введенных
данных.
ERROR_WRONG_USER
Система не авторизована выполнять действия
от имени указанного пользователя.
Решение: необходимо «привязать» учетную
запсись
пользователя
в
подсистеме
интеграции.
ERROR_REQUEST_NOT_FOUND
Передаваемое значение requestId не найдено в
системе.
Решение: проверить корректность введенных
данных.
ERROR_INVALID_DATE
Неверный формат даты.
Поддерживаемые форматы даты:
- dd/MM/yyyy HH:mm:ss;
- yyyy-MM-dd'T'HH:mm:ss;
- dd.MM.yyyy HH:mm:ss.
Решение: проверить корректность введенных
данных.
ERROR_CATEGORY_NOTFOUN
Категория не существует.
D
Решение: проверить корректность введенных
данных.
ERROR_LOOKUPTABLE_NOTF
Таблица поиска не существует.
OUND
Решение: проверить корректность введенных
данных.
ERROR_INVALID_ATTRIBUTE_
Неверно задан атрибут для поиска.
SEARCH
Решение: проверить корректность введенных
данных.
ERROR_LIMIT_ITEMS
Превышено
максимально
допустимое
количество выводимых элементов.
Решение:
уменьшить
колличество
запрашиваемых данных
ERROR_AUTH_NOT_FOUND
Отсутствуют параметры авторизации.
Решение: проверить корректность введенных
данных.
ERROR_PARAM_NOT_FOUND
Отсутствует обязательный параметр: #prm.
Либо передается ошибочное значение.
Решение: проверить корректность введенных
данных.
93
Код статуса
Расшифровка
ERROR_INVALID_PARAMS
Неверные входные параметры.
Решение: проверить корректность введенных
данных.
ERROR_INVALID_GUID
Неверный формат GUID.
Решение: проверить корректность введенных
данных.
12.3 Описание основных структур сервиса
Типы категорий:
- NONE - не определен;
- PARENT - родительский элемент;
- CHILD - дочерние элементы.
Типы атрибутов:
-
INTEGER - целочисленный тип;
STRING - строковый тип;
NUMBER - числовой тип;
DATE - тип Дата/Время;
BINARY - бинарные данные;
GROUPING - атрибут-группа, не содержит значений;
LOOKUP_TABLE
- тип элемента из связанной с
классификатором таблицы значений;
-
URL - веб-ссылка;
-
SEQUENCE - автоинкремент;
RELATIONSHIP - тип элемента из связанного классификатора;
-
PASSWORD - тип Пароль, значение скрывается звездочками;
EXTERNAL_CONTENT_REFERENCE - ссылка на внешнее
содержимое;
-
STRING_ENUMERATION - перечисление строк;
-
FLAG - тип Флаг (например, Да/Нет, Есть/Нет);
UNKNOWN - не определен;
94
- IMAGE - изображение;
- THUMBNAIL_IMAGE - мини изображение.
Типы сортировки:
- NONE - не определен;
- ASC - по возрастанию;
- DESC - по убыванию.
Статусы выгрузки файла:
- UNKNOWN - не определен;
- PROCESS - в процессе;
- COMPLETED - завершено.
Структура AttrSpec:
- attribute - массив обектов типа CommonAttributes.
Структура CommonAttributes - свойства атрибутов:
- name - наименование атрибута;
- type - тип атрибута;
- isPrimaryKey - признак первичного ключа;
- localizeName - локализованное имя атрибута;
- maxOccurence - максимальное вхождение;
- minOccurence - минимальное вхождение;
- path - полный путь;
- isUnique - признак уникальности;
- isHidden - признак скрытости;
- isIndexed - признак индексированности;
- isEditable - признак возможности изменения;
- maxlength - максимальная длина;
- precision - точность представления.
Структура CatalogItems - перечень записей каталога:
- items - перчень записей каталога;
95
- countResult - количество записей.
Структура PimCatalogItemSE - свойства элемента каталога:
- attribute - перечень атрибутов;
- id - идентификатор записи;
- pk - первичный ключ записи.
Структура PimCatalog - описание каталога:
- id - идентификатор каталога;
- name - наименование каталога.
Структура SignByGUID - информация о подписи элемента:
- date - дата подписания;
- dnSubject - данные о лице осуществившем подпись;
- certList - лист сертификатов.
Структура SignCertificate - информация о сертификате:
- certificate - сертификат в base64;
- signatureType - тип подписи.
Структура Version - информация о версии каталога:
- name - наименование версии;
- dateTo - начальная дата изменения;
- dateFrom - конечная дата изменения;
- type - тип изменения.
Структура PimHierarchy - свойства иерархии:
- id - идентификатор иерархии;
- name - наименование иерархии.
Структура PimCategorySE - свойства категории:
- pimCategory - перечень атрибутов;
- id - идентификатор категории.
Структура CatalogPassport - паспорт каталога:
- FullName - полное наименование каталога;
96
-
ShortName - краткое наименование каталога;
CreationDate - дата создания;
RegularityOfUpdates - регулярность обновления;
Type - тип;
ResponsibleEA - ответственный ОИВ;
ShortDescriptionAndPurpose - краткое описание и назначение;
View - вид;
Status - статус;
Category - категория;
ThematicCategory - тематическая категория;
SignsOfGeoReferencedData - признак наличия географической
привязки данных;
-
KeyWords - ключевые слова;
-
idCatalog - идентификатор каталога;
lastChange - дата последнего изменения;
-
itemsCount - количество записей;
edsCount - количество подписанных;
-
lastEds - дата последнего подписания;
ContactDetails - контактные данные ответственного.
Структура UrlFileCatalogData:
- urlFile - ссылка на файл;
- unloadStatus - статус выгрузки;
- curUnloadedCount - выгружено данных;
- rowsCount - количество данных;
- fileSize - размер файла.
97
13 Сервис загрузки данных НСИ (СЗД)
Тип сервиса: синхронный.
Позволяет загружать в Систему данные из внешних систем.
WSDL сервиса в приложении к настоящему документу
(Приложение В).
XSD сервиса в приложении к настоящему документу (Приложение
Г).
13.1 Методы сервиса
13.1.1
Метод setData
Позволяет загрузить данные в Систему.
Возвращает «OK:Идентификатор полученного пакета», в случае
успеха, либо «ERROR: Идентификатор полученного пакета:Код
ошибки:Описание ошибки».
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- newVersion - признак создания новой версии для полученных
данных;
- xml - текст передаваемого пакета изменений;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
98
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
Формат параметра xml:
<message>
<id>packageId</id> - Идентификатор пакета
<catalog name="catalogName">
<item action = "ADDED"> - Элемент каталога (параметр “action” определяет
действие производимое сервисом над элементом. ADDED - добавление элемента, MODIFIED -
редактирование элемента, DELETED - удаление элемента)
<categories>
<category nameHier ="nameHierarchy">categKey1</category>
- Список категорий (ключей), в которые входит элемент
<category nameHier ="nameHierarchy">categKeyN</category>
</categories>
<data>
<attribute name="attribName1" type="attrType" pk="true"> - атрибут
элемента. Параметр «pk» - определяе, является ли атрибут первичным ключем
<values> - список значений атрибута
<value occurrence="0">value1</value>
.... - значение атрибута
<value occurrence="N">valueN</value>
</values>
</attribute>
<attribute name="attribNameN" type="attrType" pk="false">
<values>
<value occurrence="0">value1</value>
<value occurrence="N">valueN</value>
</values>
</attribute>
</data>
</item>
<item action = "ADDED">
</item>
</catalog>
</message>
Пример:
<message>
<id>11</id>
<catalog name="Пол">
<item action = "MODIFIED">
<categories>
<category nameHier ="Пол">1</category>
</categories>
<data>
<attribute name="ID" type="INTEGER" pk="true">
<values>
<value occurrence="0">1</value>
</values>
</attribute>
<attribute name="Name" type="STRING" pk="false">
<values>
99
<value occurrence="0">Мужской</value>
</values>
</attribute>
</data>
</item>
<item action = "MODIFIED">
<categories>
<category nameHier ="Пол">1</category>
</categories>
<data>
<attribute name="ID" type="INTEGER" pk="true">
<values>
<value occurrence="0">2</value>
</values>
</attribute>
<attribute name="Name" type="STRING" pk="false">
<values>
<value occurrence="0">Женский</value>
</values>
</attribute>
</data>
</item>
<item action = "MODIFIED">
<categories>
<category nameHier ="Пол">1</category>
</categories>
<data>
<attribute name="ID" type="INTEGER" pk="true">
<values>
<value occurrence="0">3</value>
</values>
</attribute>
<attribute name="Name" type="STRING" pk="false">
<values>
<value occurrence="0">Не определен</value>
</values>
</attribute>
</data>
</item>
</catalog>
</message>
100
14 Сервис загрузки данных НСИ с проверкой подписи
оператора (СЗДППО)
Тип сервиса: синхронный.
Позволяет загружать в Систему данные из внешних систем.
Порядок формирования подписи оператора:
-
формируется xml для внесения данных в ИС НСИ - формат
XML описан в п. 13.1.1;
-
для полученной XML вычисляется ХЭШ по ГОСТ 34.11, хэш
кодируется в BASE64, подписывается подписью оператора в
формате CADES-BES. Можно подписывать как открепленной,
так и прикрепленной подписью, но для более легкой отладки
лучше
подписывать
прикрепленной
подписью
(т.к.
подписывается только хэш, значительных издержек это не
вызовет);
-
подписываемая XML кодируется в BASE64, полученное
значение передается в параметре <data>;
-
полученная подпись кодируется в BASE64, полученное
значение передается в параметре <signature>;
-
параметр requestId служит для сквозной нумерации
взаимодействий, представляет собой GUID унифицированной
структуры (xxxxxxxx-xxxxxxxx-xxxx-xxxxxxxxxxxx). Данный
параметр может быть сгенерирован на стороне отправителя,
либо, если будет пустым, будет сгенерирован на стороне НСИ.
В случае статистически маловероятной, но все-таки возможной
коллизии сгенерированного отправителем GUID с имеющимися
в базе НСИ, будет возвращена ошибка.
WSDL сервиса в приложении к настоящему документу
(Приложение Д).
101
XSD сервиса в приложении к настоящему документу (Приложение
Е).
14.1 Методы сервиса
14.1.1
Метод setData
Позволяет загрузить данные в Систему.
Возвращает «OK:Идентификатор полученного пакета», в случае
успеха, либо «ERROR: Идентификатор полученного пакета:Код
ошибки:Описание ошибки».
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- data - текст передаваемого пакета изменений, закодированный в
base64;
- newVersion - признак создания новой версии для полученных
данных;
- signature - подпись оператора в base64 кодировке;
- requestId - строковый идентификатор, предназначенный для
сквозной нумерации вызовов сервисов, представляет собой
GUID унифицированной структуры (xxxxxxxx-xxxxxxxx-xxxx-
xxxxxxxxxxxx). Данный параметр может быть сгенерирован на
стороне подписчика, либо, если парамерт пустой, то GIUD
будет сгенерирован на стороне НСИ. В случае коллизии
сгенерированного подписчиком GUID с имеющимися в базе
НСИ, будет возвращена ошибка.
102
15 Асинхронный сервис загрузки данных НСИ (АСЗД)
Тип сервиса: асинхронный.
Позволяет загружать в Систему данные из внешних систем в
фоновом режиме. Сервис может принимать одновременно
неограниченное количество пакетов на загрузку, но обрабатывает и
загружает параллельно не более трех, остальные становятся в очередь в
порядке получения и будут обработаны сразу после обработки
предыдущих пакетов. Отменить загрузку отправленных пакетов нельзя.
По окончании обработки пакета сервисом осуществляется
обратный вызов сервиса получения статуса на стороне отправителя (если
его адрес был указан). Адрес данного сервиса указывается в подсистеме
интеграции администратором при регистрации информационной системы
либо позже самостоятельно. В случае ошибки при отправке статуса на
данный сервис, либо отсутствии адреса данного сервиса,
соответствующее сообщение будет отправлено на адрес электронной
почты ответственного лица, указанный в подсистеме интеграции.
Сервис позволяет для внесенных записей проставить статус
электронно-цифровой подписи: в случае если параметр signature (подпись
оператора) в блоке body присутствует и непустой, то он проверяется на
валидность. Если подпись оператора валидна, то для внесенных записей
будут проставлены две подписи - подпись оператора и технологическая
подпись информационной системы, передавшей данные. Если же
параметр signature (подпись оператора) в блоке body пустой или
отстутствует, то для записей будет проставлена только технологическая
подпись информационной системы.
WSDL и XSD схема сервиса приведена в приложении к
настоящему документу (Приложение П).
103
15.1 Методы сервиса
15.1.1
Метод setData
Позволяет загрузить, отредактировать или удалить данные в
системе.
Метод возвращает:
- в случае успешного приема пакета - статус в поле result=OK и
идентификатор вызова в поле requestId (GUID);
- в случае ошибочного вызова - в поле fault код ошибки и ее
трассировку в поле faultstring. Коды ошибок приведены в
таблице ниже (Таблица 4).
Вызов осуществляется со следующими параметрами:
-
user - имя пользователя;
password - пароль;
-
company - код компании;
data - текст передаваемого пакета изменений в кодировке
base64. Размер данного поля не должен превышать 5 мегабайт, в
случае превышения пакет не будет принят к обработке;
-
signature - подпись оператора в кодировке base64. В случае
отсутствия параметра, либо если параметр пустой, проверка
подписи оператора не осуществляется. Порядок формирования
подписи оператора привведен ниже;
-
nameVersion - наименование версии каталога. Если параметр
пустой, то новая версия каталога не создается. Создание новой
версии каталога
- ресурсоемкая операция, поэтому
рекомендуется следующий порядок создания версиий при
передаче нескольких пакетов изменений одновременно: в
первом пакете параметр задается (при этом будет создана новая
версия каталога), в последующих пакетах оставляется пустой. В
104
наименовании версии рекомендуется указывать дату ее
создания;
- stopOnError - признак остановки загрузки в случае ошибки при
обработке элементов (false
- продолжать загрузку если
произошла ошибка обработки элемента
- загружается
следующий элемент, true
- прекращает загрузку в случае
возникновения ошибки при обработке элемента).
Формат Xml - сообщения (перед помещением в параметр «data»
необходимо закодировать в BASE64. XSD-схема сообщения в
приложении к настоящему документу (Приложение С):
-
корневой блок message, объявляется неймспейс:
<wpc:message xmlns:wpc="http://nsi.asur.mos.ru">
-
дочерним корневого блока является блок объекта НСИ
описывающий тип загружаемых элементов. «catalog» - для
загрузки элементов каталога, «hierarchy»
- для загрузки
элементов иерархии (категорий). Единственным параметром
данного блока является параметр «name»
- наименование
каталога либо наименование иерархии, в зависимости от типа
загружаемых элементов:
<wpc:catalog name="[имя каталога]">
либо
<wpc: hierarchy name="[имя иерархии]">
-
блок объекта НСИ содержит блоки загружаемых элементов.
Блок элемента описывается параметром «action» - определяет
действие производимое сервисом над элементом:
- ADDED - добавление элемента;
- MODIFIED - редактирование элемента;
- ADD_OR_MODIFY - добавление либо редактирование
элемента. В зависимости от того, существует элемент в
базе или нет;
105
- DELETED - удаление элемента(для удаления достаточно
указать только атрибут - первичный ключ);
<wpc:item action="ADDED">
Блок элемента содержит два блока: блок категорий и блок
данных;
-
описание блока категорий:
- для каталога описываются категории, к которым элемент
будет привязан. В случае загрузки каталога указывается
параметр «nameHier» - наименование иерархии категорий,
а так же первичный ключ категории:
<wpc:categories>
<wpc:category nameHier="[имя иерархии]">[Первичный ключ
категории]</wpc:category>
<wpc:category nameHier="[имя иерархии]">[Первичный ключ
категории]</wpc:category>
</wpc:categories>;
- для иерархии в блоке категрий описываются родительские
категории. Указывается первичный ключ категории -
ридителя:
<wpc:categories>
<wpc:category>[Первичный ключ категории]</wpc:category>
<wpc:category>[Первичный ключ категории]</wpc:category>
</wpc:categories>;
-
блок данных содержит список атрибутов и их значения.
Атрибуты бывают двух видов: атомарные
- содержащие
конкретное значение, и групповые - содержащие в себе не
конкретные значения, а другие атрибуты (как атомарные, так и
групповые).
- параметрами блока групового атрибута является «name» -
наименование атрибута:
<wpc:attribute name="[имя атрибута-группы]" type="GROUPING">
<wpc:values>
<wpc:groupvalue>
<?блок дочернего атрибута?>
</wpc:groupvalue>
<wpc:groupvalue>
<?блок дочернего атрибута?>
106
</wpc:groupvalue>
</wpc:values>
</wpc:attribute>;
- параметрами блока атомарного атрибута являются:
«name» - наименование атрибута, «type» - тип атрибута:
<wpc:attribute name="[имя атрибута]" type="[тип атрибута]">
<wpc:values>
<wpc:value occurrence="0">[значение атрибута]</wpc:value>
<wpc:value occurrence="N">[значение атрибута]</wpc:value>
</wpc:values>
</wpc:attribute>;
Исключением является блок ссылки на элемент
произвольного каталога (RELATIONSHIP):
<wpc:attribute name="[имя атрибута]" type="RELATIONSHIP">
<wpc:values>
<wpc:relation occurrence="0" to="[имя каталога, на который
ссылаемся]">[Первичный ключ элемента из каталога, на который ссылаемся]</wpc:relation>
<wpc:relation occurrence="N" to="[имя каталога, на который
ссылаемся]">[Первичный ключ элемента из каталога, на который ссылаемся]</wpc:relation>
</wpc:values>
</wpc:attribute>;
Параметр «occurence» является необязательным. Типы и
значения атрибутов приведены ниже (Таблица 3):
Таблица 3 - Типы и значения атрибутов
Тип атрибута
Описание
Принимаемое значение
INTEGER
Целочисленный тип
Принимает
целочисленные значения
STRING
Строковый тип
Принимает значения типа
строка. Для корректности
передачи данных
рекомендуется
использовать
экранирование тэгом
<![CDATA[ ]]
NUMBER
Числовой тип
Принимает как
целочисленные значения
так и вещественные
DATE
Тип даты
Принимает строковое
значение даты. Формат:
dd/MM/yyyy h24:mm
BINARY
Бинарный тип
Принимает строку url-
ссылку на файл. Для
корректности передачи
данных рекомендуется
использовать
экранирование тэгом
<![CDATA[ ]]
LOOKUP_TABLE
Тип таблица поиска
Принимает значение
первичный ключ
107
Тип атрибута
Описание
Принимаемое значение
элемента из таблицы
поиска.
URL
Тип url-ссылка
Принимает значение
строки url- ссылки. Для
корректности передачи
данных рекомендуется
использовать
экранирование тэгом
<![CDATA[ ]]
RELATIONSHIP
Тип ссылка на элемент каталога
Для данного типа блок
описывается значения
описывается с
параметром «to» -
наименование каталога,
значением является
первичный ключ
элемента в каталоге «to»
IMAGE
Тип образ
Принимает строку url-
ссылку на файл. Для
корректности передачи
данных рекомендуется
использовать
экранирование тэгом
<![CDATA[ ]]
THUMBNAIL_IMAGE
Тип миниизображение
Принимает строку url-
ссылку на файл. Для
корректности передачи
данных рекомендуется
использовать
экранирование тэгом
<![CDATA[ ]]
Пример xml-сообщения для загрузки в приложении настоящего
документа (Приложение У).
Порядок формирования подписи оператора:
- формируется xml для внесения данных в ИС НСИ - формат
XML описан выше;
- для полученной XML вычисляется ХЭШ по ГОСТ 34.11, хэш
кодируется в BASE64, подписывается подписью оператора в
формате CADES-BES. Можно подписывать как открепленной,
так и прикрепленной подписью, но для более легкой отладки
лучше
подписывать
прикрепленной
подписью
(т.к.
108
подписывается только хэш, значительных издержек это не
вызовет);
- полученная подпись кодируется в BASE64, полученное
значение передается в параметре <signature>.
Таблица 4 - Коды статуса приема пакета
Код статуса
Расшифровка
OK
Успешно
ERROR_INTERNAL
Внутренняя ошибка, обратитесь к администратору
ИС НСИ
ERROR_ACCESS_DENIED
Доступ пользователя запрещен (недопустимое имя
пользователя, пароль, код компании, или
пользователь заблокирован).
Решение: проверить корректность введенных
данных.
ERROR_EDS
Некорректная цифровая подпись, или цифровая
подпись отсутствует.
Решение: проверить корректность ЭП, либо
алгоритма подписания запроса.
ERROR_EDS_OPER
Некорректная цифровая подпись оператора, или
подпись оператора отсутствует.
Решение: проверить корректность ЭП, либо
алгоритма создания подписи оператора.
ERROR_CERT_NOT_FOUND
Неизвестный сертификат системы.
Решение: необходимо установить сертифика в
подсистеме интеграции
ERROR_LENGHT_MESSAGE
Входящее сообщение слишком длинное.
Решение: уменьшить размер xml-сообщения для
загрузки
ERROR_WRONG_USER
Система не авторизована выполнять действия от
имени указанного пользователя.
Решение: необходимо «привязать» учетную запись
пользователя в подсистеме интеграции
15.1.2
Метод getCatalogXmlMessage
Позволяет получить сообщение для загрузки закодированное в
base64.
Внимание! Данный метод служит для упрощения процесса
отладки! Не следует его вызывать на каждую вносимую запись! При
внесении большого количества однотипных записей допускается вызвать
метод один раз и использовать полученный XML в качестве шаблона для
формирования записей.
109
В случае удачного выполнения запроса возвращает: data
-
сообщение закодированное в base64, в поле result OK. В случае ошибки в
поле fault код ошибки, в поле faultstring - трассировку ошибки.
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- idCatalog - идентификатор каталога;
- items
- массив первичных ключей элементов, которые
необходимо выгрузить. За один вызов можно получить не более
10 записей. Если массив пустой, то будет возвращен XML
записи с атрибутами по умолчанию;
В случае ошибки возвращает в поле fault код ошибки и ее
трассировку в поле faultstring. Коды ошибок приведены ниже (Таблица 5).
Таблица 5 - Коды статусов приема запроса
Код статуса
Расшифровка
OK
Успешно
ERROR_INTERNAL
Внутренняя ошибка, обратитесь к
администратору ИС НСИ
ERROR_ACCESS_DENIED
Доступ
пользователя
запрещен
(недопустимое имя пользователя, пароль,
код
компании,
или
пользователь
заблокирован).
Решение:
проверить
корректность
введенных данных.
ERROR_EDS
Некорректная цифровая подпись, или
цифровая подпись отсутствует.
Решение: проверить корректность ЭП,
либо алгоритма подписания запроса.
ERROR_CERT_NOT_FOUND
Неизвестный сертификат системы.
Решение:
необходимо
установить
сертифика в подсистеме интеграции
ERROR_PK_NOT_FOUND
Запись по первичному ключу не найдена.
Решение:
проверить
корректность
передаваемых данных.
ERROR_CTG_NOT_FOUND
Каталог не найден
ERROR_WRONG_USER
Система не авторизована выполнять
действия
от
имени
указанного
пользователя.
110
Код статуса
Расшифровка
Решение:
необходимо
«привязать»
учетную запись пользователя в подсистеме
интеграции
ERROR_LIMIT
Превышен допустимы лимит колличества
выводимых элементов.
Решение:
уменьшить
количество
запрашиваемых записей какталога
ERROR_NODATA
Нет данных для вывода.
Решение: изменить параметры запроса
15.1.3
Метод getStatusMessage
Позволяет получить статусы обработки пакетов.
В случае успешного выполнения возвращает:
- requestId - идентификатор вызова (GUID);
- itemsList - массив объектов - статусов:
- pk - первичный;
- status
- статус обработки записи каталога/иерархии
(описаны ниже (Таблица 8));
- statusDate - дата и время установки статуса;
- statusInfo
- дополнительная информация о статусе
(трассировка в случае ошибки);
- statusInfoGobal - дополнительная информация об обработке
пакета (трассировка в случае ошибки);
- statusGlobal
- статус обработки пакета (приведены ниже
(Таблица 7)).
Вызов осуществляется со следующими параметрами:
- user - имя пользователя;
- password - пароль;
- company - код компании;
- requestId
- идентификатор вызова (GUID, возвращенный
методом внесения данных).
111
В случае ошибки возвращает в поле fault код ошибки и ее
трассировку в поле faultstring. Коды ошибок приведены ниже (Таблица 6).
Таблица 6 - Коды статусов приема запроса
Код статуса
Расшифровка
OK
Успешно
ERROR_EDS
Некорректная цифровая подпись, или
цифровая подпись отсутствует.
Решение: проверить корректность формата
подписи либо алгоритм подписания
ERROR_CERT_NOT_FOUND
Неизвестный сертификат системы.
Решение:
необходимо
установить
сертифика в подсистеме интеграции
ERROR_ACCESS_DENIED
Доступ
пользователя
запрещен
(недопустимое имя пользователя, пароль,
код
компании,
или
пользователь
заблокирован).
Решение:
проверить
правильность
введенных данных.
ERROR_REQUEST_NOT_FOUND
Передаваемое значение requestId не
найдено в системе.
Решение:
проверить
правильность
введенных данных.
ERROR_WRONG_USER
Система не авторизована выполнять
действия
от
имени
указанного
пользователя.
Решение:
необходимо
«привязать»
учетную запись пользователя в подсистеме
интеграции
ERROR_INTERNAL
Внутренняя ошибка, обратитесь к
администратору ИС НСИ
Таблица 7 - Статусы обработки пакета (statusGlobal)
Код статуса
Расшифровка
WAITING
Ожидание обработки (пакет помещен в очередь и
оидает окончания обработки предыдущих пакетов)
PROCESSING
В процессе обработки
COMPLETED
Обработка окончена (загрузка, обновление или
удаление окончено)
ERROR_INTERNAL
Произошла внутренняя ошибка
ERROR_CTG_NOT_FOUND
Ошибка - каталог не найден.
Решение: проверить наименование или идентификатор
каталога
ERROR_HIER_NOT_FOUND
Ошибка - иерархия не найдена.
Решение: проверить наименование или идентификатор
иерархии
ERROR_XML_MESSAGE
Ошибка xml - сообщения. Не верный формат XML в
параметре data.
Решение: проверить корректность передаваемого xml-
112
Код статуса
Расшифровка
сообщения
Таблица 8 - Статусы обработки записей каталога/иерархии (status)
Код статуса
Расшифровка
PROCESSING
В процессе обработки
ADDED
Элемент добавлен в справочник (иерархию)
MODIFIED
Элемент отредактирован
DELETED
Элемент удален
ERROR_INTERNAL
Внутренняя ошибка
ERROR_ATTR_NOT_FOUND
Атрибут не определен, либо не найден.
Решение: проверить правильность написания
наименования атрибута
ERROR_VALUE
Ошибка при присваивании значения атрибуту.
Решение: проверить корректность значения
атрибута
ERROR_PK_NOT_FOUND
Элемент с таким первичным ключом не найден.
Решение: проверить существует ли данный
элемент в системе
ERROR_CATEGORY_NOT_FOUND
Категория не найдена.
Решение: проверить существует ли категория в
системе
ERROR_ACCESS_DENIED
Доступ пользователя к записи или части ее
атрибутов запрещен (пользователь не имеет на
это прав).
Решение: проверить корректность введенных
данных
ERROR_ADD_PK_EXISTS
Не удалось вставить элемент каталога.
Возможно такой элемент уже существует.
Решение:
проверить наличие элемента в
системе, либо изменить действие
ERROR_SAVE
Прочая ошибка обработки элемента возникшая
в момент сохранения элемента
ERROR_LOCKED
Элемент заблокирован.
Решение: элемент был заблокирован в
следствии
того
что
производилось
редактирование данного элемента несколькими
подьзователями одновременно. Необходимо
подождать, через некоторое время блокировка с
элемента снимется
15.2 Сервис приема статусов обработки сообщений загрузки
Тип сервиса: синхронный.
Для обработки информации о результатах загрузки на стороне
отправителя данных должен быть разработан веб-сервис получения
статусов обработки пакетов.
113
WSDL сервиса в приложении к настоящему документу
(Приложение Р).
15.2.1
Метод sendStatus
Данный метод будет вызван при окончании загрузки данных
асинхронным сервисом.
Вызов осуществляется со следующими параметрами:
- requestId - идентификатор вызова (GUID);
- itemsList - массив объектов - статусов (аналогично методу
getStatusMessage);
- statusInfoGobal - информация об ошибке (аналогично методу
getStatusMessage);
- statusGlobal
- статус переданного сообщения (аналогично
методу getStatusMessage).
Структура объекта - элемента массива itemsList:
- pk - первичный ключ элемента какталога;
- status - статус обработки элемента каталога (статусы описаны
выше (Таблица 8));
- statusDate - дата обработки элемента;
- statusInfo - в случае удачной обработки данное поле передается
пустым, в противном случае, передается описание ошибки.
Метод должен возвращать в результате requestId, совпадающий со
значением при вызове метода. В таком случае считаетстя что статус
успешно доставлен. В противном случае на электронную почту
ответственного лица будет отправлено соответсвующее уведомление,
повторная отправка статусов осуществляться не будет.
114
Лист регистрации изменений
Дата
Изменения
23.03.2012
Актуализированы WSDL и XSD сервисов получения данных, загрузки
данных и рассылки репликаций
23.03.2012
В методах СПД: getCatalogItems, getCatalogItemsByAttrValue,
getCatalogItemsByCategory, getCategories, getCategoriesByAttrValue,
getCategoryChildren, getCategoryByCtgItmKey добавлен необязательный
параметр versionDate
23.03.2012
В методе СПД getCategoryChildren добавлены два обязательных
параметра: start, end
23.03.2012
В методах getCatalogSpec, getHierarchySpec СПД, помимо перечня
атрибутов, возвращется количество элементов каталога и иерархии
соответственно
23.03.2012
Для СЗД поменялся формат входящего сообщения для загрузки данных
23.03.2012
В СЗД реализована возможность удаления данных
23.03.2012
В сервисах реализована работа с ЭП (проверка, создание) при отправке
и получении данных
23.03.2012
Во все методы СПД и СЗД добавлены параметры авторизации
15.08.2012
Внесены изменения в Приложения 1,3,5. Из приложений убраны
примеры WSDL сервисов, вместо них указаны ссылки на WSDL.
15.08.2012
В приложении 7 указано на необходимость замены адресов из примера
на реальные.
03.10.2012
В осписание сервиса рассылки репликаций(СРР) добавлено описание
формата lookup таблиц, а также изменен формат XSD сообщения в
соответствии с форматом lookup таблиц. Добавлено сокращение СРР и
СПР в перечень сокращений. Добавлены атрибуты nameHier и idHier
для секции category в сообщении в СРР.
06.10.2012
В описание СРР,СПД,СЗД добавлен параметр requestId и его описание.
Добавлено описание сервиса загрузки данных в проверкой подписи
оператора (СЗДППО). Исправлено описание СРР - атрибут subсsriberID
переименован в subsсriberID.
18.10.2012
Удален пример wsdl сервиса получения репликаций. Добавлены ссылки
на wsdl сервиса получения репликаций.
17.07.2013
Добавлено описание порядка регистрации информационной системы в
ИС НСИ
17.07.2013
Добавлено описание асинхронного сервиса загрузки данных ИС НСИ
06.12.2013
Добавлено описание новых версий сервисов рассылки репликаций
(СРР) и получения репликаций (СПР).
09.12.2013
Изменение порядка следования разделов, добавлено описание
механизма рассылки репликаций и описание веб-интерфейса системы
НСИ подсистемы информационного взаимодействия.
14.04.2013
Добавлено описание метода получения выгрузки каталога в файл в
сервисе получения данных
115
Приложение A
(обязательное)
WSDL сервиса получения данных
Описание методов в п.11.1 настоящего документа.
WSDL сервиса получения данных можно получить по ссылкам,
приведенным ниже.
Промышленная площадка:
ataService?wsdl - из сети интернет;
DataService?wsdl - из КМС;
-
через контур СМЭВ.
Данные сервисы работают только с ЭП, формат подписи должен
соответствовать требования РСМЭВ, дополнительные требования к
подписи не выдвигаются.
Тестовая площадка:
- из сети
интернет;
Данные сервисы могут быть вызваны без ЭП.
116
Приложение Б
(обязательное)
WSDL сервиса получения данных v2.0
WSDL сервиса получения данных можно получить по ссылкам,
приведенным ниже.
Промышленная площадка:
- из сети интернет;
dl - из КМС;
Тестовая площадка:
http://31.13.60.150:8080/SignedGetNsi/SignedSMEVGetNsi?wsdl.
Данные сервисы работают с ЭП, формат подписи должен
соответствовать требования РСМЭВ, дополнительные требования к
подписи не выдвигаются. (По заявке может быть открыт доступ без
проверки ЭП).
117
Приложение В
(обязательное)
WSDL сервиса загрузки данных НСИ
Описание параметров и методов в п. 13.1.1 настоящего документа.
WSDL сервиса загрузки данных можно получить по ссылкам,
приведенным ниже.
Промышленная площадка:
taService?wsdl - из сети интернет;
DataService?wsdl - из КМС;
-
через контур СМЭВ.
Данные сервисы работают только с ЭП, формат подписи должен
соответствовать требования РСМЭВ, дополнительные требования к
подписи не выдвигаются.
Тестовая площадка:
- из сети
интернет;
Данные сервисы могут быть вызваны без ЭП.
118
Приложение Г
(обязательное)
XSD сервиса загрузки данных НСИ
<?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's
version is Metro/2.1.1 (branches/2.1-6844; 2011-07-29T12:07:24+0000) JAXWS-RI/2.2.5 JAXWS/2.2. --
version="1.0" targetNamespace="http://nsi.asur.mos.ru/">
<xs:element name="setData" nillable="true" type="tns:setData"></xs:element>
<xs:element name="setDataResponse" nillable="true" type="tns:setDataResponse"></xs:element>
<xs:complexType name="setData">
<xs:sequence>
<xs:element name="auth" type="tns:authContext" minOccurs="0"></xs:element>
<xs:element name="xml" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="newVersion" type="xs:boolean"></xs:element>
<xs:element name="guidLink" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="authContext">
<xs:sequence>
<xs:element name="company" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="user" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="setDataResponse">
<xs:sequence>
<xs:element name="return" type="tns:resultInfo" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="resultInfo">
<xs:sequence>
<xs:element name="message" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="trace" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
119
Приложение Д
(обязательное)
WSDL сервиса загрузки данных НСИ с проверкой подписи
оператора
Описание параметров и методов в п.14.1.1 настоящего документа.
WSDL сервиса загрузки данных можно получить по ссылкам,
приведенным ниже.
Промышленная площадка:
SISetDataService?wsdl - из сети интернет;
NSISetDataService?wsdl - из КМС;
-
через контур СМЭВ.
Данные сервисы работают только с ЭП, формат подписи должен
соответствовать требования РСМЭВ, дополнительные требования к
подписи не выдвигаются.
120
Приложение Е
(обязательное)
XSD сервиса загрузки данных НСИ c проверкой подписи
оператора
<?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's
version is Metro/2.1.1 (branches/2.1-6844; 2011-07-29T12:07:24+0000) JAXWS-RI/2.2.5 JAXWS/2.2. -->
version="1.0" targetNamespace="http://nsi.asur.mos.ru/">
<xs:element name="setData" nillable="true" type="tns:setData"></xs:element>
<xs:element name="setDataResponse" nillable="true" type="tns:setDataResponse"></xs:element>
<xs:complexType name="setData">
<xs:sequence>
<xs:element name="auth" type="tns:authContext" minOccurs="0"></xs:element>
<xs:element name="data" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="newVersion" type="xs:boolean"></xs:element>
<xs:element name="signature" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="authContext">
<xs:sequence>
<xs:element name="company" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="user" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="setDataResponse">
<xs:sequence>
<xs:element name="return" type="tns:resultInfo" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="resultInfo">
<xs:sequence>
<xs:element name="message" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="trace" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
121
Приложение Ж
(обязательное)
WSDL сервиса рассылки реплик НСИ
Описание параметров и методов в п. 7.1 настоящего документа.
WSDL сервиса рассылки реплик можно получить по ссылкам,
приведенным ниже.
Промышленная площадка:
- из сети
интернет;
-
через контур СМЭВ.
Данные сервисы работают только с ЭП, формат подписи должен
соответствовать требования РСМЭВ, дополнительные требования к
подписи не выдвигаются.
Тестовая площадка:
интернет;
Данные сервисы могут быть вызваны без ЭП.
122
Приложение И
(обязательное)
XSD сервиса рассылки реплик НСИ
<?xml version="1.0" encoding="UTF-8"?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's
version is Metro/2.1.1 (branches/2.1-6844; 2011-07-29T12:07:24+0000) JAXWS-RI/2.2.5 JAXWS/2.2. --
version="1.0" targetNamespace="http://nsi.asur.mos.ru/">
<xs:element name="Exception" type="tns:Exception"></xs:element>
<xs:element name="getCatalogChanges" type="tns:getCatalogChanges"></xs:element>
<xs:element name="getCatalogChangesResponse" type="tns:getCatalogChangesResponse"></xs:element>
<xs:element name="getCatalogChangesUnSub" type="tns:getCatalogChangesUnSub"></xs:element>
<xs:element name="getCatalogChangesUnSubResponse"
type="tns:getCatalogChangesUnSubResponse"></xs:element>
<xs:element name="getCatalogChangesUnSubWS" type="tns:getCatalogChangesUnSubWS"></xs:element>
<xs:element name="getCatalogChangesUnSubWSE"
type="tns:getCatalogChangesUnSubWSE"></xs:element>
<xs:element name="getCatalogChangesUnSubWSEResponse"
type="tns:getCatalogChangesUnSubWSEResponse"></xs:element>
<xs:element name="getCatalogChangesUnSubWSResponse"
type="tns:getCatalogChangesUnSubWSResponse"></xs:element>
<xs:element name="getCatalogChangesWS" type="tns:getCatalogChangesWS"></xs:element>
<xs:element name="getCatalogChangesWSE" type="tns:getCatalogChangesWSE"></xs:element>
<xs:element name="getCatalogChangesWSEResponse"
type="tns:getCatalogChangesWSEResponse"></xs:element>
<xs:element name="getCatalogChangesWSResponse"
type="tns:getCatalogChangesWSResponse"></xs:element>
<xs:element name="getHierarchyChanges" type="tns:getHierarchyChanges"></xs:element>
<xs:element name="getHierarchyChangesResponse" type="tns:getHierarchyChangesResponse"></xs:element>
<xs:element name="getHierarchyChangesUnSub" type="tns:getHierarchyChangesUnSub"></xs:element>
<xs:element name="getHierarchyChangesUnSubResponse"
type="tns:getHierarchyChangesUnSubResponse"></xs:element>
<xs:element name="getHierarchyChangesUnSubWS"
type="tns:getHierarchyChangesUnSubWS"></xs:element>
<xs:element name="getHierarchyChangesUnSubWSE"
type="tns:getHierarchyChangesUnSubWSE"></xs:element>
123
<xs:element name="getHierarchyChangesUnSubWSEResponse"
type="tns:getHierarchyChangesUnSubWSEResponse"></xs:element>
<xs:element name="getHierarchyChangesUnSubWSResponse"
type="tns:getHierarchyChangesUnSubWSResponse"></xs:element>
<xs:element name="getHierarchyChangesWS" type="tns:getHierarchyChangesWS"></xs:element>
<xs:element name="getHierarchyChangesWSE" type="tns:getHierarchyChangesWSE"></xs:element>
<xs:element name="getHierarchyChangesWSEResponse"
type="tns:getHierarchyChangesWSEResponse"></xs:element>
<xs:element name="getHierarchyChangesWSResponse"
type="tns:getHierarchyChangesWSResponse"></xs:element>
<xs:element name="getUndeliveriedPackages" type="tns:getUndeliveriedPackages"></xs:element>
<xs:element name="getUndeliveriedPackagesResponse"
type="tns:getUndeliveriedPackagesResponse"></xs:element>
<xs:element name="setDeliveryForUndeliveriedPackages"
type="tns:setDeliveryForUndeliveriedPackages"></xs:element>
<xs:element name="setDeliveryForUndeliveriedPackagesResponse"
type="tns:setDeliveryForUndeliveriedPackagesResponse"></xs:element>
<xs:element name="setDeliveryForUndeliveriedPackagesWID"
type="tns:setDeliveryForUndeliveriedPackagesWID"></xs:element>
<xs:element name="setDeliveryForUndeliveriedPackagesWIDResponse"
type="tns:setDeliveryForUndeliveriedPackagesWIDResponse"></xs:element>
<xs:complexType name="getCatalogChangesWSE">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="catalogID" type="xs:int"></xs:element>
<xs:element name="periodStart" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="periodEnd" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getCatalogChangesWSEResponse">
<xs:sequence>
<xs:element name="getCatalogChangesWSEResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Exception">
<xs:sequence>
<xs:element name="message" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesWSE">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
124
<xs:element name="hierarchyID" type="xs:int"></xs:element>
<xs:element name="periodStart" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="periodEnd" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesWSEResponse">
<xs:sequence>
<xs:element name="getHierarchyChangesWSEResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChanges">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="hierarchyID" type="xs:int"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesResponse">
<xs:sequence>
<xs:element name="getHierarchyChangesResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getCatalogChangesUnSub">
<xs:sequence>
<xs:element name="URL" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="email" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="packSize" type="xs:int"></xs:element>
<xs:element name="catalogID" type="xs:int"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getCatalogChangesUnSubResponse">
<xs:sequence>
<xs:element name="getCatalogChangesUnSubResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesUnSubWSE">
<xs:sequence>
<xs:element name="URL" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="email" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="packSize" type="xs:int"></xs:element>
<xs:element name="hierarchyID" type="xs:int"></xs:element>
<xs:element name="periodStart" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="periodEnd" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesUnSubWSEResponse">
<xs:sequence>
<xs:element name="getHierarchyChangesUnSubWSEResponse" type="xs:string"
minOccurs="0"></xs:element>
125
</xs:sequence>
</xs:complexType>
<xs:complexType name="getCatalogChanges">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="catalogID" type="xs:int"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getCatalogChangesResponse">
<xs:sequence>
<xs:element name="getCatalogChangesResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesWS">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="hierarchyID" type="xs:int"></xs:element>
<xs:element name="periodStart" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesWSResponse">
<xs:sequence>
<xs:element name="getHierarchyChangesWSResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesUnSub">
<xs:sequence>
<xs:element name="URL" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="email" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="packSize" type="xs:int"></xs:element>
<xs:element name="hierarchyID" type="xs:int"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesUnSubResponse">
<xs:sequence>
<xs:element name="getHierarchyChangesUnSubResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getCatalogChangesUnSubWS">
<xs:sequence>
<xs:element name="URL" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="email" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="packSize" type="xs:int"></xs:element>
<xs:element name="catalogID" type="xs:int"></xs:element>
<xs:element name="periodStart" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
126
<xs:complexType name="getCatalogChangesUnSubWSResponse">
<xs:sequence>
<xs:element name="getCatalogChangesUnSubWSResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getCatalogChangesUnSubWSE">
<xs:sequence>
<xs:element name="URL" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="email" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="packSize" type="xs:int"></xs:element>
<xs:element name="catalogID" type="xs:int"></xs:element>
<xs:element name="periodStart" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="periodEnd" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getCatalogChangesUnSubWSEResponse">
<xs:sequence>
<xs:element name="getCatalogChangesUnSubWSEResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="setDeliveryForUndeliveriedPackages">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="setDeliveryForUndeliveriedPackagesResponse">
<xs:sequence>
<xs:element name="setDeliveryForUndeliveriedPackagesResponse" type="xs:string"
minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getCatalogChangesWS">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="catalogID" type="xs:int"></xs:element>
<xs:element name="periodStart" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getCatalogChangesWSResponse">
<xs:sequence>
<xs:element name="getCatalogChangesWSResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesUnSubWS">
<xs:sequence>
<xs:element name="URL" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="email" type="xs:string" minOccurs="0"></xs:element>
127
<xs:element name="packSize" type="xs:int"></xs:element>
<xs:element name="hierarchyID" type="xs:int"></xs:element>
<xs:element name="periodStart" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getHierarchyChangesUnSubWSResponse">
<xs:sequence>
<xs:element name="getHierarchyChangesUnSubWSResponse" type="xs:string"
minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getUndeliveriedPackages">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="getUndeliveriedPackagesResponse">
<xs:sequence>
<xs:element name="getUndeliveriedPackagesResponse" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="setDeliveryForUndeliveriedPackagesWID">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="password" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="IDs" type="xs:string" minOccurs="0"></xs:element>
<xs:element name="requestId" type="xs:string" minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="setDeliveryForUndeliveriedPackagesWIDResponse">
<xs:sequence>
<xs:element name="setDeliveryForUndeliveriedPackagesWIDResponse" type="xs:string"
minOccurs="0"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>
128
Приложение К
(обязательное)
WSDL сервиса рассылки реплик НСИ v2
Описание параметров и методов в п. 8.1 настоящего документа.
WSDL сервиса рассылки реплик можно получить по ссылкам,
приведенным ниже.
Промышленная площадка:
-
из сети интернет;
из КМС.
Данные сервисы работают только с ЭП, формат подписи должен
соответствовать требования РСМЭВ, дополнительные требования к
подписи не выдвигаются.
Тестовая площадка:
-
из сети интернет;
-
из КМС.
Данные сервисы могут быть вызваны без ЭП.
129
Приложение Л
(обязательное)
XSD сервиса рассылки реплик НСИ (СПР)
<!--
Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.1.1 (branches/2.1-6844; 2011-
07-29T12:07:24+0000) JAXWS-RI/2.2.5 JAXWS/2.2.
-->
<xs:schema xmlns:tns="http://nsi.asur.mos.ru/" xmlns:smevSampleMsg="http://smev.gosuslugi.ru/SampleMes
velope"xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="unqualified" elementFormD
efault="qualified" version="1.0" targetNamespace="http://nsi.asur.mos.ru/">
<xs:complexType name="paramsHierarchyChangesCount">
<xs:sequence>
<xs:element name="hierarchyID" type="xs:int"/>
<xs:element name="periodStart" type="xs:string" minOccurs="0"/>
<xs:element name="periodEnd" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="resultReplica">
<xs:sequence>
<xs:element name="resultCode" type="xs:string"/>
<xs:element name="countChange" type="xs:int" minOccurs="0"/>
<xs:element name="requestId" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="paramsCatalogChangesUnSub">
<xs:sequence>
<xs:element name="URL" type="xs:string"/>
<xs:element name="email" type="xs:string"/>
<xs:element name="packSize" type="xs:int"/>
<xs:element name="protocolVersion" type="tns:eVersProtocol"/>
<xs:element name="catalogID" type="xs:int"/>
<xs:element name="periodStart" type="xs:string" minOccurs="0"/>
<xs:element name="periodEnd" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="paramsHierarchyChangesUnSub">
<xs:sequence>
<xs:element name="URL" type="xs:string"/>
<xs:element name="email" type="xs:string"/>
<xs:element name="packSize" type="xs:int"/>
<xs:element name="protocolVersion" type="tns:eVersProtocol"/>
<xs:element name="hierarchyID" type="xs:int"/>
<xs:element name="periodStart" type="xs:string" minOccurs="0"/>
<xs:element name="periodEnd" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="paramsDeliveryForUndeliveriedPackages">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string"/>
<xs:element name="password" type="xs:string"/>
<xs:element name="IDs" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="paramsCatalogChanges">
130
<xs:sequence>
<xs:element name="subscriberID" type="xs:string"/>
<xs:element name="password" type="xs:string"/>
<xs:element name="catalogID" type="xs:int"/>
<xs:element name="periodStart" type="xs:string" minOccurs="0"/>
<xs:element name="periodEnd" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="paramsUndeliveriedPackages">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string"/>
<xs:element name="password" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="paramsCatalogChangesCount">
<xs:sequence>
<xs:element name="catalogID" type="xs:int"/>
<xs:element name="periodStart" type="xs:string" minOccurs="0"/>
<xs:element name="periodEnd" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="paramsHierarchyChanges">
<xs:sequence>
<xs:element name="subscriberID" type="xs:string"/>
<xs:element name="password" type="xs:string"/>
<xs:element name="hierarchyID" type="xs:int"/>
<xs:element name="periodStart" type="xs:string" minOccurs="0"/>
<xs:element name="periodEnd" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="eVersProtocol">
<xs:restriction base="xs:string">
<xs:enumeration value="RSMEV"/>
<xs:enumeration value="RSMEV_BASE64"/>
<xs:enumeration value="MIN_COM256"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
131
Приложение М
(обязательное)
WSDL сервиса получения реплик НСИ (СПР) v1
Описание методов и параметров в п. 9.1 настоящего документа.
WSDL сервиса получения реплик можно получить по ссылке:
- из сети
интернет.
132
Приложение Н
(обязательное)
WSDL сервиса получения реплик НСИ v2
Описание методов и параметров в п. 10.1 настоящего документа.
WSDL сервиса получения реплик можно получить по ссылке:
сети интернет.
133
Приложение П
(обязательное)
WSDL асинхронного сервиса загрузки данных НСИ
WSDL сервиса можно получить по ссылкам, приведенным ниже.
Промышленная площадка:
?wsdl - из сети интернет;
y?wsdl - из КМС.
Тестовая площадка:
?wsdl - из сети интернет;
?wsdl - из КМС.
Данные сервисы работают только с ЭП, формат подписи должен
соответствовать требования РСМЭВ, дополнительные требования к
подписи не выдвигаются.
134
Приложение Р
(обязательное)
WSDL сервиса приема статусов
WSDL сервиса можно получить по ссылке:
http://31.13.60.150:8080/ReceiveStatus/ReceiveStatus?wsdl.
135
Приложение С
(обязательное)
XSD схема сообщения для загрузки элементов каталога
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:wpc="http://nsi.asur.mos.ru" attributeFormDefault="unqualified"
elementFormDefault="qualified" targetNamespace="http://nsi.asur.mos.ru"
<xs:element name="message">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="catalog">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="categories">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="category">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="nameHier" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="data">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="attribute">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="values">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="groupvalue">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="attribute">
<xs:complexType>
<xs:sequence>
<xs:element name="values">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="groupvalue">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded"
name="attribute">
136
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="values">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded"
name="value">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="occurrence" type="xs:unsignedByte"
use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="type" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="value">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="occurrence" type="xs:unsignedByte"
use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="type" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="relation">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:unsignedByte">
<xs:attribute name="occurrence" type="xs:unsignedByte" use="required" />
<xs:attribute name="to" type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="unbounded" name="value">
<xs:complexType>
137
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="occurrence" type="xs:unsignedByte" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="type" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="action" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
138
Приложение Т
(обязательное)
XSD схема сообщения для загрузки элементов иерархии
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:wpc="http://nsi.asur.mos.ru"
attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="http://nsi.asur.mos.ru"
<xs:element name="message">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="hierarchy">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1"
name="categories">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="category" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="1" maxOccurs="1" name="data">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded"
name="attribute">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1"
name="values">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0"
maxOccurs="unbounded" name="groupvalue">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1"
maxOccurs="unbounded" name="attribute">
<xs:complexType>
<xs:sequence>
<xs:element
name="values">
<xs:complexType>
<xs:sequence>
<xs:element
minOccurs="0" maxOccurs="unbounded" name="groupvalue">
<xs:complexType>
<xs:sequence>
<xs:element
minOccurs="1" maxOccurs="unbounded" name="attribute">
139
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="1" name="values">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="value">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="occurrence" type="xs:unsignedByte" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="type" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element
minOccurs="0" maxOccurs="unbounded" name="value">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="occurrence" type="xs:unsignedByte" use="required" />
</xs:extension>
</xs:simpleContent>
140
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name"
type="xs:string" use="required" />
<xs:attribute name="type"
type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0"
maxOccurs="unbounded" name="relation">
<xs:complexType>
<xs:simpleContent>
<xs:extension
base="xs:unsignedByte">
<xs:attribute
name="occurrence" type="xs:unsignedByte" use="required" />
<xs:attribute name="to"
type="xs:string" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0"
maxOccurs="unbounded" name="value">
<xs:complexType>
<xs:simpleContent>
<xs:extension
base="xs:string">
<xs:attribute
name="occurrence" type="xs:unsignedByte" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string"
use="required" />
<xs:attribute name="type" type="xs:string"
use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="action" type="xs:string"
use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
141
<xs:attribute name="name" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
142
Приложение У
(обязательное)
Пример XML-сообщения для загрузки элементов каталога,
иерархии
Xml-сообщение каталога:
<?xml version="1.0" encoding="UTF-8"?>
<wpc:message xmlns:wpc="http://nsi.asur.mos.ru">
<wpc:catalog name="Тест загрузки">
<wpc:item action="ADDED">
<wpc:categories>
<wpc:category nameHier="Пол">1</wpc:category>
</wpc:categories>
<wpc:data>
<wpc:attribute name="ID" type="SEQUENCE">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[2]]></wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Attr1" type="STRING">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[Element 1_1]]></wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Attr2" type="RELATIONSHIP">
<wpc:values>
<wpc:relation occurrence="0" to="Тестовый
пол">1</wpc:relation>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Attr3" type="STRING">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[Element 3_1]]></wpc:value>
<wpc:value
occurrence="1"><![CDATA[Element 3_2]]></wpc:value>
<wpc:value
occurrence="2"><![CDATA[Element 3_3]]></wpc:value>
<wpc:value
occurrence="3"><![CDATA[Element 3_4]]></wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Attr4" type="GROUPING">
<wpc:values>
143
<wpc:groupvalue>
<wpc:attribute
name="Attr4_1"
type="NUMBER">
<wpc:values>
<wpc:value
occurrence="0">41.0</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute
name="Attr4_2"
type="STRING">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[Element 4_2_1]]></wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute
name="Attr4_3"
type="GROUPING">
<wpc:values>
<wpc:groupvalue>
<wpc:attribute
name="Attr4_3_1" type="INTEGER">
<wpc:values>
<wpc:value occurrence="0">4311</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute
name="Attr4_3_2" type="STRING">
<wpc:values>
<wpc:value occurrence="0"><![CDATA[Element 4311]]></wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:groupvalue>
</wpc:values>
</wpc:attribute>
<wpc:attribute
name="Attr2"
type="STRING">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[Test_element]]></wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:groupvalue>
</wpc:values>
</wpc:attribute>
144
<wpc:attribute name="Attr5" type="GROUPING">
<wpc:values>
<wpc:groupvalue>
<wpc:attribute
name="Attr5_1"
type="INTEGER">
<wpc:values>
<wpc:value
occurrence="0">51</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute
name="Attr5_2"
type="STRING">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[Element 5_2_1]]></wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:groupvalue>
<wpc:groupvalue>
<wpc:attribute
name="Attr5_1"
type="INTEGER">
<wpc:values>
<wpc:value
occurrence="0">52</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute
name="Attr5_2"
type="STRING">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[Element 5_2_2]]></wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:groupvalue>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Attr6" type="GROUPING">
<wpc:values>
<wpc:groupvalue>
<wpc:attribute
name="Attr6_1"
type="STRING">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[Element 6_1_1]]></wpc:value>
<wpc:value
occurrence="1"><![CDATA[Element 6_1_2]]></wpc:value>
<wpc:value
occurrence="2"><![CDATA[Element 6_1_3]]></wpc:value>
<wpc:value
occurrence="3"><![CDATA[Element 6_1_4]]></wpc:value>
145
<wpc:value
occurrence="4"><![CDATA[Element 6_1_5]]></wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:groupvalue>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Attr7" type="DATE">
<wpc:values>
<wpc:value
occurrence="0">28/1/85
08:15</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Attr8" type="STRING">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[008]]></wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Attr9" type="BINARY">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[http://artofberserk.narod.ru/Bolota/Vail.jpg]]></wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="REGISTER_GUID" type="STRING">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[DA5FCBD7FF1D826EE040007F01002561]]></wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="EDS_STATE" type="STRING">
<wpc:values>
<wpc:value
occurrence="0"><![CDATA[]]></wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:data>
</wpc:item>
</wpc:catalog>
</wpc:message>
Xml-сообщение иерархии:
<?xml version="1.0" encoding="UTF-8"?>
<wpc:message xmlns:wpc="http://nsi.asur.mos.ru">
<wpc:hierarchy name="РџРѕР»">
<wpc:item action="ADDED">
<wpc:categories>
<wpc:category>1</wpc:category>
146
</wpc:categories>
<wpc:data>
<wpc:attribute name="ID" type="INTEGER">
<wpc:values>
<wpc:value occurrence="0">3</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Name" type="STRING">
<wpc:values>
<wpc:value
occurrence="0">element_test_1</wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:data>
</wpc:item>
<wpc:item action="ADDED">
<wpc:categories>
<wpc:category>1</wpc:category>
</wpc:categories>
<wpc:data>
<wpc:attribute name="ID" type="INTEGER">
<wpc:values>
<wpc:value occurrence="0">4</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Name" type="STRING">
<wpc:values>
<wpc:value
occurrence="0">element_test_2</wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:data>
</wpc:item>
<wpc:item action="ADDED">
<wpc:categories>
<wpc:category>1</wpc:category>
</wpc:categories>
<wpc:data>
<wpc:attribute name="ID" type="INTEGER">
<wpc:values>
<wpc:value occurrence="0">5</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Name" type="STRING">
<wpc:values>
<wpc:value
occurrence="0">element_test_3</wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:data>
147
</wpc:item>
<wpc:item action="ADDED">
<wpc:categories>
<wpc:category>1</wpc:category>
</wpc:categories>
<wpc:data>
<wpc:attribute name="ID" type="INTEGER">
<wpc:values>
<wpc:value occurrence="0">6</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Name" type="STRING">
<wpc:values>
<wpc:value
occurrence="0">element_test_4</wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:data>
</wpc:item>
<wpc:item action="ADDED">
<wpc:categories>
<wpc:category>1</wpc:category>
</wpc:categories>
<wpc:data>
<wpc:attribute name="ID" type="INTEGER">
<wpc:values>
<wpc:value occurrence="0">7</wpc:value>
</wpc:values>
</wpc:attribute>
<wpc:attribute name="Name" type="STRING">
<wpc:values>
<wpc:value
occurrence="0">element_test_5</wpc:value>
</wpc:values>
</wpc:attribute>
</wpc:data>
</wpc:item>
</wpc:hierarchy>
</wpc:message>

 

 

 

 

 

 

 

 

 

 

//////////////////////////////////////////