Чтобы форма, разработанная в конструкторе, появилась в каталоге услуг и была доступна для заказа, необходимо выполнить скрипты. В настоящий момент существует два способа публикации услуги: через публикатор и вручную (скриптами).
Рассмотрим случай публикации услуги вручную:
Сначала необходимо указать для разработанной формы мнемонику, которая по сути является номером услуги. Выполняется скрипт вручную в схеме pguforms:
update pguforms.form set mnemonic= xxx where id='9999';
commit;
Где,
xxx - произвольный номер-мнемоника для услуги (см. столбец eservice_extid в базе govsrvreg.eservice;)
id – номер разработанной формы в конструкторе (https://pgu-forms.egov.at-consulting.ru/designer/#9999)
Для регистрации услуги в Каталоге услуг рекомендуем использовать процедуру create_service (пакет PKG_SRVFUTILS), в случае нестандартных услуг (например, фейковые услуги, привязка одной услуги к нескольким регионам и т.д.) можно использовать процедуры из других пакетов (например, PKG_SERVICE2). Рассмотрим пример регистрации услуги с использованием процедуры create_service (описание процедуры можно узнать тут - https://confluence.egov.at-consulting.ru/pages/viewpage.action?pageId=49680533), здесь и далее указан тестовый пример, перед применением скрипта необходимо указывать свои данные:
|
|
declare
SRVCS PGU.PKG_SRVFUTILS.T$LIST:= PGU.PKG_SRVFUTILS.T$LIST(
PGU.PKG_SRVFUTILS.T$REC(-1, xxx, '-1', 'Ошибка обработки результата','Ошибка обработки результата', 'N','N','N','N'),
PGU.PKG_SRVFUTILS.T$REC(0, xxx, '0', 'Черновик заявления', 'Состояние, когда пользователь ещё не отправил заявление','N','N','N','N'),
PGU.PKG_SRVFUTILS.T$REC(1, xxx, '1', 'Принято от заявителя', 'Состояние, когда пользователь УЖЕ отправил заявление','Y','N','N','N')
);
begin
PGU.PKG_SRVFUTILS.create_service(
extid => 10000002842,
icon_name => 'img_fed_nadzorsvyzi.png', -- иконка ведомства (указывается только в том случае, если ведомство не заведено в каталоге услуг)
categories => 'LEGAL, PERSON, SOLE_PROPRIETOR, FOREIGNER',
es_id => xxx,
targets => PGU.PKG_SRVFUTILS.T$TARGETS(10000459523, 10000459524),
fnames => PGU.PKG_SRVFUTILS.T$NAMES('Выдача разрешений', 'Уведомление об обработке'),
endpoint => 'https://demo-riep:7777/gateway/services/SID0003685',
fshortnames => PGU.PKG_SRVFUTILS.T$NAMES('Выдача', 'Уведомление'),
fp => 'pguforms',
edsstatus_code => 'EDS_NOT_SUPPORTED',
eservice_online => 'N',
active => 'Y',
OKATO => '00000000000',
published => 1,
smev_code => 'RTNZ01',
smev_region => '00',
smev_accesspoint => '1',
edstype => 'V_2_4_3',
spec_code => 'MR',
spec_type => 'CALL',
soap_action => 'https://www.red-soft.biz/ncore/dx/ws/smev-243/Smev243Port/PutDocument',
ftl_template => ' xxx_request_converter ',
ftl_response => 'xxx_response_converter',
transport => 'SOAP_11',
uddikey => null,
bundle_code => 'top10',
uddikey_region_search => 'N',
asynch_response => 'N',
status_notchange => 'N',
log_status => 'Y',
org_status_list => SRVCS
);
commit;
end;
/
Где,
xxx - произвольный номер-мнемоника для услуги (см. столбец eservice_extid в базе govsrvreg.eservice;)
extid - код ведомства;
targets - список кодов целей СРГУ;
fnames - список полных наименований форм(целей);
endpoint – адрес веб-сервиса (указывается SID на СМЭВе);
|
|
fp - форм-провайдер (для услуг сервера форм форм-провайдер обязательно должен начинаться с pguforms – влияет на формирование прямой ссылки на форму);
edsstatus_code - режим использования ЭП (EDS_NOT_SUPPORTED - не требует подписания ЭП; EDS_MANDATORY - требует подписания ЭП);
smev_code – мнемоника участника из четырех символов с двузначным цифровым номером информационной системы ведомства;
smev_region - двузначный цифровой код региона, к которому относится точка подключения;
smev_accesspoint - однозначный цифровой номер экземпляра точки подключения в регионе;
edstype - версия методрекомендаций (V_OLD, V_2_3_4, V_2_3_5, V_2_4_3, V_2_5)
spec_code - признак методрекомендаций для услуги (MR - услуга по методрекомендациям; NOMR - услуга не по методрекомендациям);
spec_type - указание действия для orderprocessing: CALL - заказ, CANCEL – отмена;
soap_action - при наличии указывается путь SOAP-action, если его нет, то этот параметр можно опустить. Проверить наличие пути SOAP-action можно следующим образом – открыть в браузере wsdl веб-сервиса и поиском искать soap-action, например: <soap:operation soapAction="CreateRequest"/>
ftl_template – мнемоника ftl-шаблона исходящего сообщения, хранится в таблице LK.sc_soap_msg_template. Шаблон должен быть предварительно создан на момент запуска процедуры(см. п.4 FTL-шаблоны, Для запроса на отправку заявки);
ftl_response - мнемоника ftl-шаблона входящего сообщения, хранится в базе LK.sc_response_converter. Шаблон должен быть предварительно создан на момент запуска процедуры(см. п.4 FTL-шаблоны, Для ответа от ведомства);
transport - тип транспорта (допустимые значения: SOAP_11, SOAP_12);
uddikey - ключ в juddi для сервиса ведомства. NULL - совпадает с мнемоникой формы;
bundle_code - код бандла сервиса (допустимые значения: top10);
uddikey_region_search - признак поиска региона в juddi, для федеральных услуг 'N';
asynch_response - признак асинхроного ответа через сервисы обновления статусом;
status_notchange - признак необновления статуса заявления;
log_status - признак логирования поля body сообщения;
org_status_list - список статусов (тип PKG_SRVFUTILS.T$LIST)
Рассмотрим подробнее, что данная процедура выполняет:
1. Настройка личного кабинета и статусов:
По параметру - код ведомства extid => 10000002842 процедура проверяет, заведено ли данное ведомство. Если такое ведомство не найдено, то выполняется процедура PKG_SERVICE2.create_StateOrg. Также, если ведомство не опубликовано в Каталоге услуге, необходимо указать наименование иконки в параметре icon_name.
В случае, если ведомство в ответе, либо в обновлении статуса присылает свои коды статусов, например:
<rsoc:changeOrderInfo>
<rsoc:orderId>
<rsoc:pguId>20049428</rsoc:pguId>
</rsoc:orderId>
<rsoc:statusCode>
<rsoc:orgCode>020</rsoc:orgCode>
</rsoc:statusCode>
<rsoc:comment>Заявка находится в обработке в Минюсте России</rsoc:comment>
<rsoc:cancelAllowed>false</rsoc:cancelAllowed>
</rsoc:changeOrderInfo>
Необходимо сделать маппинг статусов:
SRVCS PGU.PKG_SRVFUTILS.T$LIST:= PGU.PKG_SRVFUTILS.T$LIST(
PGU.PKG_SRVFUTILS.T$REC(
-1, -- технологический статус
xxx, -- код формы (или null, если статусы относятся к ведомству)
'-1', -- статус ведомства
'Ошибка обработки результата', -- наименование статуса (отображается в ЛК)
'Ошибка обработки результата', -- описание статуса (не отображается в ЛК)
'N', -- флаг «извещение по электронной почте», возможные значения - Y, N
'N', -- флаг последний статус в процессе обработки заявления, возможные значения - Y, N
'N', -- флаг «извещение по sms», возможные значения - Y, N
'N' -- флаг «извещение по технологии push», возможные значения - Y, N
),
PGU.PKG_SRVFUTILS.T$REC(0, xxx, '0', 'Черновик заявления', 'Состояние, когда пользователь ещё не отправил заявление','N','N','N','N'),
PGU.PKG_SRVFUTILS.T$REC(1, xxx, '1', 'Принято от заявителя', 'Состояние, когда пользователь УЖЕ отправил заявление','Y','N','N','N')
);
Аналогично описываются остальные статусы.
2. Публикация услуги
Далее выполняется процедура по созданию электронной услуги с указанными параметрами:
pkg_service2.modify_eservice(
|
|
i_eservice => es_id, -- код электронной услуги
i_name => fshortnames, -- имя электронной услуги
i_fullname => fnames, -- полное имя электронной услуги
i_edsstatus => edsstatus_code, -- код использования электронной подписи, варианты: EDS_NOT_SUPPORTED, EDS_MANDATORY
i_state_org_code => org_code, -- код ведомства в Сводном реестре
i_isonline => eservice_online, -- флаг "он-лайн" услуга, возможные значения (0 - нет, 1 - да)
i_isactive => active); -- флаг активности услуги, возможные значения (Y, N)
Затем выполняется связь электронной услуги с поставщиком электронных услуг (форм-провайдер):
pkg_service2.link_eservice2fprovider(
i_eservice => es_id,
i_isactive => active,
i_fp => fp -- ext_id поставщика форм (начинается на pguforms для сервера форм)
);
Далее создается ссылка на электронную услугу:
pgu.pkg_service2.create_eserviceformset(es_id)
update GOVSRVREG.eserviceform set eserviceform_relativeurl=es_id where
eservice_id=(select eservice_id from govsrvreg.eservice where eservice_extid=es_id);
Затем выполняется связь электронной услуги с целью(ями) оказания услуги:
pkg_service2.modify_commonservice(
i_target => targets, -- код цели услуги Ланит
i_eservice => es_id, -- код формы
i_name => snames,
i_fullname => fnames,
i_state_org_code => org_code,
i_published => published);
Далее необходимо указать классификации для каждой цели услуги:
- по категории получателя (выполняется для каждой категории получателя, перечисленных в параметре categories)
pgu.pkg_service2.classify_service(
i_eservice => es_id,
i_target => targets,
i_classifier_code => 'SERVICE_RECIPIENT', -- код классификатора согласно таблице GOVSRVREG.classifier;
i_category_code => 'PERSON'); -- код классификатора согласно таблице GOVSRVREG.categoty, связана с i_classifier_code как ребенок;
- по территории
pkg_service2.classify_service(
i_eservice => es_id,
i_target => targets,
i_classifier_code => 'TERRITORY',
i_category_code => OKATO); -- ОКАТО, для федеральных услуг 00000000000
- по ведомству
pkg_service2.classify_service(
i_eservice => es_id,
i_target => targets,
i_classifier_code => 'STATE_STRUCTURE',
i_category_code => extid);
В случае привязки услуги к другой классификации (например, для мобильных приложений), необходимо после процедуры create_service выполнить процедуру pkg_service2.classify_service с требуемыми параметрами.
Если паспорта услуги с целями нет в Каталоге услуг по разным причинам (например, не успели опубликовать в СРГУ, либо форму нужно вывести только по прямой ссылке и т.д.), необходимо создать так называемые фейковые цели, услуги, паспорта и ведомства. И только после этого выполнять процедуру create_service (в параметрах указываются фейковые цели, код ведомства и т.д.). Как правило все фейковые коды начинаются со знака «-»
|
|
Создать фиктивное ведомство, если его нет в каталоге:
pgu.pkg_service2.modify_StateStructure(
i_ss => '-10000000511', -- код ведомства (extid в процедуре create_service). Код ведомства также можно получить, выполнив процедуру pgu.pkg_service2.gen_extid('86', '86203'), где 86 – код региона, а '86203' – номер услуги
i_title =>ss_title, -- наименование фейкового ведомства
i_short_title => ss_title,
i_admlevel => 1, -- уровень ведомства (ext_id) согласно таблице GOVSRVREG.p_adm_level;
i_type => 9, -- тип ведомства (ext_id) из таблицы GOVSRVREG.P_STATE_STRUCTURE_TYPE
i_subord_type => 1 -- тип подчинения (ext_id) ведомства согласно таблице GOVSRVREG.p_subordination_type;
);
Создать фиктивный паспорт услуги ведомства, если его нет в каталоге:
pgu.pkg_service2.modify_passport(
i_passport => target, -- код паспорта для данной цели, совпадает с кодом цели для фиктивных объектов
i_title => p_name, -- полное наименование фейкового паспорта
i_short_title => p_short_name, -- краткое наименование фейкового паспорта
i_ss => ss, -- код ведомства
i_admlevel => 'FEDERAL', -- код уровень ведомства согласно таблице GOVSRVREG.p_adm_level (FEDERAL – Федеральные; REGIONAL – Региональные; OTHER – Прочие; MUNICIPAL - Муниципальные)
i_okato => '00000000000'); -- ОКАТО, 00000000000 для федеральных услуг
Создать фиктивную услугу (процедуру) паспорта и ее цель, если его нет в каталоге:
pgu.pkg_service2.modify_target(
i_target => target,
i_passport => target, -- код паспорта для данной цели, совпадает с кодом цели для фейковых объектов
i_title => t_name,
i_okato => '00000000000');
Затем выполняется процедура create_service с созданными фейковыми объектами.
Основной и наиболее простой вариант публикации услуги – через Публикатор. Публикатор доступен из дизайнера (Рис.12)
Рисунок 12. Кнопка Публикатора.
После выбора в выпадающем списке «Опубликовать»: «Форму». Откроется окно публикатора (Рис. 13)
Рисунок 13. Окно Публикатора.
Описание механизма работы с публикатором содержится в следующем документе: