커스터마이징
본 문서에서는 BXI 커스터마이징
에 대해 설명한다.
기관, 채널, 시스템의 인터페이스 처리시 발생되는 다양한 요건 수용을 위해 프로그램을 개발하고, 적용할 수 있다.
커스터마이징한 프로그램은 프로그램정보
에 등록해 사용자프로그램으로 사용할 수도 있고,
라우터로 등록해 플로우 처리 시 사용할 수도 있다.
이를 위해 별도로 전달되는 bxi.extension
를 통해 소스를 작성하고, 해당 프로그램을 등록한다.
프로그램 적용절차
- BXI서버에 배포한다.
기본설정관리 > 프로그램정보
를 이용하여 개발된 프로그램을 등록한다. 시스템프로그램여부는사용자프로그램
으로 등록하고, 프로그램용도는 개발한 프로그램 종류에 따라 달라진다. 또한, 프로그램클래스는 패키지를 포함해 입력한다. ex)bxi.extension.customizing.api.ErrorMessageCreate- 등록한 프로그램을 배포한다.
- 프로그램을 적용할 설정화면에 프로그램ID를 설정한다.
- 동적배포 사용 시 : 개발한 프로그램의
class
파일을 BXI서버에 업로드한다. 업로드 위치는 시스템파라미터의DYNAMIC_DEPLOY_PATH
에 설정한 위치이며,프로그램정보
의 배포버튼을 통해 엔진 재기동없이 배포할 수 있다. - 동적배포 미사용 시 :
bxi.extension-{version}.jar
로 빌드해 엔진의libs
에 업로드한다. 이 때, 엔진을 반드시 재기동해야 한다.
bxi.extension구조
bxi.extension.customizing.common
공통 프로그램이나 Utility프로그램이 위치할 패키지. 또한, 커스터마이징 프로그램에서 내부적으로 사용할 VO가 정의된 모델이 저장될 패키지이다.
bxi.extension.customizing.constant
Constant값을 정의한 프로그램이 위치할 패키지.
bxi.extension.customizing.api
bxi.api-{version}.jar의 인터페이스를 구현한 소스가 위치하는 패키지.
예를 들어 bxi.api-{version}.jar에 표준전문 처리와 관련된 API가 정의된 StandardCreateMessage 파일
이 있다면,
이 API를 구현한 소스는 bxi.extension.customizing.api
에 저장한다.
bxi.extension.customizing.process
org.apache.camel.Processor
API를 구현한 프로그램과 기타 사용자가 개발한 프로그램이 위치할 패키지
bxi.extension.customizing.router
인터페이스 처리를 위해 플로우에 추가할 라우터 프로그램이 위치할 패키지이다.
라우터 프로그램은 org.apache.camel.builder.RouteBuilder
를 상속받아 구현한다.
커스터마이징 프로그램에 다음과 같은 요소가 포함될 경우 정상 작동되지 않을 수 있으므로 개발할 때 제외하도록 한다.
@Slf4j
를 통한 로깅lambda
를 사용하는 로직(예. Functional inferface)
추가적으로 java.lang.NoClassDefFoundError
가 발생하면 해당하는 클래스의 재로딩 무시되어 동적배포가 이루어지지 않는다.
따라서 커스터마이징 프로그램 사용중에 NoClassDefFoundError
가 발생하여 재배포가 필요할 경우 엔진을 재기동한 뒤에 배포를 수행하여야 한다.