본문으로 건너뛰기

설정

AP to AP의 인터페이스 등록 절차는 아래와 같다.

1. 전문레이아웃 등록

전문레이아웃은 공통부, 개별부의 레이아웃을 등록 관리하는 기능이다.

공통부는 시스템별 공통전문이므로, 엔진설정 시 등록하게 된다. 개별부는 각 인터페이스 담당자가 전문관리 > 전문레이아웃 화면을 이용하여 등록한다.

전문레이아웃은 필드명, 타입, 길이 등의 정보를 포함하는 레이아웃 정보이다. 전문레이아웃 등록 시 반복부 항목이 별도 레이아웃을 가지고 있는 경우에는 하위 레이아웃을 만들어서 처리할 수 있다.

하위 전문레이아웃이 필요한 예는 아래와 같다.

하위 레이아웃

위의 예처럼 주소정보를 여러 개 관리하는 경우 먼저 우편번호, 주소, 상세주소를 가지는 AddrInfo를 레이아웃으로 등록한다. 그 다음 id, pw와 주소정보의 레이아웃인 AddrInfo를 포함하는 UserInfo레이아웃을 작성한다.

전문은 버전을 가지고 있는데, 업무변경으로 인한 인터페이스에 사용되는 전문레이아웃 ID단위로 변경된 내역을 관리하기 위하여 사용된다.

인터페이스의 전문레이아웃이 변경되었을때 기존 레이아웃정보를 수정하고 버전을 올려 등록하면, 전문레이아웃화면을 통해 현재버전 및 과거버전에 대한 변경내역을 확인할 수 있다.

등록절차

  1. 전문관리 > 전문레이아웃화면에서 그리드 우측 상단 버튼을 클릭하여 신규 전문레이아웃 등록화면을 실행한다.
  2. 우측상단의 행 추가 버튼을 클릭하여 전문의 각 필드항목 필드명 및 타입, 길이등을 설정하여 등록한다.

☑ 기본 정보

  • Version : 환경설정 > 레이아웃버전관리에 등록된 버전을 선택한다.
  • 대상스페이스명 : XML의 네임스페이스명을 입력한다. 미입력 시 레이아웃ID가 네임스페이스명이 된다.
  • Root엘리먼트명 : JSON이나 XML 전문의 Root 엘리먼트명을 입력한다. 미입력 시 레이아웃ID가 Root엘리먼트명이 된다.
  • 복사전문레이아웃 : 기등록된 전문레이아웃을 복사하여 새로운 레이아웃을 생성한다.

☑ 필드 정보

컬럼설명
엘리먼트명JSON이나 XML 전문에서 사용할 필드의 엘리먼트명을 의미한다. 입력하지 않으면 필드명이 엘리먼트명이 된다.
필드명필드의 영문명을 의미한다.
필드설명필드의 설명을 의미한다.
타입등록 가능한 데이터 타입은 Boolean, Byte 등이 있다. 해당 데이터 타입은 java의 데이터타입과 동일하며, 그 중 DTO선택의 경우 전문 레이아웃으로 등록된 레이아웃을 의미한다.
길이필드의 길이를 의미한다.
Offset필드의 Offset 값을 의미한다.
Decimal 길이필드의 소수점 이하의 길이를 의미한다.
Format해당 필드의 날짜, 시간과 관련된 포맷을 의미한다.
Array참조필드반복될 전문 레이아웃의 크기 값을 가진 필드명이나 또는 반복 횟수를 직접 입력하는 항목을 의미한다.
암복호화필드의 암복호화 사용여부를 의미한다. 암복호화 처리정보는 엔진설정 시 등록되고, 전문레이아웃에서는 사용여부를 선택한다.
코드변환필드의 코드변환 방식을 의미한다. ASCII, EBCDIC 등 인코딩, 디코딩에 사용할 코드변환 방식을 등록한다.
기본값필드가 null일 경우(입력되지 않은 경우)에 사용할 기본값을 의미한다.
정렬해당 필드의 정렬 방식으로 left, right 값 중 하나를 가진다. 타입이 String일 경우엔 left, int 등의 숫자일 경우엔 right가 기본값이 된다.
한글필드여부해당 필드가 전체 2Bytes 한글 필드 형식으로 되어 있는지 여부를 의미한다.

2. 인터페이스 등록

인터페이스 관리 > 온라인인터페이스화면을 이용하여 등록한다. 인터페이스ID, 인터페이스명은 인터페이스를 식별할 수 있는 값으로 설정한다. 각 구성항목에 대한 설명은 다음과 같다.

구성항목

