Перейти к содержанию

СМЭВ 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