xit-lntris-interface란?
지방 세외수입 연계시스템으로
- 지방 세외수입 개별시스템
- 지방 세외수입 특화시스템 연계를 지원한다.
스프링부트 애플리케이션이므로 설치 후 즉시 실행할 수 있다.
설치
배포파일(xit-lntris-interface.zip)을 원하는 디렉토리에 압축을 풀면 다음과 같은 레이아웃으로 설치된다.
|
데이터베이스
데이터베이스 생성
sql/xit-lntris-xxx.sql 파일을 실행해, 데이터베이스 테이블을 생성한다.
NVL vs IFNULL
- 마리아DB의 경우 버젼에 따라 NVL 함수를 지원하지 않는 경우가 있다.
- 이 경우 다음 스크립트를 실행해 NVL 함수를 생성한다.
DELIMITER $$
CREATE FUNCTION NVL(IP_DATA VARCHAR(100), IP_CONVERT VARCHAR(100)) RETURNS VARCHAR(100)
BEGIN
DECLARE RTN_DATA VARCHAR(100);
SET RTN_DATA := IFNULL(IP_DATA, IP_CONVERT);
RETURN RTN_DATA;
END $$
DELIMITER ;
설정
xit-lntris-interface가 올바로 동작하려면 다음 사항들을 설정한다.
- 웹애플리케이션 이름, 포트
- 데이터베이스 접속 정보
- 지역 자치단체 및 시스템 정보
- 파일작업 정보
- 데이터 암호화 정보
application.yml
웹애플리케이션 이름, 포트 설정
server:
port: 포트번호(18080)
servlet:
context-path: 이름(/)
데이터베이스 설정
sql:
init:
platform: mariadb 또는 oracle(해당 내용만 지정)
datasource:
hikari:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jdbc-url: '데이터베이스별 jdbc url' 참고
username: 사용자 아이디
password: 사용자 비밀번호
auto-commit: false
데이터베이스별 jdbc url
* Maria DB: jdbc:log4jdbc:mariadb://호스트:포트/DB이름?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Seoul&useSSL=false&autocommit=false
* Oracle: jdbc:log4jdbc:oracle:thin:@호스트:포트:SID
lntris.conf
{
"useDatabase": true, /* 데이터베이스 사용여부 */
"sendRequest": true, /* 연계 요청 여부 */
"locals": [
{"organization": "4060000", /* 지역 자치단체 코드(7자리) */
"systems": ["DPV"] /* 지역 시스템 코드(3자리) */
}
],
"remote": {
"organization": "1741000", /* 지방세외수입 기관 코드(7자리) */
"systems": ["NIS"], /* 지방세외수입 시스템 코드(3자리) */
"urls": {
"basic": "https://10.60.75.57:22411/mediate/ltis", /* 연계(개별) 운영 url */
/*"basic": "https://10.60.75.138:22411/mediate/ltis", /* 연계(개별) 검증 url */
"special": "https://10.60.75.57:32411/mediate/ltis" /* 연계(특화) 운영 url */
}
}
}
지역 자치단체와 시스템이 여럿일 경우 다음과 같이 한다.
"locals": [
{"organization": "4060000", /* 지역 자치단체 코드(7자리) */
"systems": ["DPV"] /* 지역 시스템 코드(3자리) */
},
{"organization": "4060000", /* 지역 자치단체 코드(7자리) */
"systems": ["PVS"] /* 지역 시스템 코드(3자리) */
}
]
file-job.conf
파일 수신과 전송을 위한 작업 디렉토리를 설정한다. (file-job.conf 설정 참고)
ESB 수신파일과 전송파일의 최상위 디렉토리와 작업파일을 위한 디렉토리를 다음 항목에 설정한다.
"dirs": {
"receive": "…", /* 수신 파일 최상위 디렉토리 */
"send": "…", /* 전송 파일 최상위 디렉토리 */
"working": "…", /* 파일 작업 최상위 디렉토리 */
"success": "…", /* 작업 완료한 파일의 최상위 디렉토리 */
"fail": "…" /* 작업 실패한 파일의 최상위 디렉토리 */
}
수신/전송파일 최상위 디렉토리 아래에 위치하는 차세대 지방 세외수입 시스템 디렉토리를 다음 항목에 설정한다.
"dirCodes": {
"lntris": "..." /* 차세대 지방 세외수입 시스템 */
}
시스템은 "dirs" 항목과 "dirCodes" 항목에 설정된 값을 조합하여 연계대상 시스템별 수신/전송파일의 최상위 디렉토리 경로를 알아낸다.
예) "dirs": {
"receive": "files/ESB_AGENT/RCV",
"send": "files/ESB_AGENT/SND",
},
"dirCodes": {
"lntris": "1741000NIS" /* 차세대 지방 세외수입 시스템 */
},
위와 같이 설정할 경우 차세대 지방 세외수입 시스템의
- 수신파일 디렉토리는 files/ESB_AGENT/RCV/1741000NIS
- 전송파일 디렉토리는 files/ESB_AGENT/SND/1741000NIS 이 된다.
"receiptDates" 항목을 설정하면 수신파일 처리 시 수신일수를 지정할 수 있다.
- 지정하지 않으면 해당 디렉토리의 모든 파일을 처리한다.
- 0: 처리 당일에 받은 파일을 처리한다.
- -n: 당일 포함 n일 전까지 받은 파일을 처리한다.
다음은 모든 수신파일의 수신일수를 당일 포함 4일 전까지 처리하도록 하는 예다.
"defaults": {
...
"receiptDates": -4
...
}
특정 업무의 수신파일에 대해 다른 수신일수를 지정하려면, 해당 업무의 설정에 "receiptDates" 항목을 추가한다.
다음은 과태료 대장 전일자 변동자료 파일의 수신일수를 2일 전까지로 하는 예다.
"jobs": [
...
{ /* 과태료 대장 등록자료 일괄조회(전일자 변동자료) */
"name": "lntrisA02",
"dirCode": "lntris", /* <-- dirCodes */
"receiptDates": -3
}
...
]
"receiptCount" 항목을 설정하면 수신파일 처리 시 한 번에 처리하는 파일수를 지정할 수 있다.
- 지정하지 않거나 1보다 작으면 해당 디렉토리의 모든 파일을 처리한다.
- 0보다 크면 지정한 수의 파일씩 가져와 처리한다.
다음은 모든 수신파일 처리건수를 1건씩 처리하도록 하는 예다.
"defaults": {
...
"receiptCount": 1
...
}
특정 업무의 수신파일에 대해 처리건수를 다르게 지정하려면, 해당 업무의 설정에 "receiptCount" 항목을 추가한다.
다음은 과태료 대장 전일자 변동자료 파일을 2건씩 처리하게 하는 예다.
"jobs": [
...
{ /* 과태료 대장 등록자료 일괄조회(전일자 변동자료) */
"name": "lntrisA02",
"dirCode": "lntris", /* <-- dirCodes */
"receiptCount": 2
}
...
]
context-scheduler.xml
업무별 수신/전송 파일작업 스케쥴을 설정한다.
업무별 파일작업의 스케쥴은 <bean id=”XXXTrigger” …/> 항목의 “cronExpression” 프로퍼티로 설정한다.
cronExpression 설정 참고: https://fmd1225.tistory.com/60
xit-crypto.conf
전문 요청 수신
이용기관은 지방 세외수입 개별시스템에서 다음 요청을 실시간으로 수신한다.
- D03 - 부과결과 정보
- D04 - 부과취소 정보
- D05 - 수납정보
- D06 - 감액정보
위 요청에 대한 응답을 제공하려면
- SSL(https) 통신을 활성화하고
- 수신 URL을 지방 세외수입 개별시스템 측에 제공한다.
SSL 활성화 설정
- application.yml 파일의 server.ssl.enabled를 true로 설정한다.
- 설치 위치/ssl 디렉토리의 파일들은 자체적으로 발급한 키 및 인증서들이다.
- 필요 시 인증기관에서 키와 인증서를 발급받고 server.ssl 항목에 설정한다.
수신 URL
- https://호스트:포트 또는 도메인/intf/lntris
- 위 url로 수신한 요청은 헤더를 확인 후 자체 분기하여 처리한다.
시작과 종료
xit-lntris-interface를
- 시작하려면 xit-lntris-interface.bat를 실행한다.
- 종료하려면 xit-lntris-interface 실행 콘솔에서 Ctrl+Z키를 누른다.
xit-lntris-interface.bat는
- 디폴트로 현재 로그파일(xit-lntris-interface.log)을 삭제하고 시작한다.
- 기존 로그파일에 이어서 로그를 저장하려면 해당부분의 코드를 제거한다.
연계 테스트
시스템은 swagger로 테스트를 실행할 수 있다.
시스템을 테스트하려면
- 시스템을 시작한다.
- 웹브라우저를 시작하고, http://호스트:포트/swagger-ui/index.html 페이지를 연다.
- 예) http://localhost:18080/swagger-ui/index.html 또는
- SSL이 적용되었으면 https://호스트:포트/swagger-ui/index.html
- 예) https://localhost:18080/swagger-ui/index.html
- 테스트 하려는 업무를 클릭한다.
- “Try it out” 버튼을 클릭하고 “Request body”에 요청정보를 입력한 후 “Execute” 버튼을 클릭한다.
전문별 테스트는 지방 세외수입 특화시스템 요청 참고