☑ 기본정보

  • 기관코드 : 기관코드
  • 대외업무코드 : 기관에서 사용할 업무코드
  • 시스템코드 : 시스템코드
  • 대내업무코드 : 시스템에서 사용할 업무코드
  • 적용일자 : 해당 인터페이스를 적용할 날짜. 당일부터 실행하고자 하는 경우, 오늘 이전 날짜를 등록한다.
  • 서비스코드 : 호출 시 동일 URL을 사용하고, 공통부의 서비스코드를 사용하는 방식에서 공통부의 서비스코드의 값을 등록한다. 기본설정관리 > 시스템별업무에서 서비스호출구분코드가 URL방식이면 대신 컨텍스트URL을 설정할 수 있는데, 이는 URL 단위로 호출하는 방식일 때 호출 URL을 정의한다.
  • 동기여부 : 동기/비동기 방식에 대한 설정
  • 응답여부 : 응답유무 설정
  • 요청구분 : 대외기관에서 요청하는 거래면 대외요청, 대내시스템에서 요청하는 거래면 대내요청
  • 요청플로우 : FEP에서 요청처리 시 사용할 플로우
  • 응답플로우 : FEP에서 응답처리 시 사용할 플로우

☑ 전문정보

  • 요청전문레이아웃 : 송신시스템의 요청전문 레이아웃
  • 응답전문레이아웃 : 수신시스템의 응답전문 레이아웃
  • 요청공통부전문변환 : 요청전문의 공통헤더부를 변환하기 위한 변환정보
  • 응답공통부전문변환 : 응답전문의 공통헤더부를 변환하기 위한 변환정보
  • 요청개별부전문변환 : 요청전문레이아웃을 등록한 경우 전문을 변환하기 위한 변환정보
  • 응답개별부전문변환 : 응답전문레이아웃을 등록한 경우 전문을 변환하기 위한 변환정보

☑ 추가정보

  • 요청사용자프로그램 : 대내시스템의 대상서비스 또는 대외기관에 서비스를 요청하기 전에 특별한 처리가 필요한 경우 설정한다.
  • 응답사용자프로그램 : 대내시스템의 대상서비스 또는 대외기관에 응답을 전송하기 전에 특별한 처리가 필요한 경우 설정한다.
  • 거래제어구분 : 수신서비스의 장애 등의 사유로 인터페이스의 거래를 제어하고 싶은 경우에 사용된다. 거래제어가 되면 수신서비스로 전달되지 않고, 설정값에 따라 무응답처리나 에러응답처리를 할 수 있다. 에러응답프로그램은 엔진설정 시 정의된다.
  • 유량제어ID : 인터페이스에 적용할 유량제어 정책. 처리건수 방식을 지원한다.
  • 타임아웃시간(초) : 응답이 오지 않는 경우 타임아웃처리를 위한 시간설정
  • 타임아웃응답여부 : 타임아웃시 응답을 줄것인지 여부
  • 전송에러응답여부 : 전송에러나 타임아웃 발생시 에러응답 전문을 생성하여 요청기관으로 전송할것인지 여부
  • 지연응답전송여부 : 타임아웃 처리 후에 응답을 수신한 경우, 대내시스템에 전송할 것인지 여부
  • 플로우처리로깅여부 : 라우터 입출력에 대해서 로깅할것인지 여부
  • 루트엘리먼트명 : 전문마샬시 바디의 루트엘리먼트명이 data가 아닌 해당 루트엘리먼트명으로 전환

위의 설명한 항목 중 인터페이스 처리상세 유형 및 요청/응답 전문레이아웃의 위치는 아래에서 자세하게 설명한다.

요청/응답 전문레이아웃의 위치

요청/응답 전문레이아웃 등록

전문레이아웃은 요청전문레이아웃과 응답전문레이아웃을 등록한다. 요청전문레이아웃은 그림에서 1번에 해당하고, 응답전문레이아웃은 위의 그림에서 2번에 해당한다.

3. 거래변환정보 등록

인터페이스ID란 인터페이스 식별을 위한 유니크한 ID인데, 대외기관의 공통부에는 내부전문에서 사용하는 인터페이스ID가 포함되지 않는다.

따라서, FEP는 인터페이스ID를 식별하기 위해 기관 공통부(공통헤더)의 전문종별코드, 전문업무구분코드 필드 값을 이용하여 인터페이스ID를 식별한다. 전문종별코드, 전문업무구분코드 필드명은 공통헤더정보에 설정하며, 거래변환정보는 요청거래변환정보, 응답거래변환정보로 구분된다.

거래변환정보 등록은 인터페이스관리 > 온라인거래변환정보를 통해 등록한다.

요청/응답 전문레이아웃 등록

  • 요청거래변환정보: 기관 송신 시 기관의 요청전문의 인터페이스 식별을 위한 설정이다.
  • 응답거래변환정보: 시스템 송신 시 기관의 응답전문의 인터페이스식별을 위한 설정이다.

4. 전문변환 등록

FEP는 기관전문과 내부전문이 상이하므로, 기관전문과 내부전문간 변환을 수행한다.

전문변환은 요청과 응답에 대해서 각각 이루어진다. 따라서, 전문변환 등록 시 요청과 응답에 대해서 각각 전문변환 정보를 등록해야 한다. 요청/응답 구분 및 입력/출력 전문 설명

