====== 연계 서비스 API ======
===== 개요 =====
연계 서비스 API는 연계 서비스를 사용 및 제공하기 위한 interface를 제공한다.
===== 설명 =====
==== 구성 ====
연계 서비스 API는 다음과 같이 구성된다.
{{:egovframework:rte:itl:integration_service:integration_service_api_classdiagram_2.png|Integration Service API ClassDiagram}}
^ 구성요소 ^ 설명 ^
| [[#EgovIntegrationContext]] | 연계 서비스에 대한 설정 및 EgovIntegrationService 객체를 관리한다. |
| [[#EgovIntegrationMessage]] | 연계 서비스를 통해 주고 받는 표준 메시지를 정의한다. |
| [[#EgovIntegrationMessageHeader]] | 연계 서비스를 통해 주고 받는 표준 메시지 헤더를 정의한다. |
| [[#EgovIntegrationMessageHeader::ResultCode]] | 연계 서비스 결과 코드를 담고 있는 enumeration이다. |
| [[#EgovIntegrationService]] | 연계 서비스를 호출하기 위해 사용한다. |
| [[#Using sendAsync with Response|EgovIntegrationResponse]] | 연계 서비스를 비동기 방식으로 호출한 경우, 응답 메시지를 받기 위해 사용한다. |
| [[#Using sendAsync with Callback|EgovIntegrationServiceCallback]] | 연계 서비스를 비동기 방식으로 호출한 경우, 응답 메시지를 받기 위한 Callback interface이다. |
| [[#Using sendAsync with Callback|EgovIntegrationServiceCallback::CallbackId]] | 연계 서비스를 Callback을 이용한 비동기 방식으로 호출한 경우, 요청 메시지와 응답 메시지를 연결하기 위한 ID를 나타내는 interface이다. |
| [[#EgovIntegrationServiceProvider]] | 연계 서비스를 제공하기 위해 사용한다. |
==== EgovIntegrationContext ====
EgovIntegrationContext는 연계 서비스에 대한 설정 및 [[#EgovIntegrationService]] 객체를 관리한다. 연계 서비스를 사용하기 위해서는 EgovIntegrationContext의 getService 메소드를 사용하여 [[#EgovIntegrationService]] 객체를 얻어와야 한다.\\
아래는 주민등록번호와 성명을 이용하여 실명확인을 수행하는 예제이다.
package itl.sample;
import javax.annotation.Resource;
import egovframework.rte.itl.integration.EgovIntegrationContext;
import egovframework.rte.itl.integration.EgovIntegrationService;
public class EgovIntegrationSample
{
@Resource(name = "egovIntegrationContext")
private EgovIntegrationContext egovIntegrationContext;
public boolean verifyName(final String name, final String residentRegistrationNumber)
{
// 연계ID가 "INT_VERIFY_NAME"인 연계 서비스 객체를 얻어온다.
EgovIntegrationService service = egovIntegrationContext.getService("INT_VERIFY_NAME");
// 요청 메시지 생성
EgovIntegrationMessage requestMessage = service.createRequestMessage();
// 요청 메시지 작성
requestMessage.getBody().put("name", name);
requestMessage.getBody().put("residentRegistrationNumber", residentRegistrationNumber);
// 서비스 요청
EgovIntegrationMessage responseMessage = service.sendSync(requestMessage);
// 결과 return
return responseMessage.getBody().get("result");
}
}
위 예제에 해당하는 Metadata는 아래와 같다.
^ INTEGRATION ^^^^^^^
^ ID ^ PROVIDER_SERVICE_KEY ^ CONSUMER_SYSTEM_KEY ^ DEFAULT_TIMEOUT ^ USING_YN ^ VALIDATE_FROM ^ VALIDATE_TO ^
| 'INT_VERIFY_NAME' | 'SERVICE_VERIFY_NAME' | 'SYSTEM_CONSUMER' | 5000 | 'Y' | NULL | NULL |
^ ORGANIZATION ^^
^ ID ^ NAME ^
| 'ORG00001' | '요청 기관' |
| 'ORG00002' | '제공 기관' |
^ SYSTEM ^^^^^
^ SYSTEM_KEY ^ ORGANIZATION_ID ^ SYSTEM_ID ^ SYSTEM_NAME ^ STANDARD_YN ^
| 'SYSTEM_CONSUMER' | 'ORG00001' | 'SYS00001' | '요청 시스템' | 'Y' |
| 'SYSTEM_PROVIDER' | 'ORG00002' | 'SYS00001' | '응답 시스템' | 'Y' |
^ SERVICE ^^^^^^^^^
^ SERVICE_KEY ^ SYSTEM_KEY ^ SERVICE_ID ^ SERVICE_NAME ^ REQUEST_MESSAGE_TYPE_ID ^ RESPONSE_MESSAGE_TYPE_ID ^ SERVICE_PROVIDER_BEAN_ID ^ USING_YN ^ STANDARD_YN ^
| 'SERVICE_VERIFY_NAME' | 'SYSTEM_PROVIDER' | 'SRV00001' | 'VerifyName' | 'REQ_VERIFY_NAME' | 'RES_VERIFY_NAME' | 'serviceVerifyName' | 'Y' | 'Y' |
^ RECORD_TYPE ^^^
^ RECORD_TYPE_ID ^ RECORD_TYPE_NAME ^ PARENT_RECORD_TYPE_ID ^
| 'REQ_VERIFY_NAME' | 'RequestVerifyName' | NULL |
| 'RES_VERIFY_NAME' | 'ResponseVerifyName' | NULL |
^ RECORD_TYPE_FIELD ^^^
^ RECORD_TYPE_ID ^ RECORD_FIELD_NAME ^ RECORD_FIELD_TYPE_ID ^
| 'REQ_VERIFY_NAME' | 'name' | 'string' |
| 'REQ_VERIFY_NAME' | 'residentRegistrationNumber' | 'string' |
| 'RES_VERIFY_NAME' | 'result' | 'boolean' |
==== EgovIntegrationMessage ====
EgovIntegrationMessage는 [[#헤더부]], [[#바디부]], [[#첨부파일]]로 구성된다.
=== 헤더부 ===
EgovIntegrationMessage의 헤더부를 access 하기 위한 메소드는 아래와 같다.
^ Method Summary ^^
| [[#EgovIntegrationMessageHeader]] | getHeader() |
| void | setHeader([[#EgovIntegrationMessageHeader]] header) |
=== 바디부 ===
EgovIntegrationMessage의 바디부를 access 하기 위한 메소드를 아래와 같다.
^ Method Summary ^^
| Map | getBody() |
| void | setBody(Map body) |
EgovIntegrationMessage의 바디부는 다음 값들로만 구성될 수 있다.
* Java Primitive Type의 Wrapper 객체(Boolean, Byte, Short, Integer, Long, Float, Double)
* BigInteger, BigDecimal
* String
* Calendar
* List