СМЭВ 3
smev3-engine. СМЭВ 3.
Актуальная версия доступна по адресам http://azovkomeks.ru/update/smev3j17_linux64.tar.gz http://azovkomeks.ru/update/smev3j17_win64.zip
Для работы модуля взаимодействия со СМЭВ 3 необходима предварительная регистрация. Для этого необходимо прислать сертификат открытого ключа для работы со СМЭВ 3 по адресу soft@azovkomeks.ru с указанием наименования МФЦ и его мнемоники в СМЭВ 3. В ответ вам будет прислан PKCS12 контейнер, путь к котрому надо будет указать в конфигурационном файле модуля СМЭВ 3.
Начиная с версии 7.00 в приложение добавлена возможность работы smev3-engine одновременно с несколькими ИС МФЦ. Это можно рассматривать либо как один из шагов к централизации МФЦ, либо как шаг к более удобному администрированию данного модуля. В таком режиме модуль устанавливается в единственном экземпляре и одновременно работает с несколькими БД ИС МФЦ. Возможна работа с несколькими модулями signer, полее подробно это будет описано ниже. При переходе на версию 5.00 МФЦ исопльзующим классическую модель (1 ИС - 1 smev3-engine) не должно потребоваться каких-либо дополнительных манипуляций помимо штатного обновления smev3-engine
При использовании нескольких ИС МФЦ для работы с модулем потребуется аторизация, чтобы разграничить работу с запросами разных ИС.
Возможна работа по схемам СМЭВ 3 версий 1.1, 1.2 и 1.3, для этого необходимо изменить параметр VersionNamespace на необходимую (Доступны варианты: 1, 2, 3) и добавить адреса тестовой и продуктивной среды для соответсвующей версии, после чего перезагрузить модуль.
Конфигурирвоание модуля СМЭВ 3
Конфигурация представляет собой xml-файл. Пример для одной ИС МФЦ (класический):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Config>
<HubDatabase> <!-- Параметры подключения к общей служебной БД (при первичной установке это пустая БД) -->
<Host>хост БД</Host>
<Port>порт БД</Port>
<Name>название БД</Name>
<User>пользователь БД</User>
<Password>пароль БД</Password>
</HubDatabase>
<MfcList>
<MfcConfig>
<Id>Идентификатор МФЦ. Должен быть равен настройке "Внутренний идентификатор МФЦ для модуля СМЭВ 3"</Id>
<Name>Назваине МФЦ (в произвольной форме, ни в какие отчеты не попадает)</Name>
<Database>
<Host>хост БД</Host>
<Port>порт БД</Port>
<Name>название БД</Name>
<User>пользователь БД</User>
<Password>пароль БД</Password>
</Database>
</MfcConfig>
</MfcList>
<HttpPort>http порт на котором будетработаь приложение</HttpPort>
<ServiceProd> <!-- Настройка продуктивного сервиса -->
<Endpoint>эндпоинт</Endpoint>
<EndpointV2>эндпоинт для работы по версиям СМЭВ 1.2(не обязательный)</EndpointV2>
<EndpointV3>эндпоинт для работы по версиям СМЭВ 1.3(не обязательный)</EndpointV3>
<FtpHost>хост ftp-сервера</FtpHost>
<FtpPort>порт ftp-сервера</FtpPort>
<FtpPassword>пароль для ftp-сервера (произвольный)</FtpPassword>
<FtpTimeout>таймаут на работу с ftp-сервером (в секундах)</FtpTimeout>
</ServiceProd>
<ServiceTest> <!-- Настройка тестового сервиса -->
<Endpoint>эндпоинт</Endpoint>
<EndpointV2>эндпоинт для работы по версиям СМЭВ 1.2(не обязательный)</EndpointV2>
<EndpointV3>эндпоинт для работы по версиям СМЭВ 1.3(не обязательный)</EndpointV3>
<FtpHost>хост ftp-сервера</FtpHost>
<FtpPort>порт ftp-сервера</FtpPort>
<FtpPassword>пароль для ftp-сервера (произвольный)</FtpPassword>
<FtpTimeout>таймаут на работу с ftp-сервером (в секундах)</FtpTimeout>
</ServiceTest>
<Signer>
<Connection> <!-- настройки главного signer'а -->
<Address>http://signer.local/</Address>
<User>пользователь</User>
<Password>пароль</Password>
</Connection>
<MainKeyAlias>название контейнера ключей технологической подписи</MainKeyAlias>
<DirectorKeyAlias>название контейнера ключей подписи директора</DirectorKeyAlias>
</Signer>
<Autostart>Автозапуск всех оновых отправок</Autostart>
<StorePath>Путь к хранилищу вложений СМЭВ 3</StorePath>
<KomeksKeystorePath>путь к ключам для репозитория адаптеров</KomeksKeystorePath>
<KomeksKeystorePassword>пароль к ключам для реопзитория адаптеров</KomeksKeystorePassword>
<NoCheckHttpsCert>признак игнорирования проверок ключей при обращениях по https</NoCheckHttpsCert>
<SuperUserPassword>пароль суперпользователя</SuperUserPassword>
<RejectAllAlienResponses>Отклонять все "Неопознанные запросы"</RejectAllAlienResponses>
<OperatingTime>Время работы МФЦ в формате: 08:00-17:00 (используется для следующих 4х параметров)</OperatingTime>
<RequestPeriodBusinessHours>Опрос продуктивной очереди ответов в рабочее время</RequestPeriodBusinessHours>
<RequestPeriodNonBusinessHours>Опрос продуктивной очереди ответов в не рабочее время</RequestPeriodNonBusinessHours>
<RequestPeriodBusinessHoursTestContur>Опрос тестовой очереди ответов в рабочее время</RequestPeriodBusinessHoursTestContur>
<RequestPeriodNonBusinessHoursTestContur>Опрос тестовой очереди ответов в не рабочее время</RequestPeriodNonBusinessHoursTestContur>
<GetRespThreadCount>Количество потоков для опроса очереди ответов (от 1 до 3)</GetRespThreadCount>
<NoWriteEmptyLog>Параметр отвечающий за запись логов без информации в БД (при параметре true логи без информации не будут записываться)</NoWriteEmptyLog>
<GetRequestPeriod>Частота опроса продуктивной очереди входящих запросов</GetRequestPeriod>
<GetRequestPeriod>Частота опроса тестовой очереди входящих запросов</GetRequestPeriod>
<AutomaticGisGmp>Автоматическая проверка оплат поступивших в адрес МФЦ из ГИС ГМП</AutomaticGisGmp>
<Autorization>Принудительная авторизация пользователей</Autorization>
<VersionNamespace>Версия схем СМЭВ 3</VersionNamespace>
<CookiesLifeTime>Время через которое неактивный пользователь будет разавторизован</CookiesLifeTime>
<SslEnabled>Работа по протоколу https</SslEnabled>
<FiasDatabase> <!-- Параметры подключения к БД ФИАС -->
<Host>хост БД</Host>
<Port>порт БД</Port>
<Name>название БД</Name>
<User>пользователь БД</User>
<Password>пароль БД</Password>
</FiasDatabase>
<FileStorage>IN</FileStorage>
</Config>
Если в блоке MfcConfig указать блок Signer, то его настройки будут более приоритетными при исопльзовании конейнера с ключами директора для запросов конкретного МФЦ. То есть если в этом блоке указать только адрес модуля Signer, то этот Signer будет использоваться только для запросов данного МФЦ. Все остальные ЭЦП будут настраиваться корневым модулем Signer.
Пример для работы с несоклькими ИС МФЦ:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Config>
<HubDatabase> <!-- Параметры подключения к общей служебной БД (при первичной установке это пустая БД) -->
<Host>хост БД</Host>
<Port>порт БД</Port>
<Name>название БД</Name>
<User>пользователь БД</User>
<Password>пароль БД</Password>
</HubDatabase>
<MfcList>
<MfcConfig>
<Id>Идентификатор МФЦ. Должен быть равен настройке "Внутренний идентификатор МФЦ для модуля СМЭВ 3"</Id>
<Name>Назваине МФЦ (в произвольной форме, ни в какие отчеты не попадает)</Name>
<Database>
<Host>хост БД</Host>
<Port>порт БД</Port>
<Name>название БД</Name>
<User>пользователь БД</User>
<Password>пароль БД</Password>
</Database>
<Signer> <!-- настройки signer'а с подписью директора конкретного МФЦ -->
<Connection>
<Address>http://signer.local/</Address>
<User>пользователь</User>
<Password>пароль</Password>
</Connection>
<DirectorKeyAlias>название контейнера ключей подписи директора</DirectorKeyAlias>
</Signer>
</MfcConfig>
<MfcConfig>
<Id>Идентификатор МФЦ. Должен быть равен настройке "Внутренний идентификатор МФЦ для модуля СМЭВ 3"</Id>
<Name>Назваине МФЦ (в произвольной форме, ни в какие отчеты не попадает)</Name>
<Database>
<Host>хост БД</Host>
<Port>порт БД</Port>
<Name>название БД</Name>
<User>пользователь БД</User>
<Password>пароль БД</Password>
</Database>
</MfcConfig>
</MfcList>
<HttpPort>http порт на котором будетработаь приложение</HttpPort>
<ServiceProd> <!-- Настройка продуктивного сервиса -->
<Endpoint>эндпоинт</Endpoint>
<EndpointV2>эндпоинт для работы по версиям СМЭВ 1.2(не обязательный)</EndpointV2>
<EndpointV3>эндпоинт для работы по версиям СМЭВ 1.3(не обязательный)</EndpointV3>
<FtpHost>хост ftp-сервера</FtpHost>
<FtpPort>порт ftp-сервера</FtpPort>
<FtpPassword>пароль для ftp-сервера (произвольный)</FtpPassword>
<FtpTimeout>таймаут на работу с ftp-сервером (в секундах)</FtpTimeout>
</ServiceProd>
<ServiceTest> <!-- Настройка тестового сервиса -->
<Endpoint>эндпоинт</Endpoint>
<EndpointV2>эндпоинт для работы по версиям СМЭВ 1.2(не обязательный)</EndpointV2>
<EndpointV3>эндпоинт для работы по версиям СМЭВ 1.3(не обязательный)</EndpointV3>
<FtpHost>хост ftp-сервера</FtpHost>
<FtpPort>порт ftp-сервера</FtpPort>
<FtpPassword>пароль для ftp-сервера (произвольный)</FtpPassword>
<FtpTimeout>таймаут на работу с ftp-сервером (в секундах)</FtpTimeout>
</ServiceTest>
<Signer> <!-- настройки главного signer'а -->
<Connection>
<Address>http://signer.local/</Address>
<User>пользователь</User>
<Password>пароль</Password>
</Connection>
<MainKeyAlias>название контейнера ключей технологической подписи</MainKeyAlias>
<DirectorKeyAlias>название контейнера ключей подписи директора</DirectorKeyAlias>
</Signer>
<Autostart>Автозапуск всех оновых отправок</Autostart>
<StorePath>Путь к хранилищу вложений СМЭВ 3</StorePath>
<KomeksKeystorePath>путь к ключам для репозитория адаптеров</KomeksKeystorePath>
<KomeksKeystorePassword>пароль к ключам для реопзитория адаптеров</KomeksKeystorePassword>
<NoCheckHttpsCert>признак игнорирования проверок ключей при обращениях по https</NoCheckHttpsCert>
<SuperUserPassword>пароль суперпользователя</SuperUserPassword>
<RejectAllAlienResponses>Отклонять все "Неопознанные запросы"</RejectAllAlienResponses>
<OperatingTime>Время работы МФЦ в формате: 08:00-17:00 (используется для следующих 4х параметров)</OperatingTime>
<RequestPeriodBusinessHours>Опрос продуктивной очереди ответов в рабочее время</RequestPeriodBusinessHours>
<RequestPeriodNonBusinessHours>Опрос продуктивной очереди ответов в не рабочее время</RequestPeriodNonBusinessHours>
<RequestPeriodBusinessHoursTestContur>Опрос тестовой очереди ответов в рабочее время</RequestPeriodBusinessHoursTestContur>
<RequestPeriodNonBusinessHoursTestContur>Опрос тестовой очереди ответов в не рабочее время</RequestPeriodNonBusinessHoursTestContur>
<GetRespThreadCount>Количество потоков для опроса очереди ответов (от 1 до 3)</GetRespThreadCount>
<NoWriteEmptyLog>Параметр отвечающий за запись логов без информации в БД (при параметре true логи без информации не будут записываться)</NoWriteEmptyLog>
<GetRequestPeriod>Частота опроса продуктивной очереди входящих запросов</GetRequestPeriod>
<GetRequestPeriod>Частота опроса тестовой очереди входящих запросов</GetRequestPeriod>
<AutomaticGisGmp>Автоматическая проверка оплат поступивших в адрес МФЦ из ГИС ГМП</AutomaticGisGmp>
<Autorization>Принудительная авторизация пользователей</Autorization>
<VersionNamespace>Версия схем СМЭВ 3</VersionNamespace>
<CookiesLifeTime>Время через которое неактивный пользователь будет разавторизован</CookiesLifeTime>
<SslEnabled>Работа по протоколу https</SslEnabled>
<FiasDatabase> <!-- Параметры подключения к БД ФИАС -->
<Host>хост БД</Host>
<Port>порт БД</Port>
<Name>название БД</Name>
<User>пользователь БД</User>
<Password>пароль БД</Password>
</FiasDatabase>
<FileStorage>IN</FileStorage>
</Config>
В главной базе СМЭВа 3 (указана в конфиге в параметре HubDatabase), в таблице smev3hub.producers добавлено поле isTest если установить значение этого поля на конкретном продюссере в состояние true, функция вычисления итогового МФЦ отключается и запрос ляжет в первую по списку базу, после тестирования необходимо данный параметр переключить в состояние false. Для корректной работы в продуктиве необходимо осуществлять доработки продуссеров совместно с разработчиками со стороны инициирующе запрос, чтобы согласовать параметр в котором будут передаваться правила определения конечного МФЦ. (Данные настройки актуальны для МФЦ у кого на один СМЭВ настроено несколько БД).
Конфигурационный файл описан и валидилируется следующей xsd-схемой:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Config" type="ConfigType" />
<xs:complexType name="ConfigType">
<xs:sequence>
<xs:element name="HubDatabase" type="DbConfigType" />
<xs:element name="MfcList" type="MfcConfigsType" minOccurs="0"/>
<xs:element name="HttpPort" type="xs:integer" />
<xs:element name="ServiceProd" type="ServiceType" />
<xs:element name="ServiceTest" type="ServiceType" />
<xs:element name="Signer" type="RootSignerConfigType" />
<xs:element name="Autostart" type="xs:boolean" />
<xs:element name="OnlyReceiveMessage" type="xs:boolean" minOccurs="0" />
<xs:element name="StorePath" type="xs:string" />
<xs:element name="KomeksKeystorePath" type="xs:string" />
<xs:element name="KomeksKeystorePassword" type="xs:string" />
<xs:element name="ProxyForFtp" type="ProxyType" minOccurs="0" />
<xs:element name="ProxyForHttp" type="ProxyType" minOccurs="0" />
<xs:element name="NoCheckHttpsCert" type="xs:boolean" />
<xs:element name="SuperUserPassword" type="xs:string" minOccurs="0" />
<xs:element name="RejectAllAlienResponses" type="xs:boolean" minOccurs="0" />
<xs:element name="OperatingTime" type="xs:string" minOccurs="0" />
<xs:element name="RequestPeriodBusinessHours" type="xs:integer" minOccurs="0"/>
<xs:element name="RequestPeriodNonBusinessHours" type="xs:integer" minOccurs="0"/>
<xs:element name="RequestPeriodBusinessHoursTestContur" type="xs:integer" minOccurs="0"/>
<xs:element name="RequestPeriodNonBusinessHoursTestContur" type="xs:integer" minOccurs="0"/>
<xs:element name="GetRespThreadCount" type="ThreadCount" minOccurs="0" />
<xs:element name="NoWriteEmptyLog" type="xs:boolean" minOccurs="0"/>
<xs:element name="GetRequestPeriod" type="xs:integer" minOccurs="0"/>
<xs:element name="GetRequestPeriodTestContur" type="xs:integer" minOccurs="0"/>
<xs:element name="ProxyForHttpAzovkomeks" type="ProxyType" minOccurs="0" />
<xs:element name="AutomaticGisGmp" type="xs:boolean" minOccurs="0"/>
<xs:element name="Autorization" type="xs:boolean" minOccurs="0"/>
<xs:element name="VersionNamespace" type="VerNamespace" minOccurs="0"/>
<xs:element name="CookiesLifeTime" type="xs:integer" minOccurs="0"/>
<xs:element name="Filtration" type="FiltrationType" minOccurs="0" />
<xs:element name="SslEnabled" type="xs:boolean" />
<xs:element name="KeyStoreType" type="xs:string" minOccurs="0"/>
<xs:element name="KeyStore" type="xs:string" minOccurs="0"/>
<xs:element name="KeyStorePassword" type="xs:string" minOccurs="0"/>
<xs:element name="KeyStoreAlias" type="xs:string" minOccurs="0"/>
<xs:element name="HttpsPort" type="xs:integer" minOccurs="0"/>
<xs:element name="Mode" type="ModeType" minOccurs="0"/>
<xs:element name="DocTransformerAdr" type="xs:string" minOccurs="0"/>
<xs:element name="FiasDatabase" type="DbConfigType" minOccurs="0" />
<xs:element name="FileStorage" type="FileStorageType" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="DbConfigType">
<xs:sequence>
<xs:element name="Host" type="xs:string"/>
<xs:element name="Port" type="xs:integer"/>
<xs:element name="Name" type="xs:string"/>
<xs:element name="User" type="xs:string"/>
<xs:element name="Password" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MfcConfigsType">
<xs:sequence>
<xs:element name="MfcConfig" type="MfcConfigType" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="MfcConfigType">
<xs:sequence>
<xs:element name="Id" type="xs:string" />
<xs:element name="Name" type="xs:string" />
<xs:element name="Database" type="DbConfigType" />
<xs:element name="Signer" type="MfcSignerConfigType" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="RootSignerConfigType">
<xs:sequence>
<xs:element name="Connection" type="SignerConnectionConfigType" />
<xs:element name="MainKeyAlias" type="xs:string" />
<xs:element name="DirectorKeyAlias" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="MfcSignerConfigType">
<xs:sequence>
<xs:element name="Connection" type="SignerConnectionConfigType" />
<xs:element name="DirectorKeyAlias" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="SignerConnectionConfigType">
<xs:sequence>
<xs:element name="Address" type="xs:string" />
<xs:element name="User" type="xs:string" />
<xs:element name="Password" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ProxyType">
<xs:sequence>
<xs:element name="Host" type="xs:string" />
<xs:element name="Port" type="xs:integer" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="ServiceType">
<xs:sequence>
<xs:element name="Endpoint" type="xs:string" />
<xs:element name="EndpointV2" type="xs:string" minOccurs="0"/>
<xs:element name="EndpointV3" type="xs:string" minOccurs="0"/>
<xs:element name="FtpHost" type="xs:string" />
<xs:element name="FtpPort" type="xs:integer" />
<xs:element name="FtpPassword" type="xs:string" />
<xs:element name="FtpTimeout" type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="FileStorageType">
<xs:restriction base="xs:string">
<xs:enumeration value="MFC" />
<xs:enumeration value="IN" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ThreadCount">
<xs:restriction base="xs:integer">
<xs:pattern value="[1-3]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="VerNamespace">
<xs:restriction base="xs:integer">
<xs:pattern value="[1-3]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ModeType">
<xs:restriction base="xs:integer">
<xs:pattern value="[1-2]"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="FiltrationType">
<xs:sequence>
<xs:element name="NamespaceURI" type="xs:string" />
<xs:element name="RootElement" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Форма управления пакетами
На данной форме администратор может просмотреть список пакетов, уже установленных в его ИС и список пакетов в репозиотриии пакетов. Обновляться пакеты (адаптеры) теперь будут через эту вкладку
Незагруженные в ИС пакеты будут видны при конфигурировании документов в ИС, однако сделать запрос по ним будет невозможно.
Установка
- Распаковать архив
- Запустить из папки с дистрибутивом smev3-engine.bat или smev3-engine.sh в зависимости от вашей ОС Обновление выполняется так же: распаковка и перезапуск
Установка модуля СМЭВ 3 как службы windows (необязательно)
- Распаковать архив http://azovkomeks.ru/update/smev3-service.zip в отдельную папку
- В файле smev3-service.xml все пути исправить на ваши
- Выполнить команду
smev3-service.exe install
с правами администратора.
Служба установлена.
Установка модуля СМЭВ 3 как службы systemd (linux) (необязательно)
- Создать в папке /etc/systemd/system файл smev3-engine.service следующего осдержания (пути и пользователей заменить на свои):
[Unit]
Description=SMEV3
After=syslog.target
[Service]
PIDFile=/opt/smev3/pid
WorkingDirectory=/opt/smev3
SyslogIdentifier=SMEV3Engine
ExecStart=/opt/smev3/smev3-engine.sh
User=user
Group=user
[Install]
WantedBy=multi-user.target
- Выполнить команду
systemctl daemon-reload
- Выполнить команду
systemctl enable smev3-engine.service
Готово
Зависимости
- signer2
- doc-transformer