개요
X-UP에서 개발 된 모든 모델에 공통적으로 Logging을 적용하는 방법에 대해 알아봅니다.
X-UP Global Event :
X-UP에서 제공하는 모델 내의 Event 항목들을 전역적으로 적용할 수 있습니다. 모델의 start(), end() 항목 혹은 Invoke에서 제공하는 onBegin(), onEnd(), onExceptionOccured() 등의 항목을 공통적으로 적용할 수 있습니다.
X-UP Global Event를 통해 다음과 같은 작업들을 처리할 수 있습니다.
Automation 모델의 시작과 종료 처리작업 (로깅, 세션 처리, 성능측정 등)
모델 호출 시 사용되는 데이터소스의 Connection 관련 처리
Invoke의 시작과 종료 처리 작업
예외 발생 시 처리 작업
본 문서는 동영상을 기반으로 작성되었습니다.
필요 사항
X-UP Global Event를 이용하여 모든 모델에 Logging 적용하기
X-UP 모델을 개발하고 개발 된 모델에 Logging을 하기 위하여 다음과 같이 개발을 수행합니다.
1X-UP Global Event 생성하기
2Event 적용 대상 설정하기
3User Class 작성하기
4테스트하기
5서버에 배포하기
이 장에서는 DB Select Invoke를 이용한 모델 개발하기의 DB 데이터 조회 모델 개발하기를 참고 합니다.
Review
X-UP Global Event 생성하기
Create Global Event icon[](1) 혹은 메뉴의 [X-UP > Create Global Event] (2) 을 선택하여 Global Event를 생성합니다.
X-UP Global Event는 도메인별로 정의 됩니다.
Event 적용 대상 설정하기
Logging 을 하기 위해 TargetClass는 AutomationLogic, TargetMethod는 start를 선택하고 user.globalEvent.AutomationModelTracer라는 Class를 생성합니다.
Name | Description | ||
---|---|---|---|
ID | Global Event 별 고유한 식별자입니다. | ||
TagetClass | Event를 적용하고자 하는 대상입니다. X-UP에서 적용가능한 대상은 Automation모델, Invoke별 FlowEvent, 데이터소스 연결을 위한 DataSourceEvent 입니다. | ||
TargetMethod | Event를 적용하고자 하는 대상의 Method를 지정합니다. 적용되는 대상 별 Event 는 다음과 같습니다. | ||
TargetClass | TargetMethod | Description | |
AutomationLogic | start | 모델이 실행될 경우 적용가능한 Event | |
end | 모델이 종료되기 직전 적용 가능한 Event | ||
XXXFlowEvent | onBegin | Invoke가 실행될 경우 적용 가능한 Event | |
onEnd | Invoke가 종료되기 직전 적용 가능한 Event | ||
onExceptionOccured | Invoke 실행 중 예외가 발생할 경우에 적용 가능한 Event | ||
XXXDataSourceEvent | onBeforeExecute | 데이터소스를 통해 Legacy와 연결을 맺기 직전에 적용가능한 Event | |
onAfterExecute | 데이터소스를 통해 Legacy와 연결을 맺은 직후에 적용 가능한 Event | ||
UserClass | Event에 적용되는 Business Logic을 삽입합니다. TargetClass 별 class를 생성하거나 혹은 선택할 수 있습니다. |
Package 구성에 따라 TargetClass와 TargetMethod는 항목이 변경될 수 있습니다.
User Class 작성하기
Logging을 위한 구문을 추가합니다.
package user.globalEvent; import com.nexacro.xup.aop.intercept.interceptor.AutomationModelInterceptor; import com.nexacro.xup.ParameterSet; import com.nexacro.xup.component.automation.AutomationFailException; public class AutomationModelTracer extends AutomationModelInterceptor { public void start(ParameterSet globalParameterSet)throws AutomationFailException { log("DEBUG", "AutomationModel start. data=["+globalParameterSet.getDebugInfo()+"]"); } }
Class 명칭, Method 명칭, 입력 아규먼트의 명칭을 변경해서는 안됩니다.
테스트하기
Global Event가 적용되었는지를 테스트하기 위해 모델을 실행합니다. 테스트를 수행 할 경우 Console 창에서 Logging 된 데이터를 확인할 수 있습니다.
2015/02/16 11:26:08.657 [main] DEBUG AOP : AutomationModelTracer : AutomationModel start. data=['ename(ename)'='S', 'employees(employees)'='[name='employees', rowCount=0,
schema=[
EMPNO(PLATFORM.int, 4),
ENAME(PLATFORM.string, 10),
JOB(PLATFORM.string, 9),
MGR(PLATFORM.int, 4),
HIREDATE(PLATFORM.date, 7),
SAL(PLATFORM.int, 7),
COMM(PLATFORM.int, 7),
DEPTNO(PLATFORM.int, 2)
],
row=[
]]']