전문변환은 입력전문을 출력전문으로 변환하는 정보를 등록하는 것이므로, 전문관리 > 전문변환에서 입력과 출력전문을 선택하고 매핑정보를 등록한다. 전문변환은 입력과 출력전문을 항목을 매핑하는 기능 외에도 출력전문에 상수나 시스템일자 등을 설정할 수 있다.

등록과정

  1. 전문관리 > 전문변환에서 전문변환종류를 각각의 전문변환 타입으로 선택한다.
  2. 공통부 전문변환 혹은 개별부 전문변환의 경우, 요청응답구분코드를 요청이나 응답을 선택한다.
  3. 전문변환 대상 입력레이아웃과 출력레이아웃을 등록한 후, 1:1매핑 버튼을 눌러 매핑한다.
  4. 정보등록이 완료되면 저장버튼을 눌러 완료한다.
정보

전문변환에 등록된 매핑정보 외에 추가적인 매핑이 필요한 경우, 사용자프로그램을 호출해 매핑할 수 있다. 전문변환에 등록된 매핑 이후 호출된다.

전문변환 종류

공통부 전문변환

기관전문의 공통부(기관공통헤더부)를 내부전문의 공통부(표준공통헤더부)로 변환한다. 공통부 변환 정보는 요청과 응답에 대해 인터페이스별로 정의한다.

개별부 전문변환

개별부 전문변환은 입력으로 수신한 전문의 개별부에 해당하는 부분을 서비스 입력의 개별부에 맞게 변환(매핑)하는 것을 말한다. 요청, 응답의 전문변환을 각각 등록해야 한다.

반복부 전문변환

반복부 전문변환은 재사용 가능한 하위 전문레이아웃을 대상으로 전문변환을 등록하는것을 말한다. 등록된 반복부 전문변환 정보는 재사용할 수 있다.

매핑정보

컬럼설명
속성명입력 레이아웃의 필드명 중 하나를 선택한다. 출력 레이아웃의 필드에 선택한 입력 레이아웃의 필드 데이터가 저장된다.
상수특정 상수값을 입력한다. 출력 레이아웃의 필드에 입력한 상수 값이 저장된다.
스페셜워드스페셜 워드의 의미에 따라서 값을 설정한다. 예를 들어 GUID를 선택하면 출력 레이아웃의 필드에 생성된 GUID값이 저장된다. 현재 기본 스페셜워드는 GUID만 있다. 자세한 내용은 사용자 스페셜 워드 처리 방법을 참조한다.
시스템데이트현재 일자나 시간의 포맷을 목록에서 선택한다.
스크립트입력 값에 대한 보정이 필요할 경우 해당 script를 입력한다. 자세한 내용은 스크립트를 참조한다.
서브매핑서브 레이아웃인 경우 반복부 전문변환에서 등록한 서브매핑을 선택한다.
변환없음해당 출력 레이아웃 필드에 데이터가 저장되지 않는다.

☑ 사용자 스페셜 워드 처리 방법

사용자가 정의한 스페셜 워드 처리 방식은 사용자 프로그램을 이용하여 처리한다.

사용자는 사용자 스페셜 워드를 처리할 프로그램을 개발하고 스페셜 워드를 정하여 specialword.properties에 등록한다. 사용자 스페셜 워드는 워드별로 유니크한 이름으로 등록해야 한다.

사용자 스페셜 워드 등록 과정은 아래와 같다.

  1. 사용자 스페셜 워드를 처리할 프로그램을 스프링 빈 프로그램으로 개발한다.
  2. 기본설정관리 > 프로그램정보에서 개발한 프로그램을 등록한다.
  3. specialword.properties파일에 스페셜 워드와 사용자 프로그램을 매핑하여 등록한다. 아래는 사용자 스페셜 워드를 등록한 예제이다.
${BXIHOME}/config/specialword.properties
# Special word for message transformation
# form: upper case special word=user bean program id
#
SEQUENCE_NO=customSequenceNumber

☑ 스크립트

설정값설명
substring문자열을 분리한다. ex) txCode.substring(1,4)
toUpperCase문자열을 대문자로 변환한다. ex) txCode.toUpperCase()
toLowerCase문자열을 소문자로 변환한다. ex) txCode.toLowerCase()
lpad문자열의 왼쪽을 주어진 숫자만큼 패딩한다. 패딩할 문자열이 지정되지 않은 경우 0으로 패딩한다. ex) txCode.lpad(10,A), txCode.lpad(10)
rpad문자열의 오른쪽을 주어진 숫자만큼 패딩한다. 패딩할 문자열이 지정되지 않은 경우 0으로 패딩한다. ex) txCode.rpad(10), txCode.rpad(10,A)
value입력 레이아웃의 데이터를 특정 값으로 변환한다. 오른쪽 예시는 txCode의 값이 source1인 경우엔 target1, source2인 경우에는 target2로 변환한다. ex) txCode.value(source1=target1, source2=target2)