X-UP은 다양한 데이터소스에서 데이터를 가공하여 새로운 데이터셋으로 쉽게 생성하기 위한 프레임워크입니다.
X-UP은 크게 X-UP 모델, X-UP 빌더, X-UP 서버 세 가지 기술로 분류합니다. 이 장에서는 X-UP의 세 가지 기술과 관리자 서비스인 X-UP Administrator에 대해 설명합니다.
X-UP 모델
데이터셋을 수집하고 융합하기 위해서는 메타데이터라 칭하는 다양한 정보들이 설정되어야 하고, 더불어 각 값을 결정하기 위한 비즈니스 로직이 정의되어야 합니다. 데이터셋을 수집하고 융합하기 위한 메타데이터와 사용자 로직을 통칭하여 하나의 'X-UP 모델'이라고 칭합니다.
X-UP 모델은 실제 매쉬업을 위한 메타정보와 로직을 담고 있으며, X-UP 빌더를 이용하여 개발합니다. X-UP 빌더에서 개발된 X-UP모델은 X-UP 서버에 배치되고, 외부에서 X-UP 서버에 구동을 요청하면 X-UP 서버는 해당 모델을 구동시킵니다.
X-UP에서의 모든 동작은 X-UP 모델 단위로 이루어집니다. X-UP 빌더에서 X-UP 모델 단위로 개발하고 배치하며, 외부에서의 요청 또한 X-UP 모델 단위로 처리됩니다. 예를 들어 'Cat'이라는 Automation 모델을 개발하고 이를 X-UP 서버에 배치한 후에는, 외부에서 'Cat'이라고 지칭하는 모델로부터 데이터를 수집하고 처리하여 결과를 받습니다.
X-UP 모델은 다양한 데이터소스를 사용할 수 있으며 데이터소스로부터 원시 데이터를 수집하는 방법을 정의할 수 있습니다. 그리고 수집한 원시 데이터를 정형화된 데이터셋으로 변환하는 방법을 정의하거나 복수의 데이터셋을 하나의 데이터셋으로 융합할 수 있습니다. 필요한 경우, X-UP 사용자는 X-UP 모델에 데이터 수집 또는 융합에 필요한 임의의 로직을 추가할 수 있습니다.
도메인(Domain)
X-UP에서 도메인이란 하나의 프로젝트를 칭합니다.
X-UP 모델은 각 도메인으로 구별합니다. 예를 들어 petStore 도메인에 Order라는 모델이 있고, flowerStore 도메인에 Order라는 모델이 있을 경우 두 모델은 별개의 것으로 처리됩니다. 두 모델의 이름은 같지만 두 모델은 서로 다른 도메인에 속한 것으로 'petStore의 Order'와 'flowerStore의 Order'로 구별됩니다. 따라서 외부 애플리케이션이 X-UP을 호출할 때는 반드시 도메인의 이름과 X-UP 모델의 이름을 같이 명시하여야 합니다.
X-UP 빌더에 의하여 X-UP 프로젝트가 생성되면 대상 도메인의 이름을 설정할 수 있습니다. X-UP 빌더에 의하여 생성된 X-UP 프로젝트는 도메인에 해당합니다. 하나의 X-UP 프로젝트에는 복수의 도메인이 있을 수 없고, 하나의 도메인을 복수의 X-UP 프로젝트가 공유할 수 없습니다. 만약 서로 다른 X-UP 프로젝트가 같은 도메인 이름을 사용하고 같은 X-UP 서버에 배치된다면, 두 프로젝트의 X-UP 모델들이 전부 배치되는 것이 아니라 나중에 배치된 모델이 앞서 배치된 모델을 덮어쓰게 됩니다.
오토메이션 모델(Automation Model)
Automation Model은 X-UP 모델의 한 종류이며, GUI 에디터를 이용하여 하나의 서비스에 해당하는 로직을 다이어그램으로 표현합니다. 표현된 각각의 다이어그램은 invoke라고 하며 임의의 데이터 소스로부터 데이터를 획득합니다. 데이터를 획득 하기 위한 데이터 정보는 X-UP Builder의 에디터와 Properties View를 이용하여 작성하게 됩니다. 그리고 Automation 모델을 저장하게 되면 java 클래스 코드가 자동으로 생성이 되며 GUI에디터에서 모델을 수정하게 되면 자동으로 클래스 코드에 반영되게 됩니다.
메타데이타(MetaData)
X-UP 모델이 동작하기 위한 다양한 설정 정보를 저장합니다. X-UP 서버는 모델을 로드할 경우 메타데이터를 기준으로 모델을 로드하게 되며, 해당 정보를 토대로 실제 모델이 동작하기 위한 로직 클래스를 로드하여 동작하게 됩니다. 또한 메타데이터에는 모델의 버전에 대한 관리 및 Charset과 입출력에 대한 스키마 정보를 가지고 있어 Nexacro 어플리케이션과 연동을 위한 인터페이스 정보를 제공합니다.
로직 클래스(Logic Class)
X-UP 모델의 실제 동작은 로직을 담고 있는 java 클래스를 호출하여 이루어 집니다. X-UP Builder는 이러한 java 클래스 소스를 자동생성하며, 이 java 파일이 컴파일 되어 X-UP Server에 배치됩니다. 대부분의 경우 자동 생성된 java 클래스를 수정할 필요 없이 모델의 개발을 완료할 수 있습니다. 그러나 때에 따라서는 X-UP Builder의 기능만으로는 원하는 로직을 구현하지 못하는 경우도 있습니다. 이럴 때는 자동 생성된 java 파일을 직접 수정하여 구현하면 됩니다.
모델 위자드에 의하여 X-UP 모델을 생성하면 각 X-UP 모델의 타입에 따라 java 파일이 자동 생성됩니다. 예를 들어 모델의 이름이 “Cat”이라면 Automation 모델은 CatAutomationLogic.java 파일이 생성됩니다. 이와 같이 생성된 java 파일을 수정하여 원하는 로직을 구현할 수 있습니다.
X-UP 서버
X-UP 서버는 배치된 X-UP 모델을 구동하는 서버이며 웹 애플리케이션으로 동작합니다. X-UP 빌더에서 개발하는 것은 데이터의 수집, 융합, 가공을 위한 로직일 뿐 실제 기능은 X-UP 서버에서 실행합니다. X-UP 서버는 X-UP에서 제공되는 각 서비스에 대해 Bundle 형태로 구성되어 있습니다.
X-UP 서버가 지원하는 환경은 다음과 같습니다.
name | description |
---|---|
OS | Windows, Unix, Linux (X-UP 빌더의 경우 Window만 지원) |
JVM | JAVA 1.7 이상 지원 |
WAS | JAVA 1.7 이상 지원하는 WAS는 기본적으로 지원 Apache Tomcat, IBM Websphere, Oracle WebLogic, TmaxSoft JEUS |
Database | Hana 1.0, MySQL 5.0, MSSQL 서버 2000, 2005, 2008, ORACLE 8i, 9i, 10g, 11g, DB2 9.0 JDBC를 제공하는 데이터베이스 전체 지원 예정 |
SAP | SAP RFC로 ERP(R/3) 및 BI(BW) 지원 |
Cobol | Visual Cobol 2.2 이상 지원 |
OData | OData Version2.0 지원 |
설치
X-UP 서버를 만들기 위한 WAS를 설치합니다. 본 매뉴얼에서는 apache-tomcat-6.0.35 버전을 사용해 테스트했습니다.
내려받은 apache-tomcat-6.0.35.zip을 C 드라이브에 압축 해제합니다.
xup.war 파일을 압축이 해제된 tomcat의 기본 Host의 appBase 인 webapps 디렉터리에 복사합니다.
Tomcat을 재기동하면 webapps 폴더에 xup 폴더가 생성됩니다.
서버 라이선스를 등록합니다. 방법은 아래 라이선스 등록을 참조하세요.
X-UP 서버 파일 구조
X-UP 서버의 파일 구조는 다음과 같습니다. 본 매뉴얼에서는 WAS로 Tomcat을 사용합니다. 아래 그림은 Tomcat WAS 아래에 webapps > xup > WEB-INF > xup 하위의 파일 구조입니다.
Name | Description |
---|---|
conf | conf 폴더는 X-UP 서버의 환경설정 파일들을 가지고 있습니다. X-UP 서버 라이선스 파일이 필요하다면 conf 폴더 안에 위치하도록 합니다. |
doc | X-UP 가이드 문서와, 배포 내역, javadoc 등의 문서를 포함합니다. |
lib | X-UP 서버의 라이브러리입니다. 해당 폴더 아래에는 bundle 폴더와 core 폴더로 구분되어져 있습니다. |
log | X-UP 서버에 대한 로그가 해당 폴더 아래에 생성됩니다. |
manage | X-UP 관리자에 대한 데이터베이스 정보를 가집니다. |
model | X-UP 빌더를 통해 개발 된 X-UP 모델이 위치합니다. |
license.txt | 라이선스 동의 문서입니다. |
라이선스 등록
X-UP 기능을 정상적으로 사용하기 위해서는 라이선스를 등록해야 합니다. Tomcat, Weblogic등 WAS 위에 설치된 X-UP 서버의 라이선스 적용에 관해 설명합니다.
WAS에 X-UP을 설치합니다.
제품구매 시 발급받은 라이선스 파일(X-UP_서버_License.xml)을 conf 폴더에 복사합니다.
WAS를 재기동합니다.
Bundle 설치 및 제거
Bundle이란 X-UP Core에서 동작할 수 있는 Invoker 혹은 데이터소스와 같은 모듈 단위를 지칭합니다.
X-UP에서 제공하는 Bundle의 유형은 다음과 같습니다.
DataSource Type : 데이터소스를 이용하여 외부와 Connection을 연결하고 원시데이터를 획득하는 주체
Invoker Type : 데이터소스 타입의 Bundle을 이용하여 획득한 데이터를 가공하여 X-UP 빌더 사용자가 지정한 흐름에 맞게 서비스를 실행하는 주체
Sub Type으로는 Gatherer와 Invoker 두 가지 형태로 제공됩니다.
데이터소스 타입의 Bundle에서 생성되는 Connection은 Pool을 통하여 일원화된 관리체계를 가지고 있습니다.
Bundle 설치
X-UP 구동 시 Core에 의하여 자동으로 Bundle이 설치됩니다.
Bundle 버전과 Engine(X-UP 서버 Engine) 버전을 이용하여 버전이 변경되지 않는 한 X-UP 구동 시 최초 한 번만 압축을 해제합니다.
Bundle 제거
Bundle의 Uninstall의 경우 Bundle 폴더와 압축파일을 제거하면 Uninstall이 수행되게 됩니다.
Bundle Repository
제공 된 Bundle 은 압축 해제 시 다음과 같은 폴더 구조를 가지게 됩니다.
conf : Bundle 이 구동 시 필요한 설정 정보를 가진 bundle_config.xml 이 위치합니다.
추가 적으로 xup_config.xml 에 Bundle 설정 정보를 위치시켜도 설정이 적용됩니다.
설정의 우선 순위는 bundle_config.xml < xup_config.xml 입니다.
lib : Bundle에 필요한 Dependency 라이브러리가 위치합니다. 각 Bundle 은 별도의 ClassLoader 로 로딩되어 Library 사용의 독립성이 보장됩니다.
META-INF : Bundle 메타파일 정보가 기록된 MANIFEST.MF 파일이 위치합니다.
Name | Description |
---|---|
Bundle Adaptor | Bundle이 동작하기 위한 구현체 ex) Invoker, DataSource |
bundle Id | Bundle의 명칭 (xup_cofing.xml에 기록된 Bundle의 id와 매칭됩니다.) |
Bundle Core Jar Name | Bundle의 Core Jar 이름 |
Bundle Implementation Jar Name | 외부에 노출된 클래스 파일입니다. |
Bundle Version | Bundle을 관리하기 위한 버전 |
Engine Version | Bundle에 최적화된 Engine버전 |
X-UP 빌더
X-UP 빌더는 X-UP모델을 개발하는 개발도구 입니다.
X-UP 사용자는 X-UP 빌더를 사용하여 쉽고 빠르게 X-UP 모델을 개발하고 이를 서버에 배치시킬 수 있고, X-UP 빌더를 사용하여 개발한 서비스는 X-UP 라이브러리를 호출하고, X-UP 라이브러리는 배치된 모델을 사용하여 데이터를 수집하고 융합하여 생성된 데이터셋을 반환합니다.
X-UP 빌더는 드래그 앤 드롭과 직관적인 GUI 편집기를 제공하여 시각적인 방법으로 모델을 개발 및 테스트하며 서버에 배치하는 모든 작업을 개발 경험이 많지 않은 개발자라 할지라도 손쉽게 개발할 수 있도록 다양한 편의기능을 제공합니다.
X-UP 빌더는 이클립스 플랫폼 기반 위에 JDT, EMF, GEF 라이브러리를 사용해 개발했습니다. X-UP 빌더가 사용하는 JRE 및 이클립스 라이브러리 버전은 다음과 같습니다.
Name | Version | Description |
---|---|---|
JRE | 1.7.0_79 | Java Runtime Environment |
Eclipse Platform | 4.4.2 | Eclipse Platform |
JDT | 3.10.1 | Java Development 개발도구 |
EMF | 2.10.0 | Eclipse Modeling Framework |
GEF | 3.9.100 | Graphical Modeling Framework |
X-UP 빌더에서 제공하는 기능은 다음과 같습니다.
Create X-UP Project
Define DataSource
Find and View DataSource
Model Test
Debugging
Deploy to Server
Validate
Refactoring
Reporting
X-UP 빌더 파일 구조
X-UP 빌더의 파일 구조는 다음과 같습니다.
Name | Type | Description |
---|---|---|
X-UP Project | project | X-UP 모델개발을 위한 프로젝트로서 프로젝트 이름이 곧 도메인이 됩니다. 개발이 완료된 후 특정 모델을 호출할 때 프로젝트명은 중요한 키값이 됩니다. |
logics | src folder | 로직정보를 담고 있는 자바 소스들이 위치합니다. 로직 소스는 모델이 생성될 때 에디터에 의해 자동으로 생성되며 사용자에 의해 수정될 수 있습니다. |
userLib | src folder | 사용자 라이브러리가 추가되면 자동생성됩니다. |
logic class package | package folder | 로직클래스는 패키지가 없이 생성되므로 가상의 패키지명인 default package 형태로 보입니다. |
test class package | package folder | 테스트 클래스가 생성될 때 자동으로 생성되며, 패키지명은 projectName + '.' + xuptest으로 자동 생성됩니다. |
models | folder | 에디터에서 작성된 모델들이 위치한다. 프로젝트 안에서 생성된 모든 *.xam 모델들은 models 폴더 밑에 생성됩니다. |
logic class | class | X-UP 모델과 같이 생성된 로직 클래스 |
test class | class | X-UP 모델에 의해 자동생성된 테스트 클래스 |
X-UP model | *.xam | X-UP 모델로서 *.xam은 Automation 모델입니다. |
GlobalEvents.xaop | *.xaop | X-UP 프로젝트에서 개발된 모델들에 대해 전역으로 이벤트를 설정할 수 있습니다. GlobalEvents.xaop는 Optional 한 설정입니다. |
mashup.msh | *.msh | X-UP 프로젝트에서 개발된 모델들에 대한 모든 중요한 정보를 가지고 있습니다. mashup.msh는 X-UP 프로젝트에 반드시 하나 존재해야 합니다. |
logics 폴더에는 로직 클래스가 위치합니다. 기본적으로 생성되는 로직 클래스들은 패키지명이 없는 클래스로 생성되고 logics 폴더는 Classpath에 등록되어 있습니다.
X-UP Model에서 생성하는 로직 클래스에는 User logic class와 Base logic class로 나누어집니다.
User logic class는 사용자가 모델 개발 시 별도의 로직을 담을 수 있도록 인터페이스 메소드들이 미리 정의된 클래스 파일로써, 모델이 처음 생성될 때 자동으로 생성되고 모델이 생성될 때 속성값 중 logic 항목에 같이 생성한 User logic class 이름을 자동으로 등록합니다.
User logic class 이름은 반드시 모델의 logic 항목에 정의된 이름과 같아야 합니다.
Base logic class 역시 모델 생성 시 자동으로 생성됩니다. 그러나 이 로직 클래스는 기본적으로 사용자에겐 숨겨지고, 에디터가 저장될 때마다 자동으로 내용을 갱신합니다. 즉, 에디터가 자동 갱신하는 로직 클래스이므로 수정하더라도 저장 시 다시 재작성됩니다. 모델 개발 시 사용자는 Base logic class의 내용을 알 필요가 없으므로 디폴트로 숨겨져 있습니다.
userLib 폴더는 [project > import > X-UP > user library] 를 통해 사용자 라이브러리가 등록되면 자동으로 생성되고 해당 폴더 밑에 모든 *.jar 파일이 위치하게 됩니다.
모델 개발이 끝나고 서버에 배치(deploy)될 때 userLib 밑에 존재하는 모든 jar 파일도 logic class와 함께 추가됩니다.
models 폴더는 개발된 모든 X-UP 모델들이 위치하게 됩니다. 모든 *.xam 파일들은 반드시 models 폴더 밑에 있어야 합니다.
GlobalEvents.xaop 파일은 개발된 모든 모델에서 설정 가능한 이벤트를 전역으로 설정할 수 있도록 합니다. 입출력 데이터에 대한 검증 및 데이터소스 변경 작업 등을 수행할 수 있습니다. 해당 설정은 Optional 합니다.
mashup.msh 파일은 Deploy를 위한 서버 URL이나 DataSource 정보와 같은 해당 X-UP 프로젝트에서 모델 개발 시 필요한 중요한 정보를 포함합니다.