<< Пред. стр. 11 (из 14) След. >>
...
Рекомендуемые спецификации
1) WS-I [http://www.ws-i.org/deliverables/]
2) WS-Coordination [http://msdn.microsoft.com/ws/2004/10/ws-coordination/]
3) WS-BusinessActivity [http://msdn.microsoft.com/ws/2004/10/ws-businessactivity/]
Пилотный проект "Общественная приемная"
Проект предназначен для автоматизации деятельности Минэкономразвития России в рамках подготовки информации по обращениям граждан и хозяйствующих субъектов.
Общее описание
На рисунке представлена обобщенная схема основных компонент пилотного проекта "Общественная приемная".
Обозначения:
* Гражданин - формирующий запрос в МЭРТ и ожидающий ответ на свой запрос.
* СЭДО - система электронного документооборота.
* СЭВ - среда электронного взаимодействия.
* UI - пользовательский интерфейс портала СЭВ.
* ES - сервис исполнения СЭВ.
* AS - авторизационный сервис СЭВ.
* Шлюз - сервис, обеспечивающий передачу сообщений между ПЭВ и СЭДО.
* ПЭВ - Процедура электронного взаимодействия "Общественная приемная", он же собственно пилотный проект.
* ws - веб-сервис, описыннай с помощью WSDL, в соответствии со спецификацией WSDL [Ссылки 2];
* jsp - jsp-реализация пользовательского интерфейса [Ссылки 5];
Описание связей
Все взаимодействия между ПЭВ "Общественная приемная", Компонентами СЭВ, Шлюзом и СЭДО показаны стрелочками. Взаимодействие осуществляется с использованием различных протоколов, надпись на стрелочке указывает используемый протокол. Двунаправленная стрелка показывает, что взаимодействие является синхронным, а однонаправленная - асинхронным.
Используемые протоколы:
* soap - согласно спецификации SOAP [Ссылки 1];
* soap+wsa - согласно спецификации SOAP и WS-Addressing [Ссылки 6];
* http - согласно спецификации HTTP [Ссылки 7];
* jdbc - согласно спецификации JDBC [Ссылки 3];
Основные компоненты ПЭВ "Общественная приемная"
* BPEL script - описание бизнес-процесса ПЭВ "ОП". (ОП = Общественная приемная) [Ссылки 4];
* UI service - сервис, предоставляющий пользовательский интерфейс ПЭВ "ОП".
* Task - сервис, обеспечивающий асинхронное взаимодействие BPEL script с удаленным сервисом СЭДО и базой данных DB.
* Callback - сервис, обеспечивающий асинхронное взаимодействие с удаленным сервисом СЭДО.
* properties - сервис, поставляющий тест сообщений, которые показываются пользователю.
* msgs - файл с текстами сообщений.
* DB - база данных, в которой хранится текущие переменные ПЭВ: тексты запросов и ответов, файлы запросов и ответов, имена исполнителей, и др.
BPEL script
Ядром ПЭВ "ОП" является сценарий BPEL. В процессе своего исполнения, он взаимодействует с веб-сервисами как СЭВ, так и внутренними, которые обеспечивают решение необходимых в контексте исполнения задач. Подробное описание сервисов ES и AS находится в спецификации на СЭВ.
UI service
Сервис UI service обеспечивает решение следующих задач:
- формирование пользовательского интерфейса (веб-форм) для подачи гражданином запроса и выдачи ответа или отказа МЭРТ;
- сохранение текста и файла запроса в базе данных;
- предоставление BPEL сценарию URL-ов на веб-формы подачи запроса и ответа(отказа).
public class gui
Методы public String getURL(
String peiSessionID);
Результат: URL на веб-форму, в зависимости от стадии, выдает URL на форму ввода запроса, или форму ответа (отказа) на запрос.
Параметры: peiSessionID - идентификатор сессии
Так же UI service состоит из набора jsp-страниц:
* create.jsp - реализует форму для ввода текста и фала запроса и сохраняет их в базе данных.
* answer.jsp - реализует форму для показа ответа на запрос гражданина.
* reject.jsp - реализует форму для показа ответа на запрос гражданина.
task
Сервис task обеспечивает решение следующих задач:
- получение полной информации о текущей стадии;
- участие в организации цикла ожидания ввода гражданином запроса;
- инициирование обращений к удаленному сервису СЭДО с целью передачи запроса и получения статуса исполнения запроса.
public class task
Методы public String getFullInfo(
String peiSessionID);
Возвращает информацию о текущей стадии в текстовом виде. Результат передается сервису выполнения среды.
Параметр: peiSessionID - идентификатор сессии;
Результат: строка, содержащая полную информацию о данной стадии.
public void isTaskPosted(
String peiSessionID);
Учувствует в реализации цикла ожидания ввода запроса пользователем. Вызывается асинхронно.
Параметр: peiSessionID - идентификатор сессии.
public String postTask(
String peiSessionID,
String task_text);
Инициирует выполнение обращения к удаленному сервису СЭДО. В качестве параметра получает идентификатор сессии и текст запроса.
Параметры: peiSessionID - идентификатор сессии; task_text - текст запроса.
Результат: строка, в данной реализации не используется.
public void whatStatusNow(
String peiSessionID);
Инициирует запрос к удаленному сервису СЭДО с целью получения статуса выполнения. Вызывается асинхронно.
Параметр: peiSessionID - идентификатор сессии.
properties
Веб-сервис properties, является утилитой, поставляющей текстовую информацию для BPEL процесса, а так же интернационализацию ПЭВ "ОП".
Сервис task обеспечивает решение следующих задач:
- организация поставки текстовой информации для BPEL процесса.
public class properties
Методы public String getProperty(
String key);
По заданному ключу возвращает текст. Как правило BPEL использует полученный текст для записи истории и комментариев в сервис исполнения.
callback
Учувствует в получении асинхронных ответов от удаленного веб-сервиса СЭДО.
public class callback
Методы public void getDocumentContentResponse(
Document_out_files inf);
Получает асинхронный ответ с содержанием ответа или отказа на запрос гражданина от удаленного веб-сервиса СЭДО.
Параметр: inf - информация об ответе на запрос гражданина.
public void getDocumentStatusResponse(
Document_out out);
Получает асинхронный ответ со статусом выполнения запроса от удаленного веб-сервиса СЭДО.
Параметр: out - статус выполнения запроса гражданина в СЭДО.
public void processDocumentResponse(
Document_out out);
Получает асинхронный ответ с идентификатором запущенного в СЭДО процесса.
Параметр: out - статус выполнения запроса гражданина в СЭДО, формат тот же, что и у предыдущего метода, но важным является только идентификатор процесса.
Структура данных DB
В качестве RDBMS используется Oracle 9i Database 9.2.0.1.
Таблица: MESSAGE_2_PROCESS Описание: маппинг идентификатора сообщения на идентификатор процесса Поле Тип Длина Ненулевое Описание PROCESS_ID VARCHAR2 255 MESSAGE_ID VARCHAR2 255
Таблица: TABLE PEI_2_FILES Описание: информация о файлах запроса и ответа Поле Тип Длина Ненулевое Описание ID VARCHAR2 255 PEI_ID VARCHAR2 255 NAME VARCHAR2 255 CONTENT CLOB
Таблица: TASK_2 Описание: текст запроса, текст ответа/отказа, состояние обработки запроса, ответственный исполнитель Поле Тип Длина Ненулевое Описание ID VARCHAR2 255 QUESTION VARCHAR2 255 ANSWER VARCHAR2 255 STATUS VARCHAR2 255 CONDITION VARCHAR2 255 USER_INFO VARCHAR2 255 MAIN_EXECUTER VARCHAR2 255
Таблица: TASK_SERVICE Описание: корреляционная информация для асинхронных веб-сервисов Поле Тип Длина Ненулевое Описание PEI_ID VARCHAR2 255 NOT NULL REPLY_TO VARCHAR2 255 MESSAGE_ID VARCHAR2 255
Таблица: USER_2_PEI Описание: информация о гражданине Поле Тип Длина Ненулевое Описание PEI_ID VARCHAR2 255 U_NAME VARCHAR2 255 U_MIDDLENAME VARCHAR2 255 U_SURNAME VARCHAR2 255 ADDRESS VARCHAR2 255 PHONE VARCHAR2 255 FAX VARCHAR2 255 EMAIL VARCHAR2 255
Реализация взаимодействия между ПЭВ и СЭДО
Принципы взаимодействия систем в процессе обработки обращения гражданина:
№ Действия ПЭВ Действия СЭДО Метод WEB-сервиса СЭДО, параметры на входе и выходе 1. Обращения вводятся пользователем через интерфейс, предоставленный ПЭВ. Получения данных о запросе и запуск процесса обработки документа - исполнение документа. СЭДО в ответ возвращает идентификатор запущенного процесса и его параметры. Операция: ProcessDocument.
Вход: Тип процесса, данные о запросе
Выход: Идентификатор процесса, параметры процесса. В случае ошибки - код и описание ошибки. 2. Отслеживание регистрации обращения Чтение статуса процесса и ответ в ПЭВ Операция: GetProcessStstus
Вход: Идентификатор процесса
Выход: Состояние процесса, идентификатор и данные о регистрируемом документе (номер, дата регистрации, состояние) 3. Отслеживание процесса исполнения обращения Чтение статуса процесса и ответ в ПЭВ Операция: GetProcessStatus
Вход: Идентификатор процесса
Выход: Состояние процесса, идентификатор и данные о регистрируемом документе, данные о его исполнении - текущие исполнители резолюции, данные об исполнении резолюции, состояние исполнения резолюции. 4. Отслеживание ответа Чтение статуса процесса и ответ в ПЭВ Операция: GetDocumentContent
Вход: Идентификатор процесса
Выход: Состояние процесса, идентификатор и данные о регистрируемом документе, данные о его исполнении - данные о документе "во исполнении", его регистрационные данные и содержание.
Ввод обращения гражданином.
Гражданин является инициатором обращения. Воспользовавшись пользовательским интерфейсом портала, Гражданин инициирует выполнение ПЭВ "Общественная приемная". После получения от гражданина ПЭВ формирует запрос в МЭРТ со следующими параметрами (примерное содержание обращения). Используется операция веб-вервиса СЭДО ProcessDocument:
Листинг 1
Телефон
Я, Гражданин Российской Федерации, направляю в Правительство
Российской Федерации жалобу... Подпись: Иванов Иван
Иванович.
Обязательно заполняются:
- Имя темплейта document_in/template_name (Обращение гражданина)
- Список отправителей document_in/reg_cart_info/addresse_from (Данные о гражданине)
- Краткое содержание document_in/reg_cart_info/content (Обращение гражданина)
- Запрос гражданина document_in/files/file (в виде файла с именем Обращение.txt)
Информация о Гражданине не специфицирована в схеме WSDL, и представляет собой строку с необходимой разметкой, как показано в Листинг 1.
На данное сообщение СЭДО отправляет ответ, содержащий идентификатор процесса (Листинг 2), или сообщение об ошибке (Листинг 3).
Листинг 2
013ac84a-3759-4f2c-bceb-49f16ce2b4fa
1
При этом ключевыми параметрами являются:
1) Идентификатор процесса: document_out/process/text();
Листинг 3
Отслеживание регистрации обращения.
После формирования сообщения с обращением гражданина и отправкой его в СЭДО, а так же получением из СЭДО идентификатора процесса, необходимо организовать цикл отслеживания регистрации документа в СЭДО. Используется операция GetDocumentStatus. Форма запроса о состоянии документа показана в Листинг 4.
Листинг 4
525b15a6-c1fb-4818-9c9e-bf9c851e510f
В ответ, операция СЭДО возвращает следующие данные (Листинг 5), в случае возникновения ошибки, СЭДО возвращает сообщение об ошибке (Листинг 3):
Листинг 5
525b15a6-c1fb-4818-9c9e-bf9c851e510f
1
Основными информационными параметрами на данном этапе являются:
- Идентификатор процесса: document_out/process/text();
- Состояние процесса: document_out/process_condition/text(), возможные варианты (1:Процесс обработки запущен, 2:Процесс обработки документа завершен, 3:Процесс обработки документа временно приостановлен), указывается кодом;
- Состояние: document_out/reg_cart_info/condition/text(), возможные варианты (1:Подготавливается, 2:Согласуется, 3:Регистрируется, 4:Исполняется,5:Исполнен), указывается кодом;
- Примечание: document_out/reg_card_info/note/text(). Содержит информацию о причине отказа.
- Дата регистрации: document_out/reg_cart_info/reg_card_date.
- Ответственный исполнитель: document_out/execution_info/main_excecutor/text().
ПЭВ, на основании наличия и значений данных параметров решает, что документ зарегистрирован, и сохраняет данное состояние в DB, после чего BPEL script начинает отслеживать процесс исполнения документа, или сразу перейдет в состояние просмотра отказа.
Отслеживание процесса исполнения обращения
После регистрации документа, ПЭВ инициирует цикл отслеживания процесса исполнения обращения гражданина. Используется операция GetDocumentStatus. Форма запроса о состоянии процесса исполнения документа показана в Листинг 6.
Листинг 6
525b15a6-c1fb-4818-9c9e-bf9c851e510f
В ответ, операция СЭДО возвращает следующие данные (Листинг 7), в случае возникновения ошибки, СЭДО возвращает сообщение об ошибке (Листинг 3):
Листинг 7
525b15a6-c1fb-4818-9c9e-bf9c851e510f
1
Основными информационными параметрами на данном этапе являются:
- Идентификатор процесса: document_out/process/text();
- Состояние процесса: document_out/process_condition/text(), возможные варианты (1:Процесс обработки запущен, 2:Процесс обработки документа завершен, 3:Процесс обработки документа временно приостановлен), указывается кодом;
- Состояние: document/reg_cart_info/condition/text(), возможные варианты (1:Подготавливается, 2:Согласуется, 3:Регистрируется, 4:Исполняется,5:Исполнен), указывается кодом;
- Ответственный исполнитель: document/execution_info/main_executor/text();
Комментарии: Исполнитель переводит в состояние "Исполнен" - только запрос гражданина, так как исполняются резолюции, наложенные именно на запрос, ответ является Исходящим документом и статуса "Исполнен" не имеет.
ПЭВ, должен анализировать изменения параметра Ответственный исполнитель, и изменять соответствующим образом свое состояние. В случае определения состояния документа = Исполнен, ПЭВ инициирует процедуру получения ответа.
Получение ответа
После изменения статуса документа на Обработан, необходимо прочитать из СЭДО ответ. Вызывается операция GetDocumentContent. Форма запроса на получение ответа аналогична предыдущим запросам и показана на Листинг 8.
Листинг 8
525b15a6-c1fb-4818-9c9e-bf9c851e510f
В ответ, операция СЭДО возвращает следующие данные (Листинг 9), в случае возникновения ошибки, СЭДО возвращает сообщение об ошибке (Листинг 3):
Листинг 9
525b15a6-c1fb-4818-9c9e-bf9c851e510f
1
Я, Гражданин Российской Федерации, направляю в Правительство
Российской Федерации жалобу... Подпись: Иванов Иван
Иванович.