Справка Типовой протокол автоматической передачи сведений о результатах поверки средств измерений в Федеральный информационный фонд 1. Общие сведения Типовой протокол автоматической передачи сведений о результатах поверки средств измерений реализован в рамках информационной системы автоматического обмена данными о поверках средств измерений «ИС Поверки-Автомат» (далее - Система). Функциональное назначение системы – автоматический обмен данными с информационными системами организаций-поверителей средств измерений с автоматической обработкой данных. Эксплуатационное назначение системы – программа представляет собой серверную часть информационной системы Федерального информационного фонда по обеспечению единства измерений. Клиентская часть системы разрабатывается организацией-поверителем. Передача данных реализована на основе протокола обмена структурированными сообщениями SOAP с использованием протокола прикладного уровня HTTPS с шифрованием на основе протоколов SSL (TLS). 2. Структурная схема Рисунок 1. Структурная схема системы По запросу клиентской части модуль первичной обработки осуществляет прием данных о поверках. При этом производится первичная обработка с целью выявления информации с некорректными типами данных. В базе данных сохраняется следующая информация: Обобщенные результаты первичной обработки данных. Корректные данные о поверках. Данные о поверках, содержащие информацию с некорректными типами данных Модуль вторичной обработки данных обеспечивает проверку загруженной информации на соответствие критериям корректности. Записи, не соответствующие критериям корректности, переносятся в отдельное хранилище и после передаче клиентской части удаляются. После приведения информации к корректному виду, информация повторно передается клиентом в систему в составе нового пакета. По запросу клиентской части модуль передачи служебной информации передает обобщенную информацию о результатах загрузки и данные о некорректных записях. Реализована возможность передачи клиенту информации о ТСИ в виде файла с целью обновления информации в ИС организации-поверителя. Передача информации о ТСИ осуществляется по запросу клиентской части. С периодичностью, установленной заказчиком, модуль копирования осуществляет публикацию информации в базе данных Федерального информационного фонда по обеспечению единства измерений. 3. Выполняемые функции 1. Идентификация информационных систем организаций-поверителей. Осуществляется путем использования данных аутентификации (логин-пароль). 2. Обмен данными по запросам клиента на основе протокола обмена структурированными сообщениями в распределённой вычислительной среде SOAP с использованием протокола прикладного уровня HTTPS. При передаче данных осуществляется шифрование данных на основе протокола SSLv3 (TLSv1) шифр AES256-SHA. Реализованы следующие потоки данных: Получение данных о результатах поверок от информационных систем организаций-поверителей. Данные от клиентской части системе передаются по запросу клиента. Формирование ответа информационной системе организацииповерителя о результатах приема и обработки данных, а также о некорректных данных. Данные от системы к клиентской части передаются по запросу клиента. Передача данных о ТСИ для обновления в ИС организацииповерителя. Данные передаются по запросу клиента в виде файла формата XML (формат файла в Приложении №2). Формирования ответа информационной системе организацииповерителя обо всех ранее полученных результатах поверок со статистической информацией, в т.ч. о дате публикации на Федеральном Фонде. Данные от системы к клиентской части передаются по запросу клиента. Удаление данных о поверках, не опубликованных на Федеральном Фонде. Данные удаляются по запросу клиента. 3. Автоматическая обработка и проверка данных на корректность с сохранением статистических данных. Входные данные после приема проверяются на корректность по следующим критериям: Регистрационный номер должен соответствовать номеру в Госреестре. Регистрационный номер должен быть обязательно заполнен Должны быть заполнены все поля, обязательные для заполнения. Дата поверки не должна превышать периода, установленного оператором (исключается внесение данных задним числом более установленного периода). Данные не должны дублироваться в текущем цикле передачи данных. Данные не должны дублироваться с данными, переданными в предыдущих циклах передачи данных. Данные не должны дублироваться с информацией, внесенной в ручном и пакетном режимах. Некорректные данные возвращаются клиенту по его запросу вместе с обобщенными результатами обработки, после чего удаляются из базы данных. После исправления данных, клиент может передать информацию повторно в составе нового пакета данных. 3. Автоматическое оповещение оператора и организации–поверителя по электронной почте об ошибках при обработке. 4. Автоматическая публикация корректных данных на портале Федерального информационного фонда по обеспечению единства измерений. 5. Возможность просмотра журнала результатов обработки данных на стороне сервера оператора ответственными лицами организацииповерителя и оператора с использованием веб-интерфейсов. 4. Организация входных данных 1. Входные данные должны обеспечивать идентификацию информационной системы организации-поверителя. В качестве идентификатора используется GUID, переданный системой клиенту в процессе аутентификации (функция LOGIN). 2. Входные данные должны передаваться в формате XML. 3. Входные данные должны обеспечивать построчную идентификацию. В качестве идентификатора используются GUID строк (поверок), присвоенный клиентом. 4. Входные данные о поверках передаются пакетами. Каждый пакет содержит от 1 до 10000 поверок. В Системе каждому пакету присваивается GUID, фиксируется время передачи, количество переданных поверок, после обработки вычисляется количество корректных и некорректных входных данных. Структура входных данных представлена в таблице 1. Таблица 1. Структура входных данных Наименование поля GUIDp Тип Требования к данных заполнению обязательно текст обязательно modific текст не обязательно num_zav текст обязательно date_v текст обязательно date_pov дата обязательно num_svidet текст обязательно name_s_pov текст не обязательно godn текст обязательно ngosreestr_tsi Назначение поля Пример значения Примечание идентификатор строки 41160-09 Регистрационный номер типа средств измерения Модификация АВТОТЕСТсредства измерения 01.03ЛТК Заводской номер 16917 средства измерения Год выпуска средства 2011 измерения 19.04.2013 Дата поверки средства измерения или 2012-1010 Номер 545 свидетельства о поверке Сведения о ПГС ТУ 6-212956-92 средствах поверки РМ-А-0,063 №0857674 МО-11201 №991 1 Пригодность по результатам поверки Регистрационн ый номер типа СИ в Госреестре Для СИ без номера = б/н Оборудование, методики, использовавшиеся для поверки 1 - пригоден, 0 - непригоден 5. Организация выходных данных 1. Выходные данные обеспечивают идентификацию информационной системы организации-поверителя. 2. Выходные данные передаются в формате XML. 3. Выходные данные обеспечивают построчную идентификацию. 4. Выходные данные имеют следующую иерархию: Заголовочная часть 5. В выходных данных передается обобщенная информация о результате обработки данных: Идентификатор процесса. Дата и время поступления входных данных. Дата и время обработки входных данных. Информация о результатах обработки: корректно, некорректно (с ошибками). Общее количество обработанных входных данных. Общее количество корректно обработанных входных данных. Общее количество некорректных входных данных 6. В случае поступления некорректных входных данных, дополнительно должна передаваться информация, позволяющая идентифицировать некорректные строки, а также вид ошибки данных. Технические детали работы с Системой описаны в Приложении №1 Приложение 1 Технические данные для работы с системой 1. Процедура аутентификации в Системе Входные данные: Имя пользователя – строка Пароль - строка Выходные данные: Истина или ложь - если истина, то пользователь успешно аутентифицировался в АСУП, если ложь – нет Затем читается заголовок типа ISoapHeaders из интерфейса IPoverki методом GET в переменную класса AuthHeader. В этой переменной клиент получает ключ сессии и время начала сессии. Сессия является виртуальной, т.к. после запроса к серверу и получения ответа происходит разрыв TCP-сессии. Тайм-аут TCP-сессии по умолчанию составляет 30 секунд, для увеличения данного параметра клиент должен установить в запросе следующие опции: INTERNET_OPTION_CONNECT_TIMEOUT INTERNET_OPTION_SEND_TIMEOUT INTERNET_OPTION_RECEIVE_TIMEOUT Существует ограничение на продолжительность простоя в виртуальной сессии – 600 секунд, т.е. если клиент не обращается к серверу в течение этого промежутка времени, то происходит устаревание ключа виртуальной сессии. Для возобновления работы в системе клиент должен пройти аутентификацию заново и получить новый ключ. При каждом запросе к серверу клиент в переменной класса AuthHeader получает обновленное время виртуальной сессии, т.е. время таймаута устаревания ключа обнуляется. 2. Процедуры обращения к серверу должны при каждом запросе выполнять следующие действия: Используется глобальная переменная класса AuthHeader или каждый раз создает локальная переменная этого класса В этой переменной должен быть ключ текущей сессии и время последнего обновления виртуальной сессии Вызывается метод SEND типа ISoapHeaders интерфейса IPoverki, в котором передается инициализированная выше переменная класса AuthHeader Таким образом, происходит авторизация пользователя с помощью ключа виртуальной сессии. Одновременно обнуляется время тайм-аута виртуальной сессии. Типы данных AuthHeader class(TSOAPHeader) KeySession string TimeStamp TDateTime PoverkiList GUIDt string Status string col_z string col_norma string col_err string datetime_z string datetime_ff string Poverka GUIDp string ngosreestr_tsi modific string string Результат аутентификации клиента и используется для дальнейшей авторизации в системе Ключ сессии выдается клиенту сервером при начале виртуальной сессии Дата и время, используется для вычисления времени простоя сессии и устаревания ключа. Формируется сервером при начале сессии и обновляется при каждом запросе клиента. Список пакетных загрузок поверок клиента в систему Глобальный идентификатор пакета загрузки поверок. Формируется сервером при выполнении функции InsertPoverki. Может принимать следующие значения: Грузится – загрузка пакета началась и продолжается или неудачная загрузка Количество загруженных поверок в пакете всего Количество загруженных поверок в пакете, удовлетворяющих всем требованиям системы Количество загруженных поверок в пакете, содержащих ошибки Дата и время загрузки пакета поверок в систему Дата и время публикации пакета поверок в Федерально Фонде Структура одной поверки Глобальный идентификатор поверки. Формируется клиентом. Должен быть уникальным минимум в рамках всех поверок клиента. Номер в госреестре ТСИ Модификация num_zav date_v date_pov num_svidet name_s_pov godn string string string string string string aPoverka Одномерный массив из Poverka aPoverkiList Одномерный массив из PoverkiList Заводской номер Дата выпуска Дата поверки Номер свидетельства Наименование Годен=1/ не годен = 0 Функции системы Наименование Входные параметры Выходные параметры Результат Алгоритм Наименование Входные параметры Выходные параметры Результат Алгоритм Наименование Входные параметры Выходные параметры Результат Алгоритм Наименование Входные параметры Выходные параметры Результат Алгоритм GetTSI нет TSoapAttachment Файл в формате xml со справочными данными ТСИ На сервере каждую ночь формируется файл в формате xml со справочными данными ТСИ. При запросе в поток прикрепляется этот файл и передается клиенту. Клиенту нужно указать источник данных поток и сохранить файл на локальный диск. GetPoverkiList нет aPoverkiList – одномерный массив структур типа PoverkiList Файл в формате xml со справочными данными ТСИ На сервере каждую ночь формируется файл в формате xml со справочными данными ТСИ. При запросе в поток прикрепляется этот файл и передается клиенту. Клиенту нужно указать источник данных поток и сохранить файл на локальный диск. GetPoverkaErr Глобальный идентификатор поверки GUIDp Poverka Одна поверка, имеющая идентификатор GUIDp. Запрос к таблице auto_error. Фильтр по GUIDp и id_s in (select id_s from auto_sost where GUIDuser=текущий клиент) GetPoverkiErr Глобальный идентификатор пакета поверок GUIDt (доступен в результатах вызова функции GetPoverkiList) aPoverka Массив поверок, загруженных клиентом ранее. Пакет загрузки имеет идентификатор GUIDt Запрос к таблице auto_error. Фильтр по id_s in (select id_s from auto_sost where GUIDuser=текущий клиент and GUIDt=@GUIDt) Наименование Входные параметры Выходные параметры Результат Алгоритм Наименование Входные параметры Выходные параметры Результат Алгоритм InsertPoverki aPoverka - массив GUIDt Происходит загрузка пакета поверок в систему. Пакету присваивается GUIDt, который передается клиенту. В начале транзакции в таблицу auto_sost вставляется новая строка с установленными полями GUIDt, GUIDs, GUIDuser, status=’Грузится’, DateTime_z=текущая дата и время (начало транзакции) Поочередно происходит вставка в таблицу auto_load данных из массива, неудачные добавления переносятся в таблицу auto_error с указанием в поле rez_an описания ошибки SQL В конце транзакции таблица обновляется таблица auto_sost в поле status=’Загружен’, time_z=Текущая дата и время (окончание транзакции), col_z=количество поверок DeletePoverki Глобальный идентификатор пакета поверок GUIDt (доступен в результатах вызова функции GetPoverkiList) string Удаляет пакет поверок клиента с идентификатором GUIDt Проверяется поле datetime_ff в таблице auto_sost, если поле = NULL, то вызывается процедура на сервере SQL DelAutoSost(GUIDt, GUIDuser) и происходит удаление пакета поверок в таблицах auto_sost, auto_load, auto_error, auto_pub Приложение №2 Формат файла ТСИ <?xml version="1.0" encoding="utf-8"?> <TSILIST> <TSI> <id_tsi>23925</id_tsi> <ngosreestr>17225-98</ngosreestr> <naimen>ТСИ-1</naimen> <typesi>Тип-1</typesi> <izgotov>Изготовлен-1 </izgotov> <srok>01.05.2003</srok> </TSI> <TSI> <id_tsi>23926</id_tsi> <ngosreestr>17226-05</ngosreestr> <naimen>ТСИ-2</naimen> <typesi>Тип-2</typesi> <izgotov>Изготовлен-2</izgotov> <srok>01.07.2010</srok> </TSI> </TSILIST>