이 장에서는 X-UP 모델 정책과 X-UP 모델에 정의된 데이터소스로부터 데이터를 수집하고 융합하는 여러 서비스에 대하여 설명합니다.
X-UP 모델을 X-UP 빌더를 통해 개발 됩니다. 개발 된 X-UP 모델은 메타데이터와 로직클래스로 이루어져 있습니다. 메타데이터는 모델의 입출력 정보및 로직클래스의 정보를 가지고 있으며, 모델이 실행될 경우에 로직클래스를 통해 처리 됩니다. 해당 로직클래스는 동일한 interface를 통해 일관된 형태로 이루어져 있으며, 전문적인 지식없이도 동일한 품질의 어플리케이션을 개발 할 수 있습니다.
Difingo의 모델이란?
Difingo의 모델은 .xam과 AutomationLogic.java, BaseAutomationLogic.java 세가지 파일을 합친것 입니다.
xam 설명
xam파일은 각 컴포넌트의 위치와 내용을 담고 있는 파일입니다.
AutomationLogic.java 설명
사용자가 직접 자바 코딩을 할 수 있는 공간입니다.
BaseAutomationLogic.java 설명
xam파일을 기반으로 자동 생성되는 코드들이 있는 파일입니다.
xam과 AutomationLogic.java와 BaseAutomation.java의 관계
Xup project에서 모델(xam)을 생성하면 AutomationLogic.java파일, BaseAutomationLogic.java파일 2개가 생성됩니다. xam에는 모델, 파라미터 등 editor상의 모든 정보가 저장됩니다. AutomationLogic.java파일은 사용자가 직접 자바 코딩을 할 수 있는 공간으로 BaseAutomationLogic.java를 상속 받고 있습니다. BaseAutomationLogic.java는 xam파일을 기반으로 저장하거나, Refresh할 때 자동 생성됩니다. 때문에 BaseAutomationLogic.java에 코딩을 하면, 저장 시 전부 삭제되니 조심하십시오
Difingo 모델 컴파일 과정
1. 모델을 저장하면 해당 모델의 .xam -> .xml로, .java -> .class로 compile되면서 바뀌고, 이후 .class파일은 Export Generate Path로 -> Copy합니다. 2. Refresh는 이와 비슷한 기능을 하는데, xup projec내의 모든 모델(.xam)을 .xam -> .xml로, .java -> .class로 compile까지만 합니다. 때문에 Export Generate Files(Copy,New)까지 해야합니다. 3. Export Generate Files(Copy,New)를 하기 전, class파일은 (\workspace\xup\bin), xml파일은 (\workspace\.xup\model\${projectName}\model)에 위치합니다. Compile된 파일들은 .xup& bin에서 -> webApplication ->비동기 방식으로 Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps 옮겨집니다. 때문에 fileWatcher를 통해 log를 보며 완료 여부를 확인하고 테스트를 진행하셔야합니다.. 4. xup project에서 삭제하였으나, \workspace\.xup\model\xup\model 이 위치에서 제대로 안 지워 지는 경우가 있습니다. 이로 인해, Workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps이 위치에 지웠던 파일이 생성되는 버그가 있습니다. 해당 버그는 2024-03 이전 버전이나, xup Explorer가 아닌 project Explorer에서 삭제하였을 경우 발생할 수 있습니다. 이를 해결하기 위해선 \workspace\.xup\model\xup\model로 직접 들어가서 지워야 합니다.
오토메이션 모델(Automation Model)
오토메이션 모델은 GUI 에디터를 이용하여 하나의 서비스에 해당하는 로직을 다이어그램으로 표현합니다. 표현된 각각의 다이어그램은 Invoke라고 하며 임의의 데이터소스로부터 데이터를 획득합니다. 데이터를 획득 하기 위한 데이터 정보는 X-UP 빌더의 에디터와 Properties View를 이용하여 작성하게 됩니다. 그리고 오토메이션 모델을 저장하게 되면 Java 클래스 코드가 자동으로 생성이 되며 GUI 에디터에서 모델을 수정하게 되면 자동으로 클래스 코드에 반영되게 됩니다.
오토메이션 모델에서 X-UP 빌더는 다음과 같은 Invoke를 제공합니다.
Invoke | 설명 |
---|---|
SAP RFC Invoke | SAP RFC를 위한 모듈 |
DB Select Invoke | DBMS select를 위한 모듈 |
DB Modify Invoke | DBMS insert, update, delete를 위한 모듈 |
DB Procedure Invoke | DBMS procedure를 위한 모듈 |
OpenApi Invoke | OpenApi 처리를 위한 모듈 |
X-UP Invoke | Remote 에 존재하는 X-UP의 모델 invoking을 위한 모듈 |
Model Invoke | X-UP의 모델 invoking을 위한 모듈 |
AS400 Invoke | Visual Cobol의 리소스 invoking을 위한 모듈 |
Web Service invoke | web Service 처리를 위한 모듈 |
OData invoke | SAP의 OData를 위한 모듈 |
또한 자주 사용하는 형태의 Function 기능을 제공합니다.
Function | 설명 |
---|---|
User Method | 에디터에서의 표현하지 못하는 자바소스 코드를 작성할 수 있습니다. |
Quick Merge | 두개의 데이터셋을 하나의 데이터셋으로 융합할 수 있습니다. |
Merge | 두개 이상의 데이터셋을 하나의 데이터셋으로 융합할 수 있습니다. |
XML Parser | 에디터에서의 특정 XML 을 쉽게 파싱 할 수 있습니다. |
Extract DataSet | 여러 개의 variable을 합쳐 하나의 DataSet으로 만들수 있습니다. |
Extract Variable | DataSet의 컬럼을 분리하여 하나의 variable로 추출할 수 있습니다. |
DataSet Loop | DataSet의 특정 Row값에 대하여 반복적 제어문 처리를 할 수 있습니다. |
Json To Parameter | 2차원의 Json데이터를 Parameter로 파싱합니다. |
Parameter To Json | Parameter를 Json데이터로 바꿉니다. |
또한 다음과 같은 분기 처리에 대한 Control 기능을 제공합니다.
분기 처리 | 설명 |
---|---|
Decision | 에디터에서의 특정 조건에 따라 분기 처리를 할 수 있습니다.(if) |
Break | 에디터에서의 반복적인 작업을 중단할 수 있습니다.(break) |
Continue | 에디터에서 특정 조건에서 반복적인 작업을 한번 건너뛸 수 있습니다.(for, continue) |
Invoke 공통 프로퍼티
X-UP 에디터 위에 배치된 Invoke를 클릭하면 Properties View를 통해 해당 Invoke에 대한 정보를 볼 수 있습니다. 아래는 모든 Invoke의 공통 프로퍼티입니다.
General
Properties View의 General 탭을 클릭하면 아래와 같은 화면이 나타납니다.
항목 | 설명 |
---|---|
Alias | Alias를 정의할 수 있습니다. |
Name | Name을 정의할 수 있습니다. |
Visible | editor에서 invoke가 Alias로 표기됩니다. (코딩은 실제 Name으로 해야합니다) |
Description | 해당 Invoke에 대한 Description을 정의할 수 있습니다. |
Input Binding / Output Binding
Input Binding/Output Binding은 Invoke가 실행 시 필요한 in-out 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할을 수행합니다. Ex ) 프로시저가 입력 파라매터 명칭은 'VAR_IN'이지만 모델에서는 'var01' 명칭의 파라매터로 선언하여 사용할 수 있습니다. 프로시저가 호출 될 때 'var01' 파라매터는 'VAR_IN'으로 변환되어 프로시저를 호출하고 호출이 끝나는 시점에 원래의 'var01'으로 파라매터 명칭이 변경 됩니다.
Input Binding/Output Binding 기능은 아래의 Invoke에만 해당합니다.
SAP RFC
DB Procedure
X-UP Model
X-UP Remote
AS400
OData
고정된 in-out 파라미터 이름과 상관없이 사용자가 원하는 파라미터 이름을 정의할 수 있습니다. Invoke와 함께 생성된 커넥션은 삭제할 수 없으며 만약 다른 파라미터와 연결하고자 한다면 reconnection을 통하여 변경할 수 있습니다. 때문에 reconnection할 때 붉은 번개 표시가 생기면 Input Binding/Output Binding을 체크 해야합니다.
Reconnection 이란?
에디터 위에 그려진 Connection의 순서 변경을 의미합니다. Input 또는 Output으로 연결되어 있는 선의 끝부분을 클릭 버튼으로 누른 상태에서 변경하고 싶은 대상으로 이동 후 클릭 버튼을 놓으면 파라미터에 연결된 Connection이 변경됩니다.
BeforeDataSource
해당 Invoke가 사용하는 데이터소스를 통해 Legacy와 연결을 맺기 직전에 사용자가 원하는 로직을 자바 코드로 추가할 수 있습니다.
Source View > 마우스 오른쪽 버튼 > Pop-up의 Edit 버튼을 누르면 자바 코드를 추가할 수 있습니다.
AfterDataSource
해당 Invoke가 사용하는 데이터소스를 통해 Legacy와 연결을 맺은 직후에 사용자가 원하는 로직을 자바 코드로 추가할 수 있습니다.
Source View > 마우스 오른쪽 버튼 > Pop-up의 Edit 버튼을 누르면 자바 코드를 추가할 수 있습니다.
Exception
Exception 탭은 해당 Invoke의 예외처리를 수행하는 단계로 사용자가 원하는 로직을 자바코드로 추가할 수 있습니다
Source View > 마우스 오른쪽 버튼 > Pop-up의 Edit 버튼을 누르면 자바 코드를 추가할 수 있습니다.
파라미터
X-UP에서 사용하는 데이터 자료 유형입니다. 파라미터의 종류는 다음과 같습니다.
Variable
DataSet
File
Header
공통 속성
X-UP에서 사용되는 자료 유형으로 다음과 같은 기본적인 공통 속성을 가집니다.
General
모든 노드들의 공통 항목으로 Name, Alias, Visible, Description을 정의합니다.
항목 | 설명 |
---|---|
Alias | 사용자가 원하는 별칭을 정의합니다. 한글입력도 가능합니다. |
Name | 데이터셋의 이름을 정의합니다. 에디터상에서 다른 파라미터와 중복되지않는 이름으로 영어로만 정의합니다. |
Visible | 에디터상에서 Name을 보일지 Alias를 보일지를 선택합니다. |
Description | 모델 설명을 입력합니다. |
InOut
모든 파라미터의 공통 항목으로 파라미터의 타입을 선택합니다.
항목 | 설명 |
---|---|
normal | 모델 내부에서만 사용되는 일반 파라미터 |
in | 모델의 input 파라미터로 설정, 모델 메타데이터의 input 파라미터로 등록됩니다. |
out | 모델의 output 파라미터로 설정, 모델 메타데이터의 output 파라미터로 등록됩니다. |
in + out | 모델의 input 파라미터 + output 파라미터로 설정, 모델 메타데이터의 input + output 파라미터로 등록됩니다. |
in 혹은 in+out 파라미터의 경우 반드시 모델이 실행될 때 입력되어야 합니다.
normal 혹은 out 의 경우 모델이 실행될 때 내부에서 초기화 된 파라미터를 생성합니다.
Variable
Variable은 X-API의 Variable과 동일한 타입의 파라미터를 생성합니다.
Schema
기본적으로 다른 파라미터와 같은 프로퍼티를 가지고 있으며 Schema 탭만 다르게 정의합니다.
Variable의 Schema탭은 다음 항목을 설정합니다.
Type : variable 파라미터의 타입을 정의합니다.
string / int / float / long / boolean / bigdecimal / date / time / datetime / blob
Size : variable 파라미터의 사이즈를 정의합니다.
단순 표기기 때문에 DB와 완전히 맞추지 않는다 해서 에러를 일으키지 않습니다.
DataSet
DataSet Parameter는 X-API의 DataSet과 동일한 타입의 파라미터를 생성합니다.
Schema
Import/Export
Schema는 데이터셋의 컬럼 정보를 정의합니다. 사용자가 직접 컬럼 정보를 등록 가능하며 Import/Export을 활용하여 외부로부터 가져오거나 내보낼 수 있습니다.
Import 버튼 클릭시 나오는 Import DataSet Schema Dialog는 다음 3곳에서 데이터셋 컬럼 정보를 가져올 수 있습니다
Export는 등록된 데이터셋 컬럼 정보를 PlatformData타입의 xml 파일로 로컬 PC에 저장하여 다양한 곳에서 재사용이 가능하게 합니다.
항목 | 설명 |
---|---|
DB Table | 등록된 데이터소스에 존재하는 데이터베이스 테이블로부터 컬럼 정보를 생성합니다. |
X-UP Model | 생성된 다른 모델로부터 데이터셋 컬럼 정보를 가져옵니다. |
XML File | 로컬 PC에 존재하는 PlatformData xml 파일로부터 데이터셋 컬럼 정보를 생성합니다. |
Copy to Clipboard
Copy to Clipboard 버튼을 누르면 선택한 DataSet의 Schema를 Clipboard에 복사합니다.
toLower
toLower 버튼을 누르면 모든 컬럼명을 소문자로 변경합니다.
toUpper
toUpper 버튼을 누르면 모든 컬럼명을 대문자로 변경합니다.
FirstRow
만일 Invoke에서 조회된 데이터 양이 많아 클라이언트가 대기해야 하는 경우 First Row기능을 활용할 수 있습니다. 정의된 RowCount를 초과 할 경우 요청에 대한 HttpResponse을 통해 응답을 보내기 전 com.nexacro.xapi.tx.HttpPartPlatformResponse 통하여 일부의 데이터를 미리 보낼 수 있습니다.
* 이 기능은 select invoke의 output일 때만 enable됩니다.
항목 | 설명 |
---|---|
Enable First Row | First Row 기능을 활성화시킵니다. |
First row count | First Row 기능이 활성화 되면, 사용자가 First Row Count를 직접 지정할 수 있습니다. (기본값은 10000) |
First Row 는 무엇인가?
First Row는 넥사크로 플랫폼에서 사용되어지는 용어로 대량의 데이터를 호출할 경우 성능 및 오류방지를 위하여 사용자가 지정한 First Row 수 만큼 분할하여 전송하는 기능입니다. 예를 들면 1000건의 데이터를 200건씩 나눠서 5회에 걸쳐 전송하거나, 500건씩 나눠서 2회에 걸쳐 전송하는것을 말합니다.
사용자가 설정한 First Row 수 만큼 계속 전송하고 남은 나머지는 서비스가 종료될경우 전송됩니다. 예를 들어 1000건의 데이터를 300건씩 First Row를 이용해서 전송하게 되면 3회에 걸쳐 300건씩 전송되고, 나머지 100건의 데이터는 마지막에 전송하여 총 4회에 걸쳐 1000건의 데이터를 전송합니다.
First Row로 데이터를 전송할 때 데이터셋이 전송되고 난 후에는 Variable이 전송될 수 없습니다.
File
File Parameter는 파일 입출력을 정의하기 위한 파라미터입니다.
Schema
기본적으로 다른 파라미터와 같은 프로퍼티를 가지고 있으며 Schema 탭만 다르게 정의합니다
File의 Schema 탭은 다음 항목을 설정합니다.
Content Type : File Content Type을 정의합니다.
아래 표는 몇가지 양식을 보여줍니다.
MIME Type | File Extension |
---|---|
application/pdf | |
image/jpeg | jpeg |
text/html | html |
text/css | css |
Header
Header 파라미터는 HTTP Header 입출력 정보를 관리하기 위한 파라미터입니다.
Schema
기본적으로 다른 파라미터와 같은 프로퍼티를 가지고 있으며 Schema 탭만 다르게 정의합니다
Header의 Schema 탭은 다음 항목을 설정합니다.
Http Header’s key : Http header key 값을 정의합니다.
아래 표는 몇 가지 양식을 보여줍니다.
Field Name | Example |
---|---|
Accept | Accept: text/plain |
Accept-Charset | Accept-Charset: utf-8 |
Content-Type | Content-Type: application/x-www-form-urlencoded |
User-Agent | User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/21.0 |
SAP RFC Invoke
SAP RFC Invoke는 SAP RFC 정보를 파라미터 형식으로 생성하기 위한 컴포넌트입니다. 호출 시 Variable이나 Dataset 형식으로 가져옵니다.
SAP RFC Invoke는 Invoke를 생성하기 위한 SAP RFC Invoke Dialog 와 다음과 같은 프로퍼티 속성 탭을 가지고 있습니다.
General : 일반적인 정보 표시 또는 설정
InvokeInfo : 해당 invoke에서 사용되는 DataSource, Group, Function 확인
InputBinding : in 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할
OutputBinding : out 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할
BeforeDataSource : 데이터 소스 호출 전 수행
AfterDataSource : 데이터 소스 호출 후 수행
Exception : 예외처리
InvokeInfo
해당 invoke에서 사용되는 DataSource, Group, Function을 볼 수 있습니다.
다른 Invoke처럼 Invoke를 실행하기 위한 In-Out 정보가 이미 고정되어 있는 경우는 Information만 출력합니다.
SAP RFC Invoke의 경우 InvokeInfo에서 다음 정보를 출력합니다.
DataSource : 선택한 데이터소스 ( 클릭시 해당 데이터소스 편집창 오픈 )
Group :정의된 SAP RFC 함수 그룹
Function : 선택한 SAP RFC 함수
SAP RFC Invoke Dialog
SAP RFC Invoke를 생성하고자 할 경우 다음과 같은 다이얼로그가 출력됩니다.
DataSource : 데이터소스를 선택 ( 없다면 버튼으로 새로운 DataSource생성 가능 )
Function List : 선택한 데이터소스로부터 Function 리스트를 조회
Input Parameter : 선택한 Function으로부터 입력 파라미터가 자동 생성됨
Test : 테스트를 수행한 결과를 출력 Output Variable 형태로 생성됩니다.
Select Invoke
Select Invoke는 DataBase의 Select 기능을 수행합니다.
Select Invoke의 프로퍼티에는 다음과 같은 속성탭을 가지고 있습니다.
General : 일반적인 정보 표시 또는 설정
InvokeInfo : Invoke가 수행할 SQL 표시, Enable Surround CDATA 체크박스
BeforeDataSource : 데이터 소스 호출 전 수행
AfterDataSource : 데이터 소스 호출 후 수행
Exception : 예외처리
InvokeInfo
DataSource : 선택한 DataSource ( 클릭시 해당 DataSource 편집창 오픈 )
Select SQL : 정의된 SQL쿼리문
Surround CDATA : 정의된 SQL쿼리문을 CDATA화 수행
Select Invoke Dialog
select invoke popup은 크게 4가지 컴포넌트가 있습니다.
DataSource Combo
SQL Textarea
Enable Surround CDATA Checkbox
Test Button
DataSource Combo
Combo에 DataSource(DB)가 item으로 나옵니다. 원하는 DataSource(DB)를 선택하여 사용할 수 있습니다.(없다면 새로운 DataSource생성 가능)
DataSource를 바꾸더라도 기존의 쿼리문은 사라지지 않습니다.
바뀐 DataSource와 기존의 쿼리문 사이에 관계가 없더라도 에러는 뜨지 않으니 주의하십시오
test버튼을 통해서 에러의 유무를 빠르게 판단할 수 있습니다.
SQL Textarea
X-UP은 데이터를 조회하기 위한 SQL문을 자동으로 생성해 줍니다. 생성된 SQL문은 모든 컬럼을 where 조건 없이 조회하는 Select SQL 입니다. 필요에 따라 자동적으로 생성된 SQL을 수정하여 임의의 데이터를 조회할 수 있습니다. SQL의 바인딩변수는 매개변수(Parameter) 이름 앞과 뒤에 ‘#’을 붙여서 표현합니다.
파라미터 어시스트는 Ctrl+Space 또는 ‘#’ 을 입력하면 자동으로 출력됩니다.
CDATA Checkbox
SQL문이 특수 문자를 사용하고 있을 경우 ‘Enable Surround CDATA’를 선택하게 되면 SQL문 전체를 CDATA로 감싸게 됩니다.
CDATA 는 무엇인가?
XML이나 자바스크립트에서 사용하는 CDATA 섹션입니다. CDATA를 사용하는 목적은 XML 코드를 작성한 후, XML 파서에게 ‘CDATA섹션 안에 포함된 코드에는 태그가 없다. 그러니 무시하고 지나가라’ 라고 알려주는 역할을 합니다.
흔히 사용하는 "&",">","<" 같은 것들을 XML 코드에 작성할 경우엔 XML 파서가 태그로 인식하여 그대로 해석해 버리기 때문에 오류가 발생합니다. 이런 경우를 방지하기 위하여 CDATA 섹션으로 특수문자가 포함된 해당 코드를 감싸주는 것입니다. 이렇게 하게 되면 XML 파서가 태그가 아닌 String 자체로 인식하게 됩니다.
Dynamic SQL 지원
iBatis는 SQL의 재사용성과 유연성을 향상시키기위해 매핑 구문 내에서 사용할 수 있는 동적 SQL (Dynamic SQL) 요소들을 제공합니다.
X-UP은 iBatis를 지원하고 있기 때문에 기존의 iBatis의 동적 SQL쿼리도 쿼리수정 없이 바로 사용할 수 있습니다. iBatis의 기능 100%를 지원하는 것이 아니기 때문에 사용이 가능한 것을 구별하여 쓰십시오
다양한 동적 SQL 요소의 자세한 안내는 Dynamic SQL을 참조합니다.
Event Handler
Event handler는 Select Invoke와 Modify Invoke에서 제공하며, Invoke 작업중 사용자가 원하는 추가 로직을 이벤트 내부에 정의할 수 있습니다.
이벤트 핸들러를 추가하고자 할 경우 해당 노드를 선택한 후 오른쪽 마우스 버튼 > Add Event를 선택 > 추가하고자 하는 이벤트를 선택 하면 해당 노드에 이벤트 시작과 종료 노드가 추가됩니다.
Select Invoke의 이벤트 핸들러는 다음과 같습니다.
onBegin : Invoke의 구동 바로 직전에 호출됩니다.
onRowAdded : Row가 추가 될 때 마다 호출됩니다.
onEnd : Invoke 구동 후 생성된 ParameterSet을 반환하기 직전에 호출됩니다.
Modify Invoke
Modify Invoke는 입력 파라미터를 가지고 Insert, Update, Delete SQL을 수행합니다.
X-UP은 Modify Invoke 시 데이터셋의 Row의 Type을 보고 해당 Row를 Insert, Update, Delete할 지를 결정합니다. 데이터셋의 Row의 Type은 강제로 설정할 수도 있으나 일반적으로 데이터셋에 Row를 추가하거나 수정, 삭제할 때 자동적으로 Type이 결정됩니다.
X-UP에서 Row에 대한 처리 기준은 다음과 같습니다.
DataSet에 존재하는 Row의 값을 테이블의 record에 그대로 반영한다.
DataSet에 존재하지 않는 Row에 해당하는 테이블의 record는 신경 쓰지 않는다.
DataSet에서 삭제한 Row에 해당하는 테이블의 record는 삭제한다.
이러한 기준에 따라서 데이터셋의 특정 Row가 테이블에 존재하면 update를 하고, 존재하지 않으면 insert합니다. delete되는 대상은 데이터셋에서 removeRow()나 clearData()를 호출하여 삭제된 Row에 해당하는 record입니다.
X-UP 빌더에서 Modify Invoke 노드 생성은 Palette에서 Modify 아이템을 선택하거나 X-UP DataSource View에서 테이블을 선택후 에디터로 드래그하여 Modify Invoke를 선택함으로써 빠르게 생성할 수 있습니다.
Modify Invoke의 프로퍼티에는 다음과 같은 속성탭을 가지고 있습니다.
General ; 일반적인 정보 표시 또는 설정
InvokeInfo : Invoke가 수행할 SQL 표시, TargetDataset, Enable Surround CDATA 체크박스
SqlTypeBinding : 데이터셋의 Row 타입을 SQL 구문과 바인딩
Filtering : 입력 파라미터의 값이 특정 조건에 만족할 경우 Modify 액션에서 제외하고자 할 경우 정의
BeforeDataSource : 데이터 소스 호출 전 수행
AfterDataSource : 데이터 소스 호출 후 수행
Exception : 예외처리
InvokeInfo
InvokeInfo는 Modify Invoke를 수행하기 위한 필수 정보를 입력합니다.
Modify Invoke Dialog
Modify Invoke Dialog에 6가지 컴포넌트가 있습니다.
DataSource
Target DataSet
SQL Textarea & Tab
Enable Surround CDATA Checkbox
isBatch
Test Button
DataSource Combo
Combo에 DataSource(DB)가 item으로 나옵니다. 원하는 DataSource(DB)를 선택하여 사용할 수 있습니다.(없다면 새로운 DataSource생성 가능)
DataSource를 바꾸더라도 기존의 쿼리문은 사라지지 않습니다.
바뀐 DataSource와 기존의 쿼리문 사이에 관계가 없더라도 에러는 뜨지 않으니 주의하십시오
test버튼을 통해서 에러의 유무를 빠르게 판단할 수 있습니다.
Target DataSet
Modify invoke는 Target Dataset을 중심으로 Loop를 돌게 되어 있는 구조입니다. 여러 Dataset이 연결되어 있으면, Target Dataset만 Loop를 돌고 나머지 Dataset은 RowIndex 0으로 고정됩니다.
1. Target DataSet이 선택되지 않았을 경우 Delete / Insert / Update SQL 순으로 무조건 1번씩 실행됩니다. (데이터셋의 Row의 Type에 따라 처리하기를 원하지 않을 경우에 사용)
2. target Dataset으로 지정된 Dataset을 invoke와 연결을 끊었다가 다시 연결할 경우,
target Dataset 지정이 되돌아 오지 않는 경우가 있으니, 확인해야 합니다.
SQL Textarea & Tab
Modify Invoke는 각 탭에 insert, update, delete 를 위한 SQL 문을 자동으로 생성해 줍니다.
Insert : DB 스키마에 대한 모든 컬럼에 대한 insert query를 생성합니다.
Update : DB 스키마에 PrimaryKey가 설정되어 있는 컬럼을 where 조건으로 update query를 생성합니다.
Delete : DB 스키마에 PrimaryKey가 설정되어 있는 컬럼을 where 조건으로 delete query를 생성합니다.
각 탭은 표시일 뿐이며, 탭과 다른 SQL문을 작성해도 에러 메시지는 뜨지 않습니다
Enable Surround CDATA Checkbox
SQL 문이 특수문자를 사용하고 있을 경우 ‘Enable Surround CDATA’ 를 선택 하게 되면 SQL 문 전체를 CDATA 로 감싸게 됩니다. 이 경우 DynamicSQL은 사용할 수 없습니다.
CDATA 는 무엇인가?
XML이나 자바스크립트에서 사용하는 CDATA 섹션입니다. CDATA를 사용하는 목적은 XML코드를 작성한 후, XML파서에게 ‘CDATA섹션 안에 포함된 코드에는 태그가 없다. 그러니 무시하고 지나가라’ 라고 알려주는 역할을 합니다.
흔히 사용하는 "&",">","<" 같은 것들을 XML코드에 작성할 경우엔 XML파서가 태그로 인식하여 그대로 해석해 버리기 때문에 오류가 발생합니다. 이런 경우를 방지하기 위하여 CDATA섹션으로 특수문자가 포함된 해당 코드를 감싸주는 것입니다. 이렇게 하게 되면 XML파서가 태그가 아닌 String 자체로 인식하게 됩니다.
isBatch
isBatch checkbox는 insert, update, delete를 batch프로그램을 이용하여 실행할 때 체크합니다. 이 경우, DynamicSQL은 사용 불가합니다.
Dynamic SQL 지원
iBatis는 SQL의 재사용성과 유연성을 향상시키기위해 매핑 구문 내에서 사용할 수 있는 동적 SQL (Dynamic SQL) 요소들을 제공합니다
X-UP은 iBatis를 지원하고 있기 때문에 기존의 iBatis의 동적 SQL쿼리도 쿼리수정 없이 바로 사용할 수 있습니다.
iBatis의 기능 100%를 지원하는 것이 아니기 때문에 사용이 가능한 것을 구별하여 쓰십시오다양한 동적 SQL 요소의 자세한 안내는 Dynamic SQL을 참조합니다.
SqlTypeBinding
SqlTypeBinding은 데이터셋의 Row 타입을 SQL 구문과 바인딩시켜줍니다.
default : 데이터셋의 Row Type과 SQL 자동 매핑
- 행 타입에 따른 실행 SQL
normal 타입의 행 → 실행하지 않음
insert 타입의 행 → insert SQL 실행
update 타입의 행 → update SQL 실행
delete 타입의 행 → delete SQL 실행
필터링(Filtering)
필터링은 입력 파라미터의 값이 특정 조건에 만족할 경우 Modify 액션에서 제외하고자 할 경우 정의합니다.
Rule Name : Filtering rule 이름 정의
Parameter : 입력 파라미터를 선택
Comparator : 조건문 선택
Value : 조건값 입력
Event Handler
onBegin : Invoke의 구동 바로 직전에 호출됩니다.
onEnd : Invoke 구동 후 생성된 ParameterSet을 반환하기 직전에 호출됩니다.
onBeforeInsert: 데이터셋의 행의 RowType 이 DataSet.ROW_TYPE_INSERTED 일 경우 insert문을 수행하기 직전에 호출 됩니다.
onAfterInsert: 데이터셋의 행의 RowType 이 DataSet.ROW_TYPE_INSERTED 일 경우 insert문을 수행한 직후에 호출 됩니다.
onBeforeUpdate: 데이터셋의 행의 RowType 이 DataSet.ROW_TYPE_UPDATED 일 경우 update문을 수행하기 직전에 호출 됩니다.
onAfterUpdate: 데이터셋의 행의 RowType 이 DataSet.ROW_TYPE_UPDATED 일 경우 update문을 수행한 직후에 호출 됩니다.
onBeforeDelete: 데이터셋의 행의 RowType 이 DataSet.ROW_TYPE_DELETED 일 경우 delete문을 수행하기 직전에 호출 됩니다.
onAfterDelete: 데이터셋의 행의 RowType 이 DataSet.ROW_TYPE_DELETED 일 경우 delete문을 수행 한 직후에 호출 됩니다.
Procedure Invoke
Procedure Invoke는 데이터베이스의 procedure 및 Function을 호출합니다. 해당 Invoke는 DataSource와 Entity정보를 입력하여 테스트를 수행하고 나면 실제 데이터베이스의 Procedure 및 Function을 호출한 결과를 바탕으로 자동으로 입력 파라미터와 출력 파라미터가 설정 됩니다.
X-UP 빌더에서 Procedure Invoke 생성은 Palette에서 Procedure 아이템을 선택하거나 X-UP DataSource View에서 Procedure나 Function을 선택후 에디터로 드래그함으로써 빠르게 생성할 수 있습니다.
Procedure Invoke는 Invoke를 생성하기 위한 Procedure Invoke Dialog 와 다음과 같은 프로퍼티 속성탭을 가지고 있습니다.
General ; 일반적인 정보 표시 또는 설정
InvokeInfo : 해당 invoke에서 사용되는 DataSource, Type, Catalog, Schema, Entity 확인
InputBinding : in 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할
OutputBinding : out 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할
BeforeDataSource : 데이터 소스 호출 전 수행
AfterDataSource : 데이터 소스 호출 후 수행
Exception : 예외처리
InvokeInfo
Invoke를 수행하기 위한 필수 정보가 출력됩니다.
Procedure Invoke와 Model Invoke처럼 Invoke를 실행하기 위한 In-Out정보가 이미 고정되어 있는 경우는 Information만 출력합니다.
Procedure Invoke의 경우 InvokeInfo에서 다음 정보를 출력합니다.
DataSource : 선택한 데이터소스 ( 클릭시 해당 데이터소스 편집창 오픈 )
Type : PROCEDURE or FUNCTION
Catalog : 선택한 카탈로그
Schema : 선택한 스키마
Entity : 선택한 엔티티
Procedure Invoke Dialog
Procedure Invoke를 생성하고자 할 경우 다음과 같은 다이얼로그가 출력됩니다.
DataSource
DataSource : DataSource 선택 ( 없다면 새로운 DataSource 생성 가능)
Select Procedure or Function :
Procedure 또는 Function을 선택
Entity : 원하는 엔티티 선택
Information :
선택된 엔티티의 in-out 정보가 출력됩니다.
다만 output 정보는 실제와 다를 수 있으므로 반드시 Test 를 통해 실행 결과를 확인합니다.
void type procedure or function
만약 실행 결과가 없을 경우 이를 void 타입 Invoke로 설정할 수 있습니다.
이럴경우 이 Invoke는 결과값을 리턴하지 않는 상태로 생성됩니다.
test버튼을 눌러 void 체크박스를 활성화시켜야 사용할 수 있습니다.
enable auto commit mode
Auto Commit Mode를 활성화 시킬 수 있습니다.
Test :
테스트를 수행한 결과를 출력합니다.
Value에 Test 값을 넣어주면 Test Result 가 나옵니다.
OpenApi Invoke
OpenApi Invoke는 HTTP 정보를 파라미터형식으로 생성하기 위한 Invoke입니다. 호출 시 http header, html body 정보를 파라미터 형식으로 가져옵니다.
X-UP 빌더에서 OpenApi Invoke 생성은 Palette에서 OpenApi 아이템을 선택후 에디터로 드래그함으로써 빠르게 생성할 수 있습니다.
OpenApi Invoke는 Invoke를 생성하기 위한 OpenApi Invoke Dialog 와 다음과 같은 프로퍼티 속성탭을 가지고 있습니다.
General ; 일반적인 정보 표시 또는 설정
InvokeInfo : 해당 invoke에서 사용되는 DataSource, Base Path, Sub Path, Input Parameters,
Send only value 확인
InputBinding : in 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할
OutputBinding : out 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할
BeforeDataSource : 데이터 소스 호출 전 수행
AfterDataSource : 데이터 소스 호출 후 수행
Exception : 예외처리
InvokeInfo
Invoke를 수행하기 위한 필수 정보가 출력됩니다.
다른 Invoke 처럼 Invoke를 실행하기 위한 In-Out 정보가 이미 고정되어 있는 경우는 Information 만 출력합니다.
OpenApi Invoke의 경우 InvokeInfo에서 다음 정보를 출력합니다.
DataSource : 선택한 데이터소스 ( 클릭시 해당 데이터소스 편집창 오픈 )
Base Path : 선택한 데이터소스에 정의된 base path url
Sub Path : 정의된 sub path
Input Parameters : 정의된 필수 input parameter
Send only value : 정의된 send only value
OpenApi Invoke Dialog
OpenApi Invoke를 생성하고자 할 경우 다음과 같은 다이얼로그가 출력됩니다.
DataSource : OpenApi 데이터소스를 선택 ( 없다면 새로운 데이터소스 생성 가능)
Base Path : 선택한 데이터소스에 정의된 URL
Sub Path : Base path 뒤에 붙일 추가 URL 이 존재할 경우 입력
Input Parameter : url 파라미터가 존재할 경우 추가
Post : 선택한 파라미터를 호출시 post방식으로 보내고자 할 경우 체크
Send only value : 호출시 파라미터 value 전달
Sub Path와 Input Parameter
OpenApi로부터 데이터를 수집할 때 사용되는 전체 URL은 다음과 같이 구성됩니다.
<데이터소스 HTTP URL> + <SubPath> + <데이터소스 parameter> + <input parameter>
일반적으로 하나의 사이트에서 제공하는 OpenApi의 URL은 같은 base url을 사용하지만 제공하는 서비스에 따라 sub path가 다를 수 있습니다. 항상 같은 base url을 데이터소스에 정의하고, 서비스 별로 다른 sub path는 각 Invoke에 정의합니다. 유사하게 인증 키와 같이 OpenApi를 호출할 때 항상 전달하여야 하지만 클라이언트가 입력할 필요가 없는 매개변수는 데이터소스에 정의하고, 실제 클라이언트에서 사용자가 입력할 매개변수는 Invoke에 정의합니다.
Result
OpenApi로부터 데이터를 수집하게 되면 수집된 결과가 ‘BODY’라는 파라매터를 생성합니다. 그리고 또한 데이터 수집을 통해 응답 받은 HTTP Header의 값들을 HEADER + INDEX 로 파라매터로 생성합니다. (단, Header 로 정의 된 데이터를 출력으로 지정 할 경우 HTTP Response Header 에 정의 된 정보로 변경 하여 응답합니다)
X-UP Invoke
X-UP Inovke는 다른 서버의 이미 만들어지고 Deploy된 X-UP 모델을 호출하기 위한 컴포넌트입니다.
X-UP Invoke는 Remote에 존재하는 X-UP 서버의 모델을 호출하여 데이터를 획득하고 새로운 파라미터를 생성합니다.
X-UP Invoke는 다음과 같은 프로퍼티 속성탭을 가지고 있습니다.
General
InvokeInfo
InputBinding
OutputBinding
Exception
InvokeInfo
Invoke를 수행하기 위한 필수 정보가 출력됩니다.
다른 Invoke 처럼 Invoke를 실행하기 위한 In-Out 정보가 이미 고정되어 있는 경우는 Information 만 출력합니다.
X-UP Invoke의 경우 InvokeInfo에서 다음 정보를 출력합니다.
DataSource : 선택한 데이터소스 ( 클릭 시 해당 데이터소스 편집창 오픈 )
Target Domain : 선택한 서버의 타겟 도메인
Target Model : 타겟 도메인안에 호출할 대상이 되는 타겟 모델
Model Invoke
Model Invoke는 같은 프로젝트 내의 이미 만들어져 있는 다른 X-UP 모델을 호출하기 위한 컴포넌트입니다.
Model Invoke 생성은 Palette에서 Model 아이템을 선택하거나 X-UP Explorer에서 직접 모델을 선택 후 에디터로 드래그함으로써 빠르게 생성할 수 있습니다.
Model Invoke는 Palette에서 생성할 경우 나타나는 X-UP Model List Dialog와 다음과 같은 프로퍼티 속성탭을 가지고 있습니다.
General ; 일반적인 정보 표시 또는 설정
InvokeInfo : Model이름 확인
InputBinding : in 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할
OutputBinding : out 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할
Exception : 예외처리
InvokeInfo
Model Invoke를 수행하기 위한 필수 정보를 출력합니다.
Name : Invoke된 모델 이름을 출력합니다.
모델 이름을 클릭하면 해당 모델 에디터로 이동합니다.
우측 상단에 Refresh 메뉴를 통해 Invoke된 모델의 정보가 변경되었을 경우 다시 갱신할 수 있도록 합니다.
OData Invoke
OData Invoke는 HTTP(s) 기반의 OData를 이용하여 데이터를 consumption하는 invoke 입니다. CSDL을 기반으로 Entity Set과 Function Import를 통해 데이터를 consumption하여 파라매터 형식으로 가져옵니다.
OData : Open Data Protocol은 쿼리와 데이터 업데이트를 위한 RESTful 형식의 Web Protocol 입니다.
OData Version 2.0을 지원합니다.
X-UP 빌더 에서는 OData Invoke 생성은 Palette에서 OData Invoke를 선택하거나 X-UP DataSource View에서 OData DataSource를 선택한 후 나오는 서비스 리스트를 중 특정 서비스을 선택 후 에디터로 드래그함으로써 빠르게 생성할 수 있습니다.
OData Invoke는 Invoke 생성을 위한 OData Invoke Dialog와 다음과 같은 프로퍼티 속성탭을 가지고 있습니다.
General ; 일반적인 정보 표시 또는 설정
InvokeInfo : DataSource, Service URI, Selected Operation List 확인
InputBinding : in 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할
OutputBinding : out 파라매터의 명칭과 모델에서 정의한 파라매터의 명칭을 바인딩해주는 역할
BeforeDataSource : 데이터 소스 호출 전 수행
AfterDataSource : 데이터 소스 호출 후 수행
Exception : 예외처리
InvokingInfo
Invoke를 수행하기 위한 필수 정보가 출력 됩니다.
다른 Invoke처럼 Invoke를 실행하기 위한 In-Out 정보가 이미 고정되어 있는 경우는 Information만 출력합니다.
OData Invoke의 경우 InvokingInfo에서 다음 정보를 출력합니다.
DataSource : 선택한 DataSource (클릭시 해당 DataSource 편집창 오픈)
Service URI : 선택된 서비스의 HOST를 제외한 URI
Selected Operation List : 선택된 Operation 항목들의 명칭
OData Invoke Dialog
OData Invoke를 생성하고자 할 경우 다음과 같은 다이얼로그가 출력됩니다.
DataSource : OData 데이터소스를 선택 (없다면 새로운 데이터소스 생성 가능)
Service URI : OData를 제공하는 서버가 제공하는 서비스 중 invoke 하기 위한 서비스
Service List : Service URI에서 선택된 서비스의 메타데이터 정보
Operations : 실행 가능한 Entity Set 혹은 Function Import 중 실행하고자 하는 대상
Properties : 하나의 Operation이 수행될 경우 옵션 값들
HTTP Method
Invoke가 실행될 때 RESTful의 HTTP Method와 바인딩됩니다. 지원하는 HTTP Method는 다음과 같습니다.
GET - 데이터를 조회합니다. HTTP Method GET과 바인딩 됩니다. 데이터를 조회할 경우 추가적인 설정이 가능합니다.
Get Method Option
Multi Value : 복수 데이터를 조회합니다.
Single Value : 단일 데이터를 조회합니다.
만약 조회 대상이 EntitySet을 조회할 경우 해당 식별자에 해당하는 데이터를 입력으로 반드시 삽입하여야 합니다.
System Query
데이터를 조회할 때 OData 스펙에 명시된 기본 옵션 설정을 제공합니다.
제공 되는 설정값은 다음과 같습니다. ($filter, $select, $orderby, $top, $count, $search, $levels)
POST - 데이터를 추가합니다.
데이터셋의 Row Type이 INSERT인 데이터만을 추가합니다.
PUT - 데이터를 수정합니다.
데이터셋의 Row Type이 UPDATE인 데이터만을 추가합니다.
DELETE - 데이터를 삭제합니다.
데이터셋의 Row Type이 DELETE인 데이터만을 추가합니다.
복수의 HTTP Method를 선택하거나 데이터셋의 행의 갯수가 복수일 경우 Batch 형태로 요청합니다.
Batch Request 지원
OData는 REST 형식의 단일 요청과 BATCH 형태의 복수의 요청을 할 수 있습니다.
X-UP의 경우 Operation이 단일 건이며, HTTP Method가 GET일 경우에만 REST 형식으로 데이터를 전송하며, 그 외의 경우에는 Batch 형태로 처리 합니다.
단일 Operation 일지라도 데이터셋의 행의 갯수에 따라 Batch 형태로 복수개의 요청을 하게 됩니다.
In/Out Parameter Information
선택된 Operation의 입출력 정보를 보여줍니다. 해당 정보는 HTTP Method와 바인딩 되며, GET Method 를 선택할 경우 출력 형태가 되며, POST, PUT, DELETE를 선택할 경우 입력 형태가 됩니다.
OData의 데이터 타입과 변환 된 X-UP의 데이터 변환 관계는 다음과 같습니다.
Visual Cobol Invoke
Visual Cobol Invoke는 Visual Cobol을 이용해 만들어진 리소스를 호출하기 위한 컴포넌트입니다.
X-UP 빌더에서 Visual Cobol Invoke 생성은 Palette에서 Visual Cobol Invoke를 선택하거나 X-UP DataSource View에서 Visual Cobol DataSource를 선택 후 메소드를 에디터로 드래그함으로써 빠르게 생성할 수 있습니다.
Visual Cobol Invoke는 다음과 같은 프로퍼티 속성탭을 가지고 있습니다.
General
InvokeInfo
InputBinding
OutputBinding
BeforeDataSource
AfterDataSource
Trim
ReturnCode
Exception
InvokeInfo
Invoke를 수행하기 위한 필수 정보가 출력됩니다.
Visual Cobol Invoke의 InvokeInfo에서 다음 정보를 출력합니다.
DataSource : 선택한 데이터소스 ( 클릭 시 해당 데이터소스 편집창 오픈 )
Class : 선택한 리소스의 클래스명
Method : 선택한 리소스의 메소드명
Cobol Invoke Dialog
아래는 Visual Cobol Invoke를 더블클릭했을 때 나타나는 Dialog입니다.
DataSource
DataSource : 데이터소스를 선택 (없다면 새로운 데이터소스 생성 가능)
Select Method
사용할 Method을 선택합니다.
In/Out Parameters :
선택된 엔티티의 in-out 정보가 출력됩니다.
다만 output 정보는 실제와 다를 수 있으므로 반드시 Test 를 통해 실행 결과를 확인합니다.
Test :
테스트를 수행한 결과를 출력합니다.
Value에 Test 값을 넣어주면 Test Result 가 나옵니다.
Trim
Invoke를 수행 후 Output Parameter로 나오는 데이터셋 내 String Type의 Column에 대하여 Trim 적용여부를 선택할 수 있습니다.
Visual Cobol Invoke의 Trim 탭에서 다음 정보를 출력합니다.
Column name : Output으로 나오는 컬럼명
Trim : String trim 기능 적용 여부 (마우스 클릭으로 기능 사용의 유무를 결정할 수 있습니다.)
체크 시 True, 체크하지 않을 경우 False
ReturnCode
Return value의 값에 따라 Exception을 처리할 수 있는 기능을 제공합니다.
Visual Cobol Invoke의 ReturnCode 탭에서 다음 정보를 출력합니다.
Return value
Exception message
Exception code
User Method Function
User Method는 모델 개발 시 사용자 정의 코드를 직접 작성할 수 있도록 합니다. 실제 자바 소스의 메소드로 생성되며 원하는 자바 코드를 자바 파일 없이 자유롭게 정의하여 모델에 추가할 수 있습니다.
User Method에서 제공하는 프로퍼티 속성은 다음과 같습니다.
General : 일반정보
Source : 자바 코드 창
DataSetRowLoop Function
DataSetRowLoop Function은 X-UP Builder Automation 모델 Editor내에서 DataSetRowLoop 함수에 한 개의 DataSet을 연결시키게 되면 DataSetRowLoop 함수에 연결된 데이터셋의 Row개수 만큼 반복하여 이벤트를 발생시키는 함수입니다.
DataSet을 DataSetRowLoop 함수에 마우스 연결한 뒤 DataSetRowLoop 컴포넌트에 마우스 우클릭하여 AddEvent >loopEvent를 클릭하면 이벤트(Start, End)가 나오고 Start Event에 파라미터로 Variable 타입의 rowIndex와 DataSet 타입의 dataset이 추출됩니다.
dataset과 rowIndex은 지역변수이며, globalParameterSet에 포함되지 않습니다. 또한 dataset의 경우 이벤트가 발생한 행의 데이터만을 가집니다. 즉 하나의 행만을 가진 데이터셋입니다.
DataSetRowLoop 함수에서 제공하는 프로퍼티 속성은 다음과 같습니다.
General : 일반정보
DataSet RowType : 데이터셋의 로우타입 설정 창
Normal
Inserted
Updated
Deleted
DataSet RowType에서 Normal, Inserted, Updated와 Deleted는 Toggle관계입니다.
Quick Merge Function
Quick Merge Function은 두개의 데이터셋을 가지고 새로운 데이터셋을 생성하기 위한 컴포넌트 입니다.
두 개의 데이터셋을 기준으로 하며 Sort Merge 혹은 Hash Join 알고리즘을 통해 데이터셋을 융합합니다.
Quick Merge Function 은 다음과 같은 프로퍼티 속성값을 가지고 있습니다.
General : 일반 정보
InvokeInfo : 설정 된 융합에 대한 정보를 보여줍니다.
Exception : 예외처리
이러한 융합을 위한 융합 모델 개발은 다음과 같은 단계로 진행됩니다.
대상 데이터셋 설정
융합 로직 구현
대상 데이터셋 설정
융합에 사용될 데이터셋을 설정합니다. X-UP모델에 의한 데이터셋 또는 사용자가 매개변수로 전달한 데이터셋이 설정될 수 있습니다.
융합 로직 구현
융합은 두가지 형태로 제공됩니다. SortMerge 알고리즘을 이용한 융합과 HashJoin 알고리즘을 이용한 융합입니다.
SortMerge : 두 개의 데이터셋을 입력된 KeyColumn을 기준으로 정렬한 후 융합을 수행합니다. 정렬하기 위해 JoinType(Inner Join or Outer Join)을 제공하며 있으며, 중복되는 컬럼을 융합에서 제외할 수 있습니다. 또한 입력되는 두 개의 데이터셋이 이미 정렬이 되어 있을 경우 Sort Option을 해제할 수 있습니다.
Sort Type을 통해 데이터를 정렬합니다. 기 정렬되어 있을 경우 정렬된 형태를 설정해야 합니다.
HashJoin : 두 개의 데이터셋을 설정 된 KeyColumn으로 Hash Table을 생성 한 뒤 해당 값을 통해 융합을 수행합니다. SortMerge와 마찬가지로 JoinType 옵션을 제공합니다.
Quick Merge API
Function과 동일하게 기능을 수행하는 API를 제공합니다. 제공되는 API Class는 다음과 같습니다.
com.nexacro.xapi.data.DataSetSortMerger
com.nexacro.xapi.data.DataSetHashMerger
자세한 내용은 X-UP API 문서를 참고합니다.
Merge Function
Merge Function은 복수의 데이터셋을 가지고 새로운 데이터셋을 생성하기 위한 컴포넌트입니다.
이러한 기능은 정형화된 복수의 데이터셋을 내장된 DBMS에 의해 SQL 쿼리문으로 표현된 로직이 실행되어 이루어집니다.
X-UP은 인메모리 DB를 사용하여 융합 모델을 구현하고 있습니다. 따라서 대량의 데이터를 출력하는 모델들을 융합할 경우 X-UP서버가 운영되는 WAS의 메모리 및 성능에 영향을 미칠 수 있습니다.
Merge Function은 다음과 같은 프로퍼티 속성탭을 가지고 있습니다.
General : 일반 정보
InvokeInfo : Merge를 수행할 SQL 쿼리문에 대한 정보를 출력합니다.
Index : Input Parameter로 연결된 파라미터 Index 컬럼 설정
Decimal : 소수점 자리 설정 (Input Parameter내의 bigdecimal 타입의 컬럼이 대상)
Exception : 예외 사항을 처리합니다.
이러한 융합을 위한 융합 모델 개발은 다음과 같은 단계로 진행됩니다.
대상 데이터셋 설정
융합 로직 및 SQL 쿼리 구현
새로운 데이터셋 생성
대상 데이터셋 설정
융합에 사용될 데이터셋을 설정합니다. X-UP모델에 의한 데이터셋 또는 사용자가 매개변수로 전달한 데이터셋이 설정될 수 있습니다.
융합 로직 및 SQL 쿼리 구현
X-UP의 융합은 내장된 DBMS를 사용하며, 융합하기 위한 로직은 SQL의 Select 구문으로 구현합니다. X-UP은 개발자가 구현한 SQL과 설정된 대상 데이터셋을 내장 DBMS에 전달하고 SQL 조회의 결과로 반환된 값을 처리하여 융합된 원시데이터를 생성합니다.
새로운 데이터셋 생성
내장된 DBMS에 의한 융합된 원시데이터는 그대로 반환되는 것이 아니라 새로 생성된 데이터셋으로 변환됩니다.
XML Parser Function
XML Parser Function은 XML 정보를 파싱하여 파라미터형식으로 생성하기 위한 컴포넌트입니다. 호출 시 Variable or Dataset 형식으로 가져옵니다.
XML Parser Function은 Invoke를 생성하기 위한 XML Parser Function Dialog 와 다음과 같은 프로퍼티 속성탭을 가지고 있습니다.
General
InvokeInfo
InputBinding
OutputBinding
Exception
InvokeInfo
Invoke를 수행하기 위한 필수 정보가 출력됩니다.
다른 Invoke 처럼 Invoke를 실행하기 위한 In-Out 정보가 이미 고정되어 있는 경우는 Information 만 출력합니다.
XML Parser Function의 경우 InvokeInfo에서 다음 정보를 출력합니다.
Parser List: 정의된 파서 리스트 출력
Parser Information : 선택한 파서의 파싱정보 출력
XML Parser Function Dialog
XML Parser Function을 생성하고자 할 경우 다음과 같은 다이얼로그가 출력됩니다.
Parse List: XML 파싱 리스트
XML Content : 직접 입력 가능하며 파싱하고자 하는 XML 정보를 직접 입력합니다.
Preview : 파싱된 결과를 미리 보여줍니다.
Parse Info : 선택한 파서의 파싱 정보를 정의합니다.
왼쪽 트리는 xml 정보를 트리 형태로 보여줍니다.
XPath : 트리에서 선택한 아이템의 XML Path를 정의
Const column : 데이터셋일 경우 const 컬럼을 정의
Condition : 특정 조건에 만족하는 것만 파싱하고자 할 경우 정의
Options : 중복된 아이템이름이 존재할 경우 value처리시 구분자를 입력
Extract DataSet Function
Extract DataSet Function은 여러 개의 Variable들을 Extract DataSet 함수에 입력 파라미터로 연결시켜 주게되면 자동적으로 각각의 Variable 값들이 하나의 데이터셋으로 만들어지는 함수입니다.
즉, Variable → DataSet으로 만드는 함수입니다.
Extract DataSet Function이 여러 개의 Variable과 연결되면 자동적으로 데이터셋이 만들어져 Output값으로 추출합니다.
Extract DataSet 함수에 연결된 Variables가 Update(갱신)되었을 경우 : Variables이 추가, 삭제될 때 만들어져 있던 Ouput DataSet을 삭제한 뒤, 갱신된 데이터셋을 새로 만듭니다.
Extract DataSet 함수에 연결된 Variable이 하나도 없을 경우 : Output 데이터셋을 삭제합니다.
Extract DataSet 함수는 다음과 같은 프로퍼티 속성탭을 가지고 있습니다.
General
Extract Variable Function
Extract Variable Function은 데이터셋의 Column값들을 손쉽게 Extract Variable 함수에서 Column Name, Column Value, Column Size가 각각의 Output 타입의 Variable 파라미터로 만들어지는 함수입니다.
즉, DataSet → Variable 으로 만드는 함수입니다.
데이터셋의 첫번째 행의 값이 사용 됩니다.
Extract Variable Function이 Dataset과 연결되면 Dataset내에 있는 Column 개수, 이름, 타입, 크기, 값에 맞춰 Variable들을 Ouput 값으로 추출합니다.
예를 들어, Dataset의 column이 4개라면 4개의 Variables가 Output으로 출력됩니다. 각각의 Variable 이름, 타입, 크기, 값은 Dataset 각각Column이름, 타입, 크기, 값으로 동일합니다.
Extract Variable 함수는 다음과 같은 프로퍼티 속성탭을 가지고 있습니다.
General
Decision
Decision은 조건에 따른 분기처리를 가능하게 합니다. 원하는 조건에 만족할 경우 특정 프로세스를 실행할 수 있습니다.
조건은 if / else if / else 세 가지로 구분되며 해당 커넥션을 선택하여 원하는 조건 타입으로 변경할 수 있습니다.
조건 커넥션의 프로퍼티 속성은 다음과 같습니다.
General : 모든 컴포넌트 공통
Connection Info : 모든 커넥션 노드 공통
Condition Type : if / elseIf / else 선택
Source : 조건 로직 입력
General
조건 커넥션의 General에는 Alias, Visible, Description 세 가지 정보를 정의할 수 있습니다.
특히 Visible의 경우는 다른 컴포넌트의 visible과 다르게 Name / Alias의 정보가 없기 때문에 커넥션 중앙에 Alias를 보여줄지를 결정합니다.
Connection Info
커넥션 정보 속성은 모든 커넥션의 공통 속성으로써 조건 커넥션 역시 동일합니다.
Routing : 커넥션 라우팅 타입을 결정합니다. (아래 그림의 오른쪽이 체크된 경우)
커넥션이 BendPoint 라우팅일 경우 사용자가 원하는 형태로 커넥션 모양을 정의할 수 있습니다.
Binding : 조건 커넥션일 경우 조건타입명을 보여줄지 여부를 결정합니다. 체크를 해제하면 커넥션에 보여지던 if / elseIf / else 같은 문자열을 숨김니다.
Condition Type
컨디션 타입은 사용자가 직접 컨디션 타입을 선택할 수 있습니다.
if / elseIf / else 선택할 수 있습니다.
Source
컨디션 코드는 사용자가 직접 자바 코드로 원하는 조건 로직을 정의할 수 있습니다.
에디터상에 존재하는 모든 파라미터들은 globalParameterSet에 존재하므로 원하는 파라미터를 가져와 조건 로직을 정의할 수 있습니다.
반드시 로직의 결과값으로 true or false 를 리턴하도록 합니다.
프로퍼티내에 존재하는 모든 자바 코드 편집창은 공통적으로 자바 에디터에서 제공했던 동일한 어시스트 팝업 및 자바 문법 오류 검사 기능을 가지고 있습니다.
Repeat Task
Repeat Task기능은 반복문을 구현하기 위한 기능으로 Decision 노드를 사용하여 처리합니다.
Decision End노드에서 Decision Start노드로 커넥션을 연결하면 자동으로 Repeat connection이 생성된다. 이때 반드시 1개의 조건만 있어야 가능하며 만약 1개 이상의 조건 커넥션이 존재한다면 Repeat connection은 생성되지 않습니다.
Break와 Continue 노드는 Repeat 구문 안에서만 사용 가능하며 원하는 시점에서 반복을 중단하거나 계속하고자 할 경우 사용될 수 있습니다.
Break나 Continue노드를 선택하면 Properties Condition Code에 소스코드가 나옵니다. 소스코드에 마우스 오른쪽 버튼을 누르고 Edit를 클릭하면 Conditon Code를 사용자가 직접 정의할 수 있습니다.
Debug and Break Point
Automation Model은 모델 디버깅을 위해 에디터상에서 노드에 직접 BreakPoint를 추가할 수 있습니다. BreakPoint가 노드에 추가되면 에디터가 소스 생성 시 자동으로 해당 라인에 BreakPoint를 등록합니다.
BreakPoint는 각각 노드를 선택한 후 추가하거나 다중 선택 후 한꺼번에 추가할 수도 있습니다.
추가된 BreakPoint는 Remove BreakPoint메뉴를 통해 삭제할 수 있습니다.
Automation Model의 모델 디버깅은 크게 두 가지 방법으로 할 수 있습니다.
에디터의 Debug 메뉴를 통한 빠른 디버깅
JUnit Test Class를 생성한 후 디버그 모드로 실행