이 장에서는 이전 장에서 만든 서비스를 사용하여 엑스플랫폼 애플리케이션을 개발하는 방법에 대해 설명합니다. 엑스플랫폼 애플리케이션은 UX Studio 툴을 이용하여 개발합니다. 서비스 개발은 이전 장을 참고합니다.
이번 장은 사용자가 엑스플랫폼 및 UX Studio에 익숙하다는 전제 하에 작성 되었습니다. 따라서, 기본적인 엑스플랫폼 애플리케이션 개발 단계에 대한 상세정보는 설명하지 않습니다.
이 장에서 설명하는 UX Studio를 이용한 Nex-UP 서비스를 사용한 애플리케이션 개발단계는 다음과 같습니다.
TypeDefinition-Service 등록하기
서비스 인터페이스 정보 가져오기
서비스 호출 스크립트 작성하기
공통 스크립트 추가하기
Nex-UP의 호출 스크립트를 사용하기 위하여LIB_NEXUP.xjs를 추가 합니다.
TypeDefinition-Service 등록하기
Nex-UP Editor에서 생성한 서비스를 호출하기 위해 각 화면 Script 영역에 LIB_NEXUP.xjs를 include합니다.
Field Name | Field Value |
---|---|
Prefix | ‘nexupSvc’ 서비스 호출 스크립트 코드에서 사용되는 Prefix를 입력합니다. |
Type | ‘bs’ Nex-UP 서비스를 호출하기 위해서는 반드시 bs 타입을 선택해야 합니다. |
URL | ‘http://localhost:8080/nexup’ Nex-UP 서버 URL을 입력합니다. |
ServiceList | ‘/studio/getServices.do’ 서비스 리스트 호출 url을 입력합니다. |
데이터셋Layout | ‘/studio/getService.do?’ 입출력 정보를 획득하기 위한 url을 입력합니다. |
Prefix의 경우 'nexupSvc'로 고정합니다. 서비스 호출 시 사용되는 값입니다.
서비스 인터페이스 정보 가져오기
서비스 인터페이스에 대한 정보를 가져오는 방법은 2가지 형태로 제공됩니다.
Nex-UP Editor에서 정보 가져오기
Nex-UP 서버에서 정보 가져오기
Nex-UP Editor에서 정보 가져오기
1
Nex-UP Editor의 SqlMap Explorer에서 저장된 서비스를 선택합니다.
2
Output Dataset을 선택하고 Ctrl + C 키를 이용하여 복사합니다.
3
UX Studio화면에 Output Dataset을 붙여넣기 합니다.
4
붙여넣기 했던 Output Dataset을 그리드로 Drag & Drop합니다.
Nex-UP 서버에서 정보 가져오기
1
Project Explorer에서 해당 Service를 Refresh하여 Nex-UP 서버의 서비스 목록을 가져옵니다.
가져온 서비스 목록이 표시 됩니다.
2
서비스 목록에서 'BOOKINFO_S' 서비스를 Refresh하여 인터페이스 정보(입출력 정보)를 가져옵니다.
3
Project Explorer의 서비스 인터페이스 정보에서 입출력 데이터셋을 Invisible Objects 에디터로 드래그 앤 드롭 합니다.
서비스 호출 스크립트 작성하기
Nex-UP 서비스를 호출하기 위한 스크립트는 Nex-UP Editor에서 제공합니다.
조회
1
Nex-UP Editor의 SqlMap Explorer에서 앞서 만든 서비스를 선택합니다.
2
마우스 우클릭으로 팝업 메뉴를 오픈합니다.
3
팝업에서 view CallFunction을 선택하면 Script를 확인 가능 합니다.
4
UX Studio에서 Button Event를 추가합니다.
5
앞서 Nex-UP에서 복사 했던 호출 스크립트를 버튼 이벤트 함수에 추가합니다.
6
CallBack 스크립트를 복사합니다.
7
Call Back 스크립트를 붙여 넣습니다.
8
UX Studio의 Quick View를 클릭하여 조회결과를 확인합니다.
추가, 삭제
1
UX Studio에서 dataset에 대한 추가, 삭제 버튼을 생성합니다.
2
UX Studio에서 dataset에 대한 추가, 삭제 스크립트를 작성합니다.
3
UX Studio에서 dataset에 대한 저장버튼을 생성합니다.
4
Nex-UP Editor에서 Insert, Update, Delete에 대한 서비스를 각각 선택하고 View Call Function 메뉴를 선택합니다.
5
호출스크립트를 복사합니다.
저장
1
UX Studio에서 저장버튼 더블클릭하여 이벤트를 추가합니다.
2
UX Studio에서 저장버튼 이벤트에 Nex-UP에서 복사한 스크립트를 붙여넣습니다.
3
그리드 편집이 가능하도록 그리드의 셀 속성값을 text로 변경합니다.
4
UX Studio에서 QuickView버튼을 클릭하여 테스트 합니다.
서비스 호출 구조
nexup.AddService함수를 사용하여 서비스를 추가하고 nexup.CallService함수를 통하여 추가된 서비스를 실행하게 됩니다.
nexup_AddService
nexup.AddService(serviceId, inDataset, outDataset, strParam, useRowType, condition)
Parameter | Description |
---|---|
serviceId | Nex-UP Editor에서 개발한 서비스 아이디(Sql Id) |
inDataset | 입력값으로 전송할 Dataset. 여러개일 경우 공백으로 추가 ex) "input0=Dataset0:U input1=Dataset1:U" |
outDataset | 출력값으로 전달받을 Dataset. 일반적으로 Table을 조회한 서비스는 하나의 out dataset을 전달받게 되며 Procedure나 Function에서는 공백으로 구분하여 여러 out dataset을 전달 받을 수 있습니다. ex) "Dataset2=output1" |
strParam | parameter값을 설정합니다. 여러개인 경우에는 공백으로 구분합니다. ex) "a=b c=d" |
useRowType | Nex-UP Editor에서 Looping Dataset을 선택한 경우 Nex-UP Framework에서전달받은 Dataset으로 서비스를 수행하는 방식을 정의 Looping Dataset속성값을 가지는 Dataset을 기준으로 반복 수행됨. - rowType(기본값) : Dataset의 RowType과 Nex-UP Editor에서 만든 서비스의 SqlType과 매핑되는 서비스를 실행 - all : 전달받은 전체 Dataset만큼 서비스를 반복 실행 - column=value : 특정 컬럼의 값이 value와 일치하는 경우만 서비스가 실행됨. |
condition | 서비스를 실행하기 위한 선행조건 여러 서비스 조합시에 앞단서비스를 처리하고 그 결과에 대하여 서비스의 실행여부를 설정할 수 있습니다. |
nexup_CallService
nexup_CallService(trId, CallbackFunc, Async, DataType, Compress, mybatisExecutorType)
Parameter | Description |
---|---|
trId | transaction을 구분하기 위한 ID값 |
CallbackFunc | transaction의 결과를 돌려줄 Function의 이름 |
Async | 비동기 여부를 지정합니다. |
DataType | 전송할 데이터의 포맷을 지정합니다. - 0 : XML - 1 : Binary 기본값 : 0 |
Compress | 통신시 PostData를 압축할지 여부를 지정합니다. - true : 압축 - false : 압축하지 않음 기본값 : false |
mybatisExecutorType | Insert Update, Delete 서비스 사용시 서비스 실행 방식을 선택 - simple(기본값) : 여러개의 DB Query가 실행될 경우 DB Query가 각각 개별적으로 실행 - batch : 여러개의 DB Query가 실행될 경우 Query를 묶어서 한번에 실행 |
서비스 호출 예시
기본 호출
//Service Add(BOOK.EX_BOOKINFO_S) nexup_AddService("BOOK.EX_BOOKINFO_S", "", "dsBOOKINFO=dsBOOKINFO", "P_PARAM=" + this.edtTtitle.value); //Call Service 호출 nexup_CallService("serviceId", "fn_CallBack");
Dataset의 rowType에 따라 입력, 수정, 삭제 처리
//Service Add(BOOK.EX_BOOKINFO_I) nexup_AddService("BOOK.EX_BOOKINFO_I", "dsBOOKINFO=dsBOOKINFO:U", "", ""); //Service Add(BOOK.EX_BOOKINFO_D) nexup_AddService("BOOK.EX_BOOKINFO_D", "dsBOOKINFO=dsBOOKINFO:U", "", ""); //Service Add(BOOK.EX_BOOKINFO_U) nexup_AddService("BOOK.EX_BOOKINFO_U", "dsBOOKINFO=dsBOOKINFO:U", "", ""); //Call Service 호출 nexup_CallService("serviceId", "fn_CallBack");
상위 쿼리의 결과에 따른 분기 처리 (condition사용)
//Service Add(BOOK.EX_BOOKINFO_S) nexup_AddService("BOOK.EX_BOOKINFO_S", "", "dsBOOKINFO=dsBOOKINFO", ""); nexup_AddService("BOOK.noname2", "", "Dataset0=Dataset0", "", "", "#{dsBOOKINFO.ISBN} == null"); nexup_AddService("BOOK.noname3", "", "Dataset0=Dataset0", "", "", "#{dsBOOKINFO.ISBN} != null"); //Call Service 호출 nexup_CallService("serviceId", "fn_CallBack");
첫 BOOK.EX_BOOKINFO_S를 실행하고 출력결과 dsBOOKINFO를 받습니다.
dsBOOKINFO의 ISBN의 컬럼값이 있는지 없는지를 체크하여 선택적으로 서비스를 수행합니다.
조건식은 MyBatis 구문형식을 따릅니다.