엑스플랫폼 애플리케이션 개발

이 장에서는 이전 장에서 만든 서비스를 사용하여 엑스플랫폼 애플리케이션을 개발하는 방법에 대해 설명합니다. 엑스플랫폼 애플리케이션은 UX Studio 툴을 이용하여 개발합니다. 서비스 개발은 이전 장을 참고합니다.

이번 장은 사용자가 엑스플랫폼 및 UX Studio에 익숙하다는 전제 하에 작성 되었습니다. 따라서, 기본적인 엑스플랫폼 애플리케이션 개발 단계에 대한 상세정보는 설명하지 않습니다.

이 장에서 설명하는 UX Studio를 이용한 Nex-UP 서비스를 사용한 애플리케이션 개발단계는 다음과 같습니다.

공통 스크립트 추가하기

Nex-UP의 호출 스크립트를 사용하기 위하여LIB_NEXUP.xjs를 추가 합니다.

공통 라이브러리 사용 - LIB_NEXUP.xjs

공통 라이브러리 사용 - 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에서 정보 가져오기

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를 확인 가능 합니다.

서비스 호출 스크립트 확인 - XPLATFORM

서비스 호출 스크립트 확인 - XPLATFORM

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

호출스크립트를 복사합니다.

Insert, Update, Delete 를 위한 스크립트를 복사합니다.

Insert, Update, Delete 를 위한 스크립트를 복사합니다.

저장

1

UX Studio에서 저장버튼 더블클릭하여 이벤트를 추가합니다.

저장버튼 이벤트 추가

저장버튼 이벤트 추가

2

UX Studio에서 저장버튼 이벤트에 Nex-UP에서 복사한 스크립트를 붙여넣습니다.

저장 스크립트 붙여넣기

저장 스크립트 붙여넣기

3

그리드 편집이 가능하도록 그리드의 셀 속성값을 text로 변경합니다.

저장 스크립트 붙여넣기

저장 스크립트 붙여넣기

4

UX Studio에서 QuickView버튼을 클릭하여 테스트 합니다.

그리드에 데이터를 추가

그리드에 데이터를 추가

서비스 호출 구조

nexup.AddService함수를 사용하여 서비스를 추가하고 nexup.CallService함수를 통하여 추가된 서비스를 실행하게 됩니다.

서비스 호출 구조

서비스 호출 구조

  1. 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

서비스를 실행하기 위한 선행조건 여러 서비스 조합시에 앞단서비스를 처리하고 그 결과에 대하여 서비스의 실행여부를 설정할 수 있습니다.

  1. 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를 묶어서 한번에 실행

서비스 호출 예시

  1. 기본 호출

//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");
  1. 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");
  1. 상위 쿼리의 결과에 따른 분기 처리 (condition사용)

condition 사용

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");