Общая информация
VM-шаблон XML — это шаблон, написанный на языке Velocity Template Language (VTL). VM-шаблон служит для создания файлов заявления, которые используются для формирования запроса в ИС ведомства и файлов в ЛК пользователя
Для отправки заявления в ведомство и формирования документов в ЛК разрабатываются несколько шаблонов
- В случае, если все данные по услуге передаются в запросе вида сведений, необходимо разработать один VM-шаблон. Данный шаблон будет формировать xml-файл бизнес-данных вида сведений. Шаблон необходимо назвать «xxxxxxxx_Applicant.vm», где xxxxxxxx — код услуги
- В случае, если в запросе вида сведений передаются только служебные данные, а остальные данные по заявлению передаются во вложенной xml, разрабатывается два шаблона — транспортный и бизнес-шаблон. Транспортный шаблон формирует запрос вида сведений, бизнес-шаблон — вложенную xml с остальными данными по услуге. Транспортный шаблон необходимо назвать «t_xxxxxxxx.vm», где xxxxxxxx — код услуги. Бизнес-шаблон необходимо назвать «xxxxxxxx_Applicant.vm», где xxxxxxxx – код услуги. При использовании такого механизма, бизнес данные, генерируемые шаблоном Applicant, поступят вложением к бизнес-данным
Отдельно необходимо разработать VM-шаблон, используемый для генерации PDFзаявления в ЛК пользователя с данными по заявлению. Шаблон необходимо назвать «pdf_xxxxxxxx_Applicant.vm», где xxxxxxxx — код услуги
Другое наименование VM-шаблонов не допускается
Если VM-шаблон разработан корректно, после прохождения сценария услуги в личном кабинете отобразятся сформированные по шаблонам файлы
В случае, если XML для отправки запроса в вид сведений не сформировался, VM-шаблон составлен с ошибками. За получением информации об ошибке необходимо обратиться к оператору ЕПГУ, указав номера услуги и заявления
Подготовительные действия
В целях значительного сокращения трудозатрат при разработке VM-шаблонов рекомендуется провести ряд подготовительных действий
Подготовить черновик пройденной услуги
- Опубликовать услугу и открыть её
- На стартовом экране включить инструменты разработчика DevTools, нажав клавишу F12
- Перейти в раздел Network
- Установить чекбокс Preserve log в положение true. Данная настройка предотвращает очистку логов после прохождения сценария
- Пройти полностью сценарий, для которого будет разрабатываться VM-шаблон
- В списке запросов выбрать последний запрос getNextStep
- Выбрать вкладку Payload
- Нажать ПКМ на scenarioDto и выбрать Copy value. В буфер обмена будет скопирован черновик заявления
- Перейти в инструмент, способный работать с текстовыми документами и сочетанием клавиш CTRL+V вставить черновик заявления в текстовый редактор
- Из всего черновика понадобится секция applicantAnswers, которая хранит все ответы пользователя при прохождении сценария
Составление VM-шаблона
Целью данного блока работ является заполнение всех необходимых полей будущего xml-документа, требующихся ведомству для предоставления услуги. Для этого первоначально необходимо определить перечень полей из xml-документа, необходимых к заполнению в данном сценарии
В xml из рис. 20 можно видеть пример атрибута lastname, middlename, dateBirth
После прохождения услуги (п. 3.4.1) эти значения остались в черновике заявления в компоненте c7 со следующей структурой Json:
"c7": { "visited": true, "value": { "states": [ { "groupName": "Иванова Ангелина Сергеевна", "fields": [ { "label": "Дата рождения", "value": "14.08.1986" }, { "label": "Пол", "value": "Женский" } ] }, { "groupName": "Паспорт гражданина РФ", "fields": [ { "label": "Серия и номер", "value": "1111 729729" }, { "label": "Дата выдачи", "value": "21.08.2020" }, { "label": "Место рождения", "value": "г. Москва" }, { "label": "Гражданство", "value": "РОССИЯ" }, { "label": "СНИЛС", "value": "000-729-729 38" } ] } ], "storedValues": { "firstName": "Ангелина", "lastName": "Иванова", "middleName": "Сергеевна", "birthDate": "14.08.1986", "birthPlace": "г. Москва", "gender": "F", "genderFull": "Женский", "docType": "RF_PASSPORT", "rfPasportSeries": "1111", "rfPasportNumber": "729729", "rfPasportIssueDate": "21.08.2020", "citizenship": "РОССИЯ", "citizenshipCode": "RUS", "snils": "000-729-729 38" } } }, |
Чтобы подставить значения из черновика заявления в атрибут xml, необходимо сослаться на нужный атрибут из Json
При написании VM шаблонов можно использовать стандартные операции сравнения, условий, циклов, преобразований и прочее
Примерный перечень операций, используемых в VM-шаблоне
Пример |
Описание |
|
В случае, если компонент c1 не равен null, атрибут tag принимает valueкомпонента c1 |
|
В случае, если компонент с1 не равен null, атрибут tag принимает valueкомпонента c1, иначе в атрибут tagподставится value компонента c2 |
|
В случае, если value компонента c1 равно 1, тогда атрибут tag принимает valueкомпонента с1; если value компонента с1 равно 2, тогда атрибут tag принимаетvalue компонента с2, иначе атрибут tagпримет value компонента c3 |
|
Используется для обращения к массивам. Например, value компонента c1 является массивом. Тогда в атрибут tag подставится значение из компонента с2, находящегося в массиве. Атрибутов tag будет столько, какая будет размерность массива |
|
Replace используется для преобразования.
Например, компонент с1 передал |
|
Получить дату в формате «00.00.0000» |
Операторы сравнения |
|
== |
Равно |
!= |
Не равно |
> |
Больше |
< |
Меньше |
>= |
Больше или равно |
<= |
Меньше или равно |
&& |
И |
|| |
Или |
Кроме прямого обращения к атрибуту в JSON можно использовать глобальные переменные
Пример использования глобальных переменных в VM шаблоне:
<fss:person> <fss:secondName>$lastName</fss:secondName> <fss:firstName>$firstName</fss:firstName> <fss:patronymic>$middleName</fss:patronymic> <fss:birthDate>$birthDate</fss:birthDate> </fss:person> |
В отличие от прямого обращения к значению из черновика, глобальные переменные берут данные из личного кабинета пользователя
Глобальные переменные
Глобальная переменная |
Описание |
$orderId |
Номер заявления |
$masterid |
Номер заявления основного заявителя для сценариев с несколькими заявителями |
$oid |
ID пользователя |
$masterOid |
ID основного заявителя |
$firstName |
Имя |
$masterFirstName |
Имя основного заявителя |
$lastName |
Фамилия |
$masterLastName |
Фамилия основного заявителя |
$middleName |
Отчество |
$masterMiddleName |
Отчество основного заявителя |
$birthDate |
Дата рождения |
$masterBirthDate |
Дата рождения основного заявителя |
$gender |
Пол |
$masterGender |
Пол основного заявителя |
$citizenship |
Гражданство |
$masterCitizenship |
Гражданство основного заявителя |
$citizenshipCode |
Код гражданства |
$masterCitizenshipCode |
Код гражданства основного заявителя |
$birthdateCode |
Код страны рождения |
$masterBirthdateCode |
Код страны рождения основного заявителя |
$userOrgChief |
Роль пользователя в организации. |
$timezone |
Часовой пояс заявителя |
$masterUserOrgChief |
Роль пользователя-основного заявителя в организации. |
$orgType |
Тип учетной записи |
$masterOrgType |
Тип учетной записи основного заявителя |
$leg |
Организационно-правовая форма по ОКОПФ |
$inn |
ИНН |
$legCode |
Код организационно-правовой формы по ОКОПФ |
$serviceId |
Номер кода услуги |
$targetId |
Номер цели услуги |
$homePhone |
Домашний телефон |
$mobilePhoneNumber |
Мобильный телефон |
$contactPhoneNumber |
Контактный телефон |
|
Электронная почта |
Загрузка VM-шаблонов
Составленные на предыдущем шаге файлы необходимо загрузить в конструктор в виде файлов или вставить в инструмент визуального редактирования, для этого:
- Необходимо открыть раздел «Шаблоны XML»
- Загрузить составленные VM-шаблоны, нажав кнопку «Добавить»
- После загрузки опубликовать услугу в тестовой среде ЕПГУ