6.모든 모델에 공통 모듈 적용하기

Edit

6.1개요

X-UP에서 개발 된 모든 모델에 공통적으로 Logging을 적용하는 방법에 대해 알아봅니다.

X-UP Global Event :

X-UP에서 제공하는 모델 내의 Event 항목들을 전역적으로 적용할 수 있습니다. 모델의 start(), end() 항목 혹은 Invoke에서 제공하는 onBegin(), onEnd(), onExceptionOccured() 등의 항목을 공통적으로 적용할 수 있습니다.

X-UP Global Event를 통해 다음과 같은 작업들을 처리할 수 있습니다.


  • Automation 모델의 시작과 종료 처리작업 (로깅, 세션 처리, 성능측정 등)

  • 모델 호출 시 사용되는 데이터소스의 Connection 관련 처리

  • Invoke의 시작과 종료 처리 작업

  • 예외 발생 시 처리 작업

본 문서는 동영상을 기반으로 작성되었습니다.

6.2필요 사항

6.3X-UP Global Event를 이용하여 모든 모델에 Logging 적용하기

X-UP 모델을 개발하고 개발 된 모델에 Logging을 하기 위하여 다음과 같이 개발을 수행합니다.

1X-UP Global Event 생성하기

2Event 적용 대상 설정하기

3User Class 작성하기

4테스트하기

5서버에 배포하기

이 장에서는 DB Select Invoke를 이용한 모델 개발하기DB 데이터 조회 모델 개발하기를 참고 합니다.

그림 6-1X-UP Global Event 적용

6.4Review

6.4.1X-UP Global Event 생성하기

Create Global Event icon[](1) 혹은 메뉴의 [X-UP > Create Global Event] (2) 을 선택하여 Global Event를 생성합니다.

X-UP Global Event는 도메인별로 정의 됩니다.

6.4.2Event 적용 대상 설정하기

Logging 을 하기 위해 TargetClass는 AutomationLogic, TargetMethod는 start를 선택하고 user.globalEvent.AutomationModelTracer라는 Class를 생성합니다.

표 6-1X-UP Global Event 설정항목

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는 항목이 변경될 수 있습니다.

6.4.3User 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 명칭, 입력 아규먼트의 명칭을 변경해서는 안됩니다.

6.4.4테스트하기

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=[
]]']