/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gws.api;
import java.net.URL;
/**
* API сервиса поставщика СМЭВ.
* Один экземпляр поставщика может обслуживать все запросы потребителей.
*/
public interface Server {
/**
* Поддерживаемвя ревизия.
*/
Revision getRevision();
/**
* Ссылка на ресур-описание WEB-сервиса. Ресурс должен быть внутри компонента.
*/
URL getWsdlUrl();
/**
* Обработка запроса потребителя.
* На каждый запрос потребителя может создаваться свой поток исполнения
* и в один момент времени может обрабатываться множество запросов.
*
* @param requestContext контекст текущего запроса.
* @return ответ потребителю
*/
ServerResponse processRequest(RequestContext requestContext);
/**
* Обработка состояния заявки.
* Вызывается из BPMN блока serviceTask в процессе исполнения.
*
* @param statusMessage текст сообщения из параметров BPMN.
* @param receiptContext конеткст исполнения заявки.
* @return подготовленный ответ с состоянием для сохранения в контексте цепочки запросов.
*/
ServerResponse processStatus(String statusMessage, ReceiptContext receiptContext);
/**
* Обработка результата заявки.
* Вызывается из BPMN блока serviceTask в процессе исполнения,
* либо по завершению исполнения заявки из BPMN блока endEvent.
*
* @param resultMessage текст сообщения из параметров BPMN.
* @param receiptContext конеткст исполнения заявки.
* @return подготовленный ответ с результатом для сохранения в контексте цепочки запросов.
*/
ServerResponse processResult(String resultMessage, ReceiptContext receiptContext);
}