4.프로젝트

넥사크로플랫폼으로 실행되는 그룹 단위를 Project라고 부르며, xprj 확장자를 가진 파일로 생성되어 관리 됩니다. Project는 기본적으로 ADL, TypeDefinition, Global Variables, FDL로 관리되며 이 단락에서는 각각의 항목에 대해 설명합니다.

4.1Project 생성 마법사생성 마법사:Project 생성 마법사

Project 생성 마법사를 이용하여 새로운 Project를 생성할 수 있습니다. 메뉴 File[New – Project]에서 Project 생성 마법사를 시작합니다.

4.1.11단계 Location

생성될 Project의 Frame Template와 생성될 경로 및 Project명을 입력하는 단계입니다. Project명은 반드시 입력해야 하는 필수 항목이며, 생성될 경로에 동일한 Project명이 존재할 경우에는 생성할 수 없습니다.

표 4-1New Project Wizard 1단계


속성

설명

1

Frame Template

• Default

Default Frame으로 생성

2

Project Template

기존 Project Template를 선택

3

Show List Icon

Project Icon 표시 방법을 결정

4

Project Information

현재 선택된 Template를 표시

5


• Add to Current Project

현재 작업중인 Project에 추가

• Create a new Project

새 Project를 생성

6

Name

Project 이름

7

Location

Project의 Root 폴더

같은 폴더 내에 같은 이름으로 프로젝트를 생성할 수 없습니다. 다른 폴더 또는 다른 이름으로 프로젝트를 생성해야 합니다.

프로젝트, Form, 오브젝트 id 등 이름을 지정하는 항목에서는 아래 특수문자특수문자를 사용할 수 없습니다. 해당 문자를 입력하고 다음 단계로 넘어가려 시도하면 오류 메시지가 나타나고 처리가 되지 않습니다.

tab new-line return \ / : ‘ * ? “ < > | ! @ # $ % ^ & ( ) - + = ~ [ ] { } , `

특수 문자 외 아래 항목의 문자도 사용할 수 없습니다. 해당 문자는 입력이 제한되거나 입력 시 오류 메시지가 나타납니다.

Null 문자열, .(Dot), 숫자로 시작하는 문자열, 2바이트 문자

윈도우 환경에서는 특정 이름으로 새 폴더나 파일을 만들 수 없습니다. 프로젝트명으로 새로운 폴더가 만들어지는 넥사크로플랫폼 역시 해당 이름을 사용할 수 없습니다.

사용할 수 없는 이름은 아래 링크를 참고하세요.

http://msdn.microsoft.com/en-us/library/aa365247.aspx#naming_conventions

4.1.22단계 Definition

Project의 TypeDefinition을 설정합니다.

기본 Character Set은 UTF-8로 지정됩니다.

그림 4-1New Project Wizard 2단계

표 4-2New Project Wizard 2단계


속성

설명

1

TypeDefinition

XML 선택

• Create new TypeDefinition from default

Default TypeDefinition으로 새로운 TypeDefinition 생성

• Existing TypeDefinition

기존 TypeDefinition을 적용

2

TypeDefinition

XML 경로

TypeDefinition XML의 경로

4.1.33단계 Screen

Project의 Screen Info를 설정합니다. Screen이란 Application 구동 시 필요한 화면 크기등과 관련된 정보들의 모음입니다.


설명

1

Screen 정보를 편집합니다.

2

Template 목록에서 Screen 정보를 가져옵니다.

3

Screen을 추가합니다.

4

Screen을 삭제합니다.

5

Screen 정보가 포함된 ADL 파일을 생성합니다.

표 4-3New Project Wizard 3단계

Screen 속성

설명

name

Screen 이름 (고유 식별자)

type

사용 장비 형태

- 'desktop', 'phone', 'tablet' 중 여러 항목을 선택할 수 있습니다.

screenwidth

Screen 너비 (입력 제한: 0~65536)

sizeorientation

screenwidth 속성을 처리하는 방향을 지정합니다.

- 'landscape', 'portrait' 중 한 가지 항목을 선택합니다.

- 기본값 'landscape' (type 속성에 'desktop' 또는 'tablet' 항목이 포함된 경우)

- 기본값 'portrait' (type 속성이 'phone'인 경우)

autozoom

자동 확대, 축소 기능 사용 여부를 지정합니다.

- true, false 중 한 가지 항목을 선택합니다. (기본값은 false)

- type 속성에 'desktop'일 경우에는 autozoom 설정은 적용하지 않습니다.

zoommin

autozoom 기능 사용 시 최솟값 정보를 지정합니다.

- 음수 지정 시 무제한, 기본값은 -1

zoommax

autozoom 기능 사용시 최댓값 정보를 지정합니다.

- 음수 지정 시 무제한, 기본값은 -1

systemos

Screen에서 사용할 OS 정보

- 'windows', 'android', 'ios' 중 여러 항목을 선택할 수 있습니다.

- 기본값은 모든 OS 속성값을 포함합니다.

systemlocale

Screen에서 사용할 Locale 정보

- 'af_ZA' … "zh_TW" 중 여러 항목을 선택할 수 있습니다.

- 기본값은 모든 Locale 속성값을 포함합니다.

formlayoutwidth

Screen에서 사용할 Form Layout의 너비를 지정합니다.

formlayoutheight

Screen에서 사용할 Form Layout의 높이를 지정합니다.

themeid는 Screen별 Application 속성으로 ADL 생성 후 별도 편집기에서 지정할 수 있습니다.

4.2Application Definition Language(ADL)ADL(Application Definition Language)

Project에 전반적으로 적용되는 Style이나 Theme, MainFrame 등을 관리합니다. Launch Project시 활성화된 ADL로 Project의 Style, Theme등이 적용됩니다.

그림 4-2ADL Item

표 4-4ADL[Popup Menu]

메뉴

기능

Edit Source

선택된 ADL의 XML을 편집하는 Source 편집 창으로 이동

Edit Script

선택된 ADL의 Script를 편집하는 Script 편집 창으로 이동

Insert ADL Item

• Style

스타일 CSS파일을 추가

• Tray

Tray 추가

• Theme

Xtheme 파일 추가

• Screen

Screen 정보 추가

Set as Active ADL

선택된 ADL을 활성화

활성화된 ADL에서 해당 메뉴 기능이 비활성화됨

Copy

지원되지 않는 기능

Cut

지원되지 않는 기능

Paste

지원되지 않는 기능

Collapse All

ADL 하위 Tree Item을 감춤

Expand All

ADL 하위 Tree Item을 펼침

Screen Template

Screen Template 목록 편집

Copy Full Path

선택된 ADL 파일이 저장된 경로를 클립보드에 복사

Open Containing Folder

선택된 ADL 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

지원되지 않는 기능

Save

선택된 ADL의 정보를 저장

Save As…

선택된 ADL의 정보를 다른 이름으로 저장

Rename

선택된 ADL의 이름을 변경

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

• Generate File

Refresh

ADL XML을 Reload

Delete

선택된 ADL을 삭제

4.2.1MainFrame

넥사크로플랫폼 애플리케이션의 기본 화면을 구성하는 요소입니다. 하위 구성 요소로 ChildFrame을 가지고 있으며 프로젝트와 함께 기본 생성됩니다.

그림 4-3MainFrame[Popup Menu]

표 4-5MainFrame[Popup Menu]

메뉴

기능

Edit

MainFrame 하위 Tree Item 편집

Insert Frame

MainFrame 하위 Tree Item 추가

Copy

지원되지 않는 기능

Cut

지원되지 않는 기능

Paste

지원되지 않는 기능

Collapse All

MainFrame의 하위 Tree Item을 감춤

Expand All

MainFrame의 하위 Tree Item을 펼침

Copy Full Path

선택된 MainFrame 파일이 저장된 경로를 클립보드에 복사

Open Containing Folder

선택된 MainFrame 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

지원되지 않는 기능

Save

편집 중인 MainFrame을 저장

Save As…

Main Menu에서는 지원되지 않는 기능

Rename

Main Menu에서는 지원되지 않는 기능

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

Refresh

지원되지 않는 기능

Delete

MainFrame 삭제

ChildFrame은 MainFrame 하위에 올 수 있는 프레임으로 Form 정보를 Url 형태로 가지고 있어 해당 Form을 화면에 표시합니다. 기본적으로 Form이 로딩될 수 있는 기본 단위 화면을 의미합니다.

4.2.2Theme

사용자가 제작한 Theme를 적용하여 Project의 스타일을 쉽게 변경할 수 있습니다.

그림 4-4Themes[Popup Menu]

표 4-6Themes[Popup Menu]

메뉴

기능

Edit

Theme Editor를 호출

New Theme

새 Theme를 추가

Insert Theme

Theme 삽입

Copy

지원되지 않는 기능

Cut

지원되지 않는 기능

Paste

지원되지 않는 기능

Collapse All

Themes 하위 Tree Item을 감춤

Expand All

Themes 하위 Tree Item을 펼침

Copy Full Path

활성화된 테마 파일이 저장된 경로를 클립보드에 복사

Open Containing Folder

활성화된 테마 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

지원되지 않는 기능

Save

지원되지 않는 기능

Save As…

지원되지 않는 기능

Rename

지원되지 않는 기능

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

Refresh

지원되지 않는 기능

그림 4-5Theme[Popup Menu]

표 4-7Theme[Popup Menu]

메뉴

기능

Edit

Theme Editor를 호출

Set as Active Theme

Project가 실행될 때 선택된 Theme가 적용되도록 설정

선택된 테마에서는 비활성화

Copy

지원되지 않는 기능

Cut

지원되지 않는 기능

Paste

지원되지 않는 기능

Collapse All

지원되지 않는 기능

Expand All

지원되지 않는 기능

Copy Full Path

테마 파일이 저장된 경로를 클립보드에 복사

Open Containing Folder

테마 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

Theme Editor 닫기

Save

편집 중인 Theme를 저장

Save As…

편집 중인 Theme를 다른 이름으로 저장

Rename

테마 파일 이름 변경

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

Refresh

지원되지 않는 기능

Delete

선택된 테마 파일를 삭제

이미지 파일을 확인하는 경우에는 이미지 미리보기 창 아래에 이미지 파일 관련 정보가 추가적으로 보입니다.

그림 4-6Theme Editor

그림 4-7Theme Editor[Popup Menu]

표 4-8Theme Editor[Popup Menu]

메뉴

기능

Edit

CSS를 편집할 수 있는 CSS Editor를 호출

(CSS Editor의 상세설명은 Style의 설명을 참조)

New Folder

Theme안에 새 Folder를 생성

Insert File

그림 파일 또는 CSS 파일 추가

Remove File

Tree에서 선택된 파일을 목록에서 제거

Rename

Tree에서 선택된 파일의 이름을 수정

Set Extern

Deploy Theme기능에서 Extern File로 저장 될 Image를 선택. CheckBox가 Uncheck상태로 설정됨

(단, default.xtheme등의 기본제공 Theme선택 시에는 나타나지 않음)

Unset Extern

위 Set Extern으로 설정된 Extern File을 해제. CheckBox가 Check상태로 설정됨

(단, default.xtheme등의 기본제공 Theme선택 시에는 나타나지 않음)

4.2.3ScreenInfo

‘New Project Wizard’에서 입력한 Screen정보를 수정하거나 새로운 Screen정보를 입력할 수 있는 Editor기능이 추가되었습니다.

‘Project Explorer’에서 ADL Item에서 제공되는 Popup메뉴를 사용하여 새로운 Screen정보를 추가하거나 ADL Item의 하위 정보로 표시되는 ‘ScreenInfo’등을 선택하여 편집할 수 있습니다.

그림 4-8ScreenInfo[Popup Menu]

표 4-9ScreenInfo[Popup Menu]

메뉴

기능

Edit

Screen Editor를 호출

Insert Screen

새로운 Screen정보 추가

Copy

지원되지 않는 기능

Cut

지원되지 않는 기능

Paste

지원되지 않는 기능

Collapse All

ScreenInfo 하위 Tree Item을 감춤

Expand All

ScreenInfo 하위 Tree Item을 펼침

Copy Full Path

선택된 ADL 파일이 저장된 경로를 클립보드에 복사

(ScreenInfo 정보는 ADL 파일에 포함되어 있습니다)

Open Containing Folder

선택된 ADL 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

지원되지 않는 기능

Save

편집 중인 ScreenInfo 를 저장

Save As…

지원되지 않는 기능

Rename

지원되지 않는 기능

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

Refresh

지원되지 않는 기능

‘ScreenInfo Editor’는 기존에 제공되던 ‘Variable Editor’와 같은 방식으로 편집기능을 제공합니다.

표 4-10ScreenInfo Editor


속성

설명

1

Add

새 Screen정보를 추가하는 버튼

2

Del

ScreenInfo그리드에서 선택된 Screen정보를 삭제하는 버튼

3

Screen정보 그리드

Project가 사용할 Screen정보를 보여주는 그리드

4

Property Window

ScreenInfo그리드에서 선택된 Screen정보는 Properties Windows에서 동일하게 표시되며 수정할 수 있습니다.

5

Add Application Property

Screen 정보에 애플리케이션 속성 정보를 추가하는 버튼

Add Application Property

속성 창에서 'Add Application Property' 항목 선택 시 애플리케이션 속성 정보를 추가할 수 있는 대화상자가 나타납니다.

표 4-11ScreenInfo Editor


속성

설명

1

Screen name

선택된 Screen name 표시

2

정렬 방식

속성 목록 정렬 방식을 선택합니다 (Group/Alphabet)

3

애플리케이션 속성 목록

Screen 정보에 추가할 수 있는 애플리케이션 속성 정보가 표시됩니다. 값을 입력하고 'OK' 버튼을 클릭하면 속성 창에 'Application' 그룹이 생성되고 지정한 속성 항목이 추가됩니다.

  • 속성 목록에서 값을 삭제하면 속성 창에서도 해당 속성 항목기 삭제됩니다.

추가된 애플리케이션 속성 정보는 컨텍스트 메뉴에서 삭제할 수 있습니다.

4.2.4Tray

윈도우 시스템 트레이에 하나 이상의 애플리케이션 아이콘을 추가하고 팝업 메뉴 등을 사용해 애플리케이션을 제어할 수 있습니다.

트레이 추가

ADL 메뉴에서 'Insert ADL Item'을 선택하고 'Tray' 항목을 선택하면 새로운 트레이 아이템을 추가할 수 있습니다. 트레이 아이템이 추가되면 'Trays'라는 그룹이 생성되고 추가한 트레이를 확인할 수 있습니다. 새로운 트레이 항목을 추가하려면 'Trays' 그룹 메뉴에서 'Insert Tray' 항목을 선택하거나 트레이 아이템 편집창에서 추가 버튼을 선택합니다.

하나 이상의 트레이를 추가한 경우에는 애플리케이션이 시작되면서 시스템 트레이에 여러 개 아이콘을 표시합니다.

아이템 추가

시스템 트레이에서 애플리케이션 아이콘 클릭 시 한가지 동작만 처리하도록 할 수 있습니다. 하지만 더 많은 기능을 사용하려면 팝업 메뉴 형태로 기능을 표시하고 사용자가 원하는 기능을 선택할 수 있도록 지원합니다.

트레이를 선택하고 속성창에서 items 항목을 선택하면 트레이팝업메뉴아이템을 편집할 수 있는 창이 나타납니다. 새로운 아이템을 추가하고 innerdataset에 원하는 항목을 추가합니다.

innerdataset에 항목을 추가하는 것은 Menu 컴포넌트나 PopupMenu 컴포넌트에서 사용하는 형식과 같습니다. levelcolumn 값은 0부터 시작하며 captioncolumn에 '&'문자를 추가하면 단축키로 사용할 수 있습니다.

트레이 실행

런타임으로 애플리케이션 실행 시 등록한 트레이는 자동으로 실행되어 시스템 트레이에 아이콘으로 표시됩니다. 해당 트레이를 마우스로 클릭해 등록한 아이템을 팝업 메뉴로 실행하려면 아래와 같이 이벤트를 추가합니다.

this.Tray0_onlbuttonup = function(obj:Tray, e:nexacro.MouseEventInfo)
{
    obj.items['item00'].trackPopup();
}

4.3Type Definition의 편집

넥사크로 스튜디오에서는 Component, Service, Update를 Type Definition에 등록해서 Prefix로 사용할 수 있습니다. Type Definition에 등록된 각각의 항목은 Edit TypeDefinition에서 기존 항목의 수정, 삭제 및 신규 항목을 추가할 수 있습니다.

그림 4-9Project_Explorer_1

그림 4-10Project_Explorer_2

표 4-12TypeDefinition[Popup Menu]

메뉴

기능

Edit

TypeDefinition을 편집할 수 있는 편집창 호출

Insert Typedefinition Item

TypeDefinition의 Protocols에 새로 프로토콜을 추가할 수 있는 프로토콜 추가 마법사 호출

Copy

지원되지 않는 기능

Cut

지원되지 않는 기능

Paste

지원되지 않는 기능

Collapse All

TypeDefinition의 하위 트리 아이템을 감춤

Expand All

TypeDefinition의 하위 트리 아이템을 펼침

Copy Full Path

TypeDefinition 파일이 저장된 경로를 클립보드에 복사

Open Containing Folder

TypeDefinition 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

지원되지 않는 기능

Save

지원되지 않는 기능

Save As…

지원되지 않는 기능

Rename

지원되지 않는 기능

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

• Generate Service

• Generate File

Refresh

TypeDefinition XML을 Reload

4.3.1Edit TypeDefinitionTypeDefinition:Edit TypeDefinition

Edit TypeDefinition은 Project Explorer창에서 TypeDefinition 항목을 더블 클릭하거나 메뉴에서 편집창을 호출해 사용할 수 있습니다.

그림 4-11Edit_TypeDefinition

표 4-13Component Definition

Column

설명

Type

Component의 Type

ID

Component의 ID

ClassName

Component의 ClassName

Image

Component 툴바에서 사용될 이미지

Default Width

Component 기본 넓이

Default Height

Component 기본 높이

그림 4-12Edit_TypeDefinition-Modules

그림 4-13Edit_TypeDefinition-Protocols_2

디바이스 타입

Column

설명

Runtime

ModuleName

바이너리 모듈의 이름입니다. TargetPath의 경로로부터 [ModuleName].dll 파일을 찾아서 등록합니다.

TargetPath

바이너리 모듈을 받아올 경로입니다.

HTML5

Classname

HTML5 환경에서 사용할 프로토콜의 클래스 이름입니다.

Android

Classname

Android 환경에서 사용할 프로토콜의 클래스 이름입니다.

iOS

Classname

iOS 환경에서 사용할 프로토콜의 클래스 이름입니다.

그림 4-14Edit_TypeDefinition_Services

표 4-14Service Definition

Column

설명

PrefixID

Service의 PrefixID

Type

Service의 Type

Url

Service 경로

CacheLevel

Cache 기능사용 여부

Codepage

Code Page 이름

Language

사용 언어

Version

Service의 버전 정보

Communication

version

Communication 버전 정보

ServiceList

Service List 호출 경로 (Type을 'bs', 'metadata'로 지정한 경우 사용)

DatasetLayout

Model Service Layout 호출 경로 (Type을 'bs', 'metadata'로 지정한 경우 사용)

ExecuteUrl

Business Service가 실행될 경로 (Type을 'bs'로 지정한 경우 사용)

File Extension

서비스에 관리할 대상 파일 확장자 목록 (Type을 'file'로 지정한 경우 사용)

세미콜론(;)으로 확장자를 구분해 입력 (예, js;txt;xfdl;xml)

Include

Sub-directory

하위 디렉토리 포함 여부 (Type을 'file'로 지정한 경우 사용)

Search Column

Metadata 편집기에서 데이터 탐색 시 탐색 범위 컬럼을 지정 (Type을 'metadata'로 지정한 경우 사용)

세미콜론(;)으로 확장자를 구분해 입력하며 입력하지 않은 경우 모든 컬럼을 탐색 범위로 지정

PrefixID 지정 시 아래 항목은 사용하지 않을 것을 권장합니다. 사용 시 오류가 발생할 수 있습니다.


- 빈 문자열

- 숫자로 시작하는 문자열

- 이미 지정된 PrefixID와 중복된 문자열

- 특수문자를 포함한 문자열

space(' '), \t, \n, \r, \, /, :, ;, *, ?, ', ", <, >, |, !, @, #, $, %, ^, &, (, ) , -, +, =, ~, [, ], {, }, `, comma(,), dot(.)

선택한 Type 값에 따라 [Project Explorer]에 표시하는 파일 형식이 제한됩니다.

표 4-15Service Definition

Service Type

File extension

form

*.xfdl, *.xjs, *.js

js

*.js, *.xjs

file

제한 없음

File Extension에 확장자를 지정한 경우에는 해당 확장자로 제한

css

*.css

JSP

PrefixID로만 사용하며 [Project Explorer]에 표시하지 않습니다.

ASP

PrefixID로만 사용하며 [Project Explorer]에 표시하지 않습니다.

SAP

PrefixID로만 사용하며 [Project Explorer]에 표시하지 않습니다.

bs

business service dataset

metadata

metadata service dataset

각 서비스는 Type에 따라 허용된 확장자 파일만 관리합니다. 허용되지 않는 파일은 [Project Explorer]에 표시하지 않습니다.

Generate, Deploy 처리 시 허용된 파일 형식 외 파일은 복사되지 않습니다. 예를 들어 Type이 'form'인 서비스 디렉토리에 *.json 파일이 있다면 해당 파일은 복사되지 않습니다.

Type이 'JSP', 'ASP', 'SAP'인 서비스는 디렉토리 자체가 복사되지 않습니다.

Type이 'JSP', 'ASP', 'SAP'인 경우에는 넥사크로 스튜디오에서 파일 목록을 표시하지 않습니다. PrefixID로 사용하는 용도로만 사용합니다.

그림 4-15Edit_TypeDefinition-Update_3

표 4-16Update Definition

Column

설명

SystemType

시스템 타입 선택 (Windows, Android, iOS)

OS

운영체제 타입 선택

Device

기기 타입 선택

UpdateUrl

Component를 업데이트할 서버 경로

EngineUrl

Engine 설치 URL

EngineSetupKey

Engine 설치키

EngineVersion

Engine 버전

Timeout

대기시간 (SystemType을 'Android', 'iOS'로 지정한 경우 사용)

Retry

재시도 횟수 (SystemType을 'Android', 'iOS'로 지정한 경우 사용)

AutoUpdate

auto, manual 중 선택 (SystemType을 'Android', 'iOS'로 지정한 경우 사용)

Description

기타 메모 (시스템 실행에는 영향을 미치지 않습니다)

Resource

Type

리소스 파일 타입 (Object, Theme, File, Engine)

File

파일명 (확장자 포함)

TargetPath

업데이트 경로 (Destination)

Version

업데이트 파일 버전

UpdateUrl 경로로 지정한 도메인이 XADL 경로와 일치하지 않는 경우에는 업데이트하지 않습니다.

XADL 경로가 로컬로 지정된 경우에는 도메인 정보와 상관없이 업데이트합니다.

모바일 디바이스 앱 개발 시 필요한 옵션에 대한 설명은 관리자 가이드 문서를 참조해주세요.

14.0.1.3200 이후 버전에서는 보안 취약점 보완에 따라 아래와 같은 제약 사항이 추가되었습니다.


• Targetpath 항목값은 Alias 경로로 지정한 경우에만 업데이트할 수 있습니다.

- 사용할 수 있는 Alias 경로는 아래 문서를 참고하세요.

- http://docs.tobesoft.com/admin_guide_nexacro_14_ko#29a8bc0eb7c0e7ff

• Targetpath 항목값이 시작메뉴 폴더인 경우에는 업데이트를 허용하지 않습니다.

• Targetpath 항목값으로 "../" 와 같은 상대경로를 입력할 수 없습니다.

4.3.2Service RefactoringTypeDefinition:Service Refactoring

Type Definition에서 사용중인 Service의 PrefixID를 변경할 경우에 사용중인 부분을 자동으로 변경된 PrefixID로 변경해주는 Refactoring 기능이 수행됩니다.

그림 4-16Service Rename

현재 Project에서 사용중인 변경 전 PrefixID를 모두 리스트로 보여주며 ‘Rename’을 클릭할 때 체크되어 있는 항목을 자동으로 변경해 줍니다.

4.3.3Metadata

Metadata 시스템에서 관리하는 데이터를 넥사크로 스튜디오에 연동하는 기능입니다. 처리된 Metadata는 Dataset으로 사용하거나 id 또는 text 속성값으로 가져와 사용할 수 있습니다.

Metadata 등록

[TypeDefinition > Services] 탭에서 등록합니다.

하나의 프로젝트에 Metadata 서비스는 하나만 등록할 수 있습니다. 하나 이상 항목을 등록하려 하는 경우 아래와 같은 메시지가 출력되며 저장되지 않습니다.

실제 서비스를 처리하기 위해서는 기본 항목 외에 'Service List', 'DatasetLayout' 항목을 지정해주어야 합니다.

Service List

서비스 데이터셋 파일을 지정합니다. 제공되는 파일 형태는 아래와 같습니다. Metadata 처리를 위해 컬럼 데이터 중 'DOMAIN', 'MODEL' 항목은 'metadata'로 입력해야 합니다.


Column ID

설명 (고정값)

1

DOMAIN

metadata

2

MODEL

metadata

3

DESCRIPTION

설명

4

DATASOURCE

사용한 데이터소스

<?xml version="1.0" encoding="utf-8"?>
<Root xmlns='http://www.nexacroplatform.com/platform/Dataset' ver='4000'>
<Parameters>
    <Parameter id="ErrorCode" type="int">0</Parameter>
    <Parameter id="ErrorMsg" type="string">success</Parameter>
</Parameters>
<Dataset id="termService">
    <ColumnInfo>
        <Column id="DOMAIN" type="string" size="255"/>
        <Column id="MODEL" type="string" size="255"/>
        <Column id="DESCRIPTION" type="string" size="255"/>
        <Column id="DATASOURCE" type="string" size="255"/>
    </ColumnInfo>
<Rows> 
    <Row>
        <Col id="DOMAIN">metadata</Col>
        <Col id="MODEL">metadata</Col>
        <Col id="DESCRIPTION">description</Col>
        <Col id="DATASOURCE">DB</Col>
    </Row> 
</Rows>
</Dataset>
</Root>

DatasetLayout

Dataset Layout에 담길 정보를 지정합니다. 제공되는 파일 형태는 아래와 같습니다. Dataset Layout에는 output Dataset과 metadata Dataset 정보를 기술합니다. output Dataset에서 제공하는 컬럼 중 'name' 항목은 'metadata'로 입력해야 하며 metadata Dataset의 id 항목도 'metadata'로 입력해야 합니다.


Column ID

설명 (고정값)

1

name

metadata

2

type

dataset

3

description

데이터에 대한 설명

<?xml version='1.0' encoding='utf-8'?>
<Root xmlns='http://www.nexacroplatform.com/platform/Dataset' ver='4000'>
<Parameters>
    <Parameter id='svcid' type='string'></Parameter>
    <Parameter id='ErrorCode' type='int'>0</Parameter>
</Parameters>
<Dataset id='output'>
    <ColumnInfo>
        <Column id='name' type='STRING' size='50'/>
        <Column id='type' type='STRING' size='50'/>
        <Column id='description' type='STRING' size='256'/>
    </ColumnInfo>
    <Rows>
        <Row>
            <Col id='name'>metadata</Col>
            <Col id='type'>dataset</Col>
            <Col id='description'>Color code</Col>
        </Row>
    </Rows>
</Dataset>
<Dataset id='metadata'>
    <ColumnInfo>
        <Column id='CODE' type='STRING' size='50'/>
        <Column id='NAME' type='STRING' size='50'/>
    </ColumnInfo>
    <Rows>
        <Row>
            <Col id='CODE'>0048BA</Col>
            <Col id='NAME'>Absolute Zero</Col>
        </Row>
        <Row>
            <Col id='CODE'>4C2F27</Col>
            <Col id='NAME'>Acajou</Col>
        </Row>
        <Row>
            <Col id='CODE'>B0BF1A</Col>
            <Col id='NAME'>Acid green</Col>
        </Row>
        <Row>
            <Col id='CODE'>C9FFE5</Col>
            <Col id='NAME'>Aero</Col>
        </Row>
    </Rows>
</Dataset>
</Root>

DatasetLayout 서비스 호출은 아래와 같은 형식으로 처리됩니다.

'서비스URL' + '서비스리스트' + &domain=도메인명&model=모델명


고정된 XML 파일을 작성해 메타데이터로 사용한다면 아래와 같이 DatasetLayout 값을 입력해야 합니다.

ServiceModelData.xml?service=serviceInfo

옵션 설정

Metadata를 id 또는 text 속성값으로 가져와 사용하려면 옵션에서 별도 설정이 필요합니다. 메뉴에서 [Tools > Options > Environment > Business Service] 'Use user-defined metadata' 항목을 사용함으로 체크합니다.

해당 옵션에서 'Load business service layout information on Startup' 항목을 사용함으로 체크하면 프로젝트를 불러올때 Metadata 정보도 같이 가져옵니다. 해당 옵션을 사용하지 않는다면 수작업으로 Metadata를 선택하고 'Refresh' 메뉴를 선택해 정보를 가져올 수 있습니다.

속성값으로 적용

'Use user-defined metadata' 항목을 사용함으로 체크한 경우에는 id, text 속성창에서 Metadata 정보를 호출할 수 있는 버튼이 보입니다. 해당 버튼을 클릭하고 원하는 항목을 선택해 속성값으로 적용할 수 있습니다.

데이터가 많은 경우에는 컬럼값을 필터링해서 선택할 수 있습니다. 필러팅 대상 컬럼은 서비스 등록 시 'Search Column' 항목에서 지정할 수 있습니다.

속성값으로 적용한 값은 실제 속성값으로 적용됩니다. Metadata와 바인딩되는 것은 아니기 때문에 Metadata가 변경되더라도 해당 속성값은 변경되지 않습니다.

Dataset으로 적용

[Project Explorer]에서 Metadata을 선택하고 'Invisible Objects' 영역으로 마우스 드래그앤드롭으로 옮기면 Dataset으로 만들어집니다.

4.4Global Variables

GlobalVariables에서는 ADL과 Form에는 포함되지 않으나 Project 전체에 걸쳐 사용되는 여러 Global 항목이 표시됩니다. 또한 각각의 편집기를 사용하여 GlobalVariables에 항목을 추가하거나 수정할 수 있습니다.

GlobalVariables Item으로 Dataset, Variable, Image 항목이 입력 가능합니다.

그림 4-17Global Variables Item

표 4-17GlobalVariables[Popup Menu]

메뉴

기능

Edit Source

GlobalVariables를 XML 편집 창에서 직접수정

Insert Global Variables Item

• Dataset

Dataset Editor에 새로운 Dataset을 추가

• Variable

Variable Editor에 새로운 Variable을 추가

• Image

Image를 추가

Copy

지원되지 않는 기능

Cut

지원되지 않는 기능

Paste

지원되지 않는 기능

Collapse All

GlobalVariables 하위 Tree Item을 감춤

Expand All

GlobalVariables 하위 Tree Item을 펼침

Copy Full Path

GlobalVariables 파일이 저장된 경로를 클립보드에 복사

Open Containing Folder

GlobalVariables 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

지원되지 않는 기능

Save

편집 중인 GlobalVariables를 저장

Save As…

지원되지 않는 기능

Rename

지원되지 않는 기능

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

• Generate File

Refresh

GlobalVariables XML을 Reload

4.4.1DatasetsGlobalVariables:Datasets

Dataset은 Data를 처리하는 Table형태의 기억장소입니다. Presentation용 컴포넌트와 Dataset이 Bind된 경우 Data변경사항이 해당 컴포넌트에 자동으로 동기화 되는 기능도 제공합니다.

그림 4-18Datasets[Popup Menu]

표 4-18Datasets[Popup Menu]

메뉴

기능

Edit

Dataset Editor 호출

Insert Dataset

Dataset Editor에 새로운 Dataset을 추가

Copy

지원되지 않는 기능

Cut

지원되지 않는 기능

Paste

지원되지 않는 기능

Collapse All

Datasets 하위 Tree Item을 감춤

Expand All

Datasets 하위 Tree Item을 펼침

Copy Full Path

GlobalVariables 파일이 저장된 경로를 클립보드에 복사

Open Containing Folder

GlobalVariables 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

지원되지 않는 기능

Save

편집 중인 Dataset을 저장

Save As…

지원되지 않는 기능

Rename

지원되지 않는 기능

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

Refresh

지원되지 않는 기능

Dataset편집 창에서 Dataset항목을 추가, 삭제하거나 구성을 변경할 수 있습니다.

그림 4-19Dataset Editor

표 4-19Dataset Editor


속성

설명

1

Import Datasets

저장된 파일에서 Dataset을 Load

2

Export Datasets

현재 Dataset을 파일로 Save

3

Add a New Dataset

Dataset 추가

4

Delete selected Datasets

Dataset 삭제

5

Const

Constant Data의 Columns 설정

6

Add a new Const Column

Constant Column 추가

7

Insert a new Const Column

커서가 위치한 상단에 Constant Column 삽입

8

Delete selected Const Columns

Constant Column 삭제

9

Columns

Dataset의 Columns 설정

10

Add a new Column

Dataset의 Column 추가

11

Insert a new Column

커서가 위치한 상단에 Column 삽입

12

Delete selected Columns

Dataset의 Column 삭제

13

Rows

Dataset의 Row 설정

14

Add a new Row

Dataset의 Row 추가

15

Insert a new Row

커서가 위치한 상단에 Row 삽입

16

Delete selected Rows

Dataset의 Row 삭제

4.4.2VariablesGlobalVariables:Variables

Variables는 Project 내에서 전역적으로 사용하는 변수입니다.

그림 4-20Variable[Popup Menu]

표 4-20Variable[Popup Menu]

메뉴

기능

Edit

Variable Editor 호출

Insert Variable

Variable Editor에 새로운 Variable을 추가

Copy

지원되지 않는 기능

Cut

지원되지 않는 기능

Paste

지원되지 않는 기능

Collapse All

Variables 하위 Tree Item을 감춤

Expand All

Variables 하위 Tree Item을 펼침

Copy Full Path

GlobalVariables 파일이 저장된 경로를 클립보드에 복사

Open Containing Folder

GlobalVariables 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

지원되지 않는 기능

Save

편집 중인 Variable을 저장

Save As…

지원되지 않는 기능

Rename

지원되지 않는 기능

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

Refresh

지원되지 않는 기능

Variable편집 창에서 Variable항목을 추가, 삭제하거나 구성을 변경할 수 있습니다.

그림 4-21Variable Editor

표 4-21Variable Editor


속성

설명

1

ID

Variable명

2

Initval

초기값

3

Usecookie

Cookie의 사용여부 설정

4

Add Variable

Variable 추가

5

Delete Variable

선택된 Variable 삭제

4.4.3ImageGlobalVariables:Image

Project내에서 사용되는 Image를 새롭게 추가하거나 삭제할 수 있습니다.

Project Explorer의 Images항목에서는 Image를 추가할 수 있는 팝업메뉴가 호출되며, Images항목의 하위 Item인 Image항목에서는 선택된 Image를 삭제할 수 있는 팝업 메뉴가 호출됩니다.

그림 4-22Images[Popup Menu]

그림 4-23Image[Popup Menu]

표 4-22Images/Image[Popup Menu]

메뉴

기능

Edit

지원되지 않는 기능

Insert Image

이미지 파일을 추가할 수 있는 File Dialog를 호출

Copy

지원되지 않는 기능

Cut

지원되지 않는 기능

Paste

지원되지 않는 기능

Collapse All

Images 하위 Tree Item을 감춤

Expand All

Images 하위 Tree Item을 펼침

Copy Full Path

GlobalVariables 파일이 저장된 경로를 클립보드에 복사

Open Containing Folder

GlobalVariables 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

지원되지 않는 기능

Save

편집 중인 Image를 저장

Save As…

지원되지 않는 기능

Rename

지원되지 않는 기능

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

Refresh

지원되지 않는 기능

Delete

선택된 이미지 파일을 Image 그룹에서 삭제

(개별 이미지 파일 선택 시)

Project Explorer에서 Image항목이 선택될 경우, Image Preview가 자동으로 호출됩니다.

그림 4-24Image Preview

프로젝트를 생성한 드라이브와 다른 드라이브를 사용하는 경우에는 경로가 정상적으로 처리되지 않습니다.

예를 들어 D 드라이브에 생성한 프로젝트에서 C 드라이브에 저장된 이미지를 가져오게 되면 상대경로를 정상적으로 처리할 수 없습니다.

서비스그룹에 file 유형으로 등록한 경로에 저장된 이미지가 아니라면 제너레이트 과정에서 파일을 복사하지 않습니다.

해당 서버에 같은 경로로 파일을 복사해주어야 하며 해당 파일에 접근 권한이 있어야 합니다.

4.5FDL 생성 마법사생성 마법사:FDL 생성 마법사

Form 생성 마법사를 이용하여 새로운 Form을 생성할 수 있습니다. 메뉴 File[New – Item – Form]에서 Form 생성 마법사를 시작합니다.

4.5.11단계 Location

생성될 Form의 경로와 이름을 입력하는 단계입니다. Form명은 반드시 입력해야 하는 필수 항목이며, 생성될 경로에 동일한 Form명이 존재할 경우에는 생성할 수 없습니다.

그림 4-25Create New Form Wizard 1단계

표 4-23Create New Form Wizard 1단계

속성

설명

Name

생성될 form의 이름

Location

생성될 form의 위치

4.5.22단계 Dimension

Form의 Width, Height를 정합니다. 최초 Width, Height는 메뉴 Tool[Options]의 Design에서 정해진 값을 표시합니다.

그림 4-26Create New Form Wizard 3단계

4.5.33단계 Position

form에서 컴포넌트 생성 시 적용되는 Position 속성값 단위를 설정합니다. 기본값은 Option에서 지정한 값으로 표시됩니다.

각 속성값의 단위를 변경하고 왼쪽 아래에 있는 'Save position in options' 항목을 체크하면 지정된 단위가 Option에 저장됩니다.

4.5.44단계 Layout

Form에서 사용할 Layout을 설정합니다. Layout이란 각각 다른 크기를 가진 화면을 의미합니다.

프로젝트 생성 시 지정한 Screen 정보를 기준으로 Layout 정보를 자동 구성해줍니다. 이전 단계에서 'Finish' 버튼을 클릭해 Form을 생성한 경우에는 Layout 정보를 추가 구성하지 않고 기본 설정인 Defaut Layout만 생성됩니다.

그림 4-27Create New Form Wizard 4단계

표 4-24Create New Form Wizard 4단계


설명

1

Layout 정보 편집 화면

2

Screen Template에서 Layout 정보를 가져오는 버튼

3

Form에서 사용할 Layout 정보를 추가하는 버튼

4

선택된 Layout정보를 삭제하는 버튼

Layout 속성

설명

name

Layout 이름 (고유 식별자)

screenid

Layout이 사용할 Screen 이름을 설정합니다.

- ADL Screen 목록 중 여러 개 선택할 수 있습니다.

width

Layout 너비

height

Layout 높이

description

Layout 설명

Template 버튼을 누르면 Screen Template 창이 뜹니다.

그림 4-28Layout Template


설명

1

Screen Template에 지정된 User/Basic Template 목록 중에서 사용할 Screen 항목을 선택합니다.

여러 항목을 선택할 수 있습니다.

2

User Template을 추가, 변경, 삭제할 수 있는 창을 띄웁니다.

수정한 정보는 User Template에 즉시 반영됩니다.

Screen Template에서 선택한 목록으로 Layout을 생성할 수 있으며, 생성시 Layout의 name과 width 속성은 Screen 정보의 name과 screenwidth 속성에 따라 자동 적용됩니다.

그림 4-29Template정보가 추가된 New Form Wizard

4.6FDL (Form Definition Language)

4.6.1FDL Drag&Drop

프로젝트에서 생성된 폼은 서비스 그룹 단위로 관리되며, 각 그룹에 속한 폼은 드래그앤드롭으로 다른 그룹으로 이동할 수 있습니다. <Ctrl>키를 누른 채 드래그앤드롭을 사용하면 폼이 복사되어 생성됩니다.

그림 4-30Form Move

그림 4-31Form Copy

4.6.2FDL 항목

Form항목은 하위 Tree Item으로 Layout, Objects, Script, Bind를 가집니다.

그림 4-32Form Item

표 4-25Form Item

아이콘

이름

설명

Layout

Form에 생성된 Component를 하위 Item으로 표시

Objects

Design이 없는 Invisible Component를 표시

Script

Form이 가진 Function 목록을 표시

Bind

Form에 Bind된 정보를 표시

Form 항목에서는 아래와 같은 기능을 지원합니다.

Form을 넥사크로 스튜디오에서 편집할 때와 그렇지 않을때 보여지는 컨텍스트 메뉴가 달라집니다. 편집 중일 때는 BindItem, Layout List와 같은 메뉴가 활성화되고 그렇지 않을 때는 Edit, Insert Style, Rename과 같은 메뉴가 활성화됩니다.

그림 4-33FDL[Popup Menu]

표 4-26FDL[Popup Menu]

메뉴

기능

Edit

선택된 Form을 편집하는 Design창을 호출

Insert Style

CSS 파일을 추가, Load 되지 않은 Form에만 적용

BindItem

Bind Item 대화상자 호출

Copy

선택된 Form을 Copy

Cut

선택된 Form을 Cut

Paste

Copy또는 Cut된 Form을 현재 Service에 Paste

Collapse All

Form 하위 Tree Item을 감춤

Expand All

Form 하위 Tree Item을 펼침

Layout List

Layout List 대화상자 호출

Copy Full Path

Form 파일이 저장된 경로를 클립보드에 복사

Open Containing Folder

Form 파일 위치를 윈도우 탐색기에서 열어서 보여줌

Close

현재 편집중인 Project 닫기

Save

선택된 Form 저장

Save As…

선택된 Form을 다른 이름으로 저장

Rename

선택된 Form 이름 바꾸기

Generate

선택된 프로젝트 Build

• Generate Application

• Generate Themes

• Generate File

Refresh

선택된 Form XML을 Reload

Delete

선택된 Form 삭제

QuickView

선택된 Form을 QuickView기능으로 Launch합니다

4.7템플릿 사용생성 마법사:프로젝트 템플릿

4.7.1Make a Project Template

현재 작업 중인 Project를 Template로 등록하는 기능입니다. Project Explorer에서Project선택 > 마우스 우측버튼 클릭 > Project Template을 클릭하면 됩니다.

그림 4-34Make a Project Template

표 4-27Make a Project Template


속성

설명

1

Project Template Name

생성될 Template의 이름

2

Select ADL to include

Project Template에 포함될 ADL을 선택

3

Select a Service Group

and Files to include

Project Template에 포함될 파일을 선택

Template으로 등록된 Project는 이후에 신규 Project생성시 New Project wizard에서 선택하여 사용할 수 있습니다.

그림 4-35New Project Wizard[Project Template]

4.7.2Screen Template

기본적으로 제공되는 Screen Template를 사용할 수 있습니다. Screen Template 기능을 사용하면 자주 사용되는 Screen 정보를 사용자가 Template으로 등록 할 수 있습니다.

14.0.0.40 버전부터는 기능 변경으로 인해 Layout Template 기능이 삭제됐습니다.


설명

1

사용자 정의 Screen 정보를 추가하는 버튼

2

사용자 정의 Screen 정보를 삭제하는 버튼

3

사용자 정의 Screen 정보 편집 화면

Basic Template의 정보는 기본값으로 사용자가 직접 편집할 수 없습니다. Basic Template의 목록은 nexacro 설치 경로 디렉토리 내 "nexacro_os_device.xml" 파일에서 관리합니다.

4.8기타 파일 생성

File > New > File 메뉴에서 추가로 필요한 스타일 파일(CSS), XML 파일, 스크립트 파일, 테마 파일을 생성할 수 있습니다.

그림 4-36New File[PopupMenu]

4.8.1Create a new XML file

그림 4-37Create a new XML file

표 4-28Create a new XML file

속성

설명

File name

생성될 XML 파일명

Location

생성될 XML 파일의 위치

4.8.2Create a new Java script file

그림 4-38Create a new Java script file

표 4-29Create a new Java script file

속성

설명

File name

생성될 스크립트 파일명

Location

생성될 스크립트 파일의 위치

4.9Auto Recover

Tools > Options 메뉴에서 AutoRecover 기능 사용 유무와 시간을 설정하면 넥사크로 스튜디오에서 편집하는 파일들을 설정한 시간단위로 임시파일에 저장하는 기능을 수행합니다.

그림 4-39AutoRecover Setting

파일을 편집하는 중에 넥사크로 스튜디오가 비정상 종료된 후에 넥사크로 스튜디오를 다시 실행하면 임시파일을 확인하여 파일 복구 유무를 묻는 메시지 창이 뜹니다.

그림 4-40AutoRecover Messagebox

AutoRecover는 복구 대상 목록을 리스트로 표시 해주고 해당 파일을 편집 당시에 저장된 임시파일을 사용해 복구합니다.

그림 4-41AutoRecover

4.10프로토콜 추가 마법사생성 마법사:프로토콜 추가 마법사

프로토콜 추가 마법사를 이용하여 TypeDefinition에 새로운 프로토콜을 추가할 수 있습니다. 프로토콜 추가 마법사를 시작하는 방법은 두 가지가 있습니다.

사용자는 둘 중 편한 방법을 택하여 프로토콜 추가 마법사를 시작합니다.

4.10.11단계 Protocol

새로운 프로토콜 등록/삭제하고 프로토콜을 사용할 장치 타입을 선택합니다. 또한 선택한 장치 타입에 맞게 각각 모듈 정보와 클래스 정보를 등록합니다.

항목

설명

1

Add

프로토콜을 등록합니다.

2

Delete

선택한 프로토콜을 삭제합니다.

3

Protocol ID

프로토콜의 ID입니다. Protocol ID는 서비스의 URL로 사용됩니다.

[Protocol ID]://

4

Device Type

등록한 프로토콜을 사용할 장치 타입을 결정합니다. 프로토콜은 중복으로 사용이 가능하며 각 장치별 Class Name은 다른 값으로 저장됩니다.

HTML5, Android, iOS을 선택한 경우에는 각 장치에서 사용할 Classname을 등록할 수 있습니다.

5

Runtime:

ModuleName

바이너리 모듈의 이름입니다. TargetPath의 경로로부터 [ModuleName].dll 파일을 찾아서 등록합니다.

ModuleName은 start.json에 추가됩니다.

6

Runtime;

TargetPath

바이너리 모듈을 받아올 경로입니다.

TargetPath는 start.json에 추가됩니다.

7

HTML5:

Classname

HTML5 환경에서 사용할 프로토콜의 클래스 이름입니다.

adl.js의 registerclass 배열에 등록되며, 다른 컴포넌트와 함께 로드됩니다.

8

Android:

Classname

Android 환경에서 사용할 프로토콜의 클래스 이름입니다.

start_android.json 파일에 Protocol ID와 Classname이 등록됩니다.

9

iOS:

Classname

iOS 환경에서 사용할 프로토콜의 클래스 이름입니다.

start_ios.json 파일에 Protocol ID와 Classname이 등록됩니다.

다음은 각 장치 타입별로 프로토콜 정보가 어떻게 설정되는지에 대한 예제입니다.

start.json

"version" : "15.0.0.1",                                                        
    "runtime" :
    {
        "target" :
        {
            "os" : "windows"
        },
        "framework" :
        [
            [framework js path]
        ],
        "component" :
        [
            [component js path]
        ],
        "form" :
        [
        ],
        "xadl" :
        {
        },
        "protocol" :
        {
            "adaptors" :
            [
                {
                    "protocolname" : "[Protocol ID]",
                    "modulename" : "[modulename].dll",
                    "targetpath" : "[Target Path]"
                },
                {
                }
            ]
        }
        "resource" :
        {
        },

adl.xadl.js

// load components
var registerclass = [
    {"id":"Div", "classname":"nexacro.Div", "type":"JavaScript"},
    {"id":"Button", "classname":"nexacro.Button", "type":"JavaScript"},
    {"id":"PopupDiv", "classname":"nexacro.PopupDiv", "type":"JavaScript"},
    {"id":"Combo", "classname":"nexacro.Combo", "type":"JavaScript"},
    {"id":"CheckBox", "classname":"nexacro.CheckBox", "type":"JavaScript"},
    {"id":"ListBox", "classname":"nexacro.ListBox", "type":"JavaScript"},
    {"id":"Edit", "classname":"nexacro.Edit", "type":"JavaScript"},
    {"id":"MaskEdit", "classname":"nexacro.MaskEdit", "type":"JavaScript"},
    {"id":"TextArea", "classname":"nexacro.TextArea", "type":"JavaScript"},
    {"id":"Menu", "classname":"nexacro.Menu", "type":"JavaScript"},
    {"id":"Tab", "classname":"nexacro.Tab", "type":"JavaScript"},
    {"id":"ImageViewer", "classname":"nexacro.ImageViewer", "type":"JavaScript"},
    {"id":"Radio", "classname":"nexacro.Radio", "type":"JavaScript"},
    {"id":"Calendar", "classname":"nexacro.Calendar", "type":"JavaScript"},
    {"id":"Static", "classname":"nexacro.Static", "type":"JavaScript"},
    {"id":"Grid", "classname":"nexacro.Grid", "type":"JavaScript"},
    {"id":"Spin", "classname":"nexacro.Spin", "type":"JavaScript"},
    {"id":"PopupMenu", "classname":"nexacro.PopupMenu", "type":"JavaScript"},
    {"id":"GroupBox", "classname":"nexacro.GroupBox", "type":"JavaScript"},
    {"id":"ProgressBar", "classname":"nexacro.ProgressBar", "type":"JavaScript"},
    {"id":"Plugin", "classname":"nexacro.Plugin", "type":"JavaScript"},
    {"id":"Dataset", "classname":"nexacro.NormalDataset", "type":"JavaScript"},
    {"id":"Protocol00", "classname":"test_HTML5", "type":"Protocol"},
    {"id":"Protocol01", "classname":"Protocol01", "type":"Protocol"}
];

start_android.json

"version" : "15.0.0.1",
    "runtime" :
    {
        "target" :
        {
            "os" : "android"
        },
        "framework" :
        [
            [framework js path]
        ],
        "component" :
        [
            [component js path]
        ],
        "form" :
        [
        ],
        "xadl" :
        {
        },
        "protocol" :
        {
            "adaptors" :
            [
                {
                    "protocolname" : "[Protocol ID]",
                    "classname" : "[Android_ClassName]",
                },
                {
                }
            ]
        }
        "resource" :
        {
        },

start_ios.json

"version" : "15.0.0.1",
    "runtime" :
    {
        "target" :
        {
            "os" : "ios"
        },
        "framework" :
        [
            [framework js path]
        ],
        "component" :
        [
            [component js path]

        ],
        "form" :
        [
        ],
        "xadl" :
        {
        },
        "protocol" :
        {
            "adaptors" :
            [
                {
                    "protocolname" : "[Protocol ID]",
                    "classname" : "[iOS_ClassName]",
                },
                {
                }
            ]
        }
        "resource" :
        {
        },

4.10.22단계 Service

등록한 Protocol ID에 해당하는 서비스를 자동으로 생성해줍니다.

항목

설명

1

PrefixID

서비스 Prefix ID로 사용할 ID입니다.

2

Type

서비스 타입입니다. JSP, ASP 중에 선택할 수 있습니다.

3

Url

서비스 URL입니다. Step 1에서 입력했던 Protocol ID 값이 [Protocol ID]:// 형태로 자동으로 설정되며 수정은 불가합니다.

4.10.33단계 Resource

앞 단계에서 추가한 프로토콜 중 등록된 장치 타입이 Runtime인 항목에 대하여 Resource를 자동으로 추가해 줍니다.

항목

설명

1

File

Step 1에서 설정한 ModuleName 값으로 명명된 [ModuleName].dll 파일이 자동 설정됩니다. File 항목은 필수 항목이라 아무런 정보가 없을 경우 Finish로 진행할 수 없습니다.

2

TargetPath

Step 1에서 설정한 TargetPath 값으로 자동 설정됩니다.

자동으로 설정된 Resource 값을 변경할 수는 있으나 start.json에 사용되는 정보이므로 변경하지 않는 것이 좋습니다.

4.10.44단계 Finish

3단계에서 Finish를 누르면 프로토콜 추가 마법사를 통해 추가한 프로토콜, 서비스, 업데이트(Resource)가 TypeDefinition에 새로 추가된 것을 확인할 수 있습니다.

다음은 프로토콜 추가 마법사를 수행한 후에 업데이트된 TypeDefinition 예제를 보여줍니다. 빨간색으로 표시된 부분이 프로토콜 추가 마법사를 통해 추가된 프로토콜, 서비스, 리소스입니다.

default_typedef.xml

<?xml version="1.0" encoding="utf-8"?>
<TypeDefinition version="1.2">
  <Modules>
    <Module url="CompBase.json"/>
    <Module url="ComComp.json"/>
    <Module url="Grid.json"/>
    <Module url="DeviceAPI.json"/>
  </Modules>
  <Components>
    <Component type="JavaScript" id="Div" classname="nexacro.Div"/>
    <Component type="JavaScript" id="Button" classname="nexacro.Button"/>
    <Component type="JavaScript" id="PopupDiv" classname="nexacro.PopupDiv"/>
    <Component type="JavaScript" id="Combo" classname="nexacro.Combo"/>
    <Component type="JavaScript" id="CheckBox" classname="nexacro.CheckBox"/>
    <Component type="JavaScript" id="ListBox" classname="nexacro.ListBox"/>
    <Component type="JavaScript" id="Edit" classname="nexacro.Edit"/>
    <Component type="JavaScript" id="MaskEdit" classname="nexacro.MaskEdit"/>
    <Component type="JavaScript" id="TextArea" classname="nexacro.TextArea"/>
    <Component type="JavaScript" id="Menu" classname="nexacro.Menu"/>
    <Component type="JavaScript" id="Tab" classname="nexacro.Tab"/>
    <Component type="JavaScript" id="ImageViewer" classname="nexacro.ImageViewer"/>
    <Component type="JavaScript" id="Radio" classname="nexacro.Radio"/>
    <Component type="JavaScript" id="Calendar" classname="nexacro.Calendar"/>
    <Component type="JavaScript" id="Static" classname="nexacro.Static"/>
    <Component type="JavaScript" id="Grid" classname="nexacro.Grid"/>
    <Component type="JavaScript" id="Spin" classname="nexacro.Spin"/>
    <Component type="JavaScript" id="PopupMenu" classname="nexacro.PopupMenu"/>
    <Component type="JavaScript" id="GroupBox" classname="nexacro.GroupBox"/>
    <Component type="JavaScript" id="ProgressBar" classname="nexacro.ProgressBar"/>
    <Component type="JavaScript" id="Plugin" classname="nexacro.Plugin"/>
    <Component type="JavaScript" id="Dataset" classname="nexacro.NormalDataset"/>
  </Components>
  <Services>
    <Service prefixid="Base" type="form" url="./Base/" version="0" communicationversion="0"/>
    <Service prefixid="Service00" type="JSP" url="Protocol00://" version="0" communicationversion="0"/>
    <Service prefixid="Service01" type="JSP" url="Protocol01://" version="0" communicationversion="0"/>
    <Service prefixid="Service02" type="JSP" url="Protocol02://" version="0" communicationversion="0"/>
  </Services>
  <Update>
    <Item systemtype="Windows" url="">
      <Os type="default" url="" engineurl="" enginesetupkey="" engineversion="">
        <Device type="default" url="" engineurl="" enginesetupkey="" engineversion="" desc="">
          <Resource type="Object" file="aa" failpass="false"/>
          <Resource type="File" file="test.dll" targetpath="" version="" failpass="false" desc=""/>
          <Resource type="File" file="protocolAdp.dll" targetpath="C:\Base" version="" failpass="false" desc=""/>
        </Device>
      </Os>
    </Item>
    <Item systemtype="Android" url="">
      <Os type="default" url="" engineurl="" enginesetupkey="" engineversion="">
        <Device type="default" url="" engineurl="" enginesetupkey="" engineversion="" desc="">
          <Resource type="File" file="default.zip" targetpath="C:\Users\user\Documents\nexacro\outputs" failpass="false"/>
        </Device>
      </Os>
    </Item>
    <Item systemtype="iOS" url="">
      <Os type="default" url="" engineurl="" enginesetupkey="" engineversion="">
        <Device type="default" url="" engineurl="" enginesetupkey="" engineversion="" desc="">
          <Resource type="File" file="Archive00.xzip" failpass="false"/>
        </Device>
      </Os>
    </Item>
  </Update>
  <Protocols>
    <Protocol id="Protocol00" classname="test_HTML5" targetpath="C:\apache-tomcat-6.0.36\webapps" devicetype="Runtime,HTML5,Android,iOS" modulename="test_runtime" android_classname="test_android" ios_classname="test_ios"/>
    <Protocol id="Protocol01" classname="Protocol01" devicetype="HTML5,iOS" file=""/>
    <Protocol id="Protocol02" devicetype="Runtime,HTML5,Android,iOS" modulename="protocolAdp" targetpath="C:\Base" classname="nexacro.Protocol02" android_classname="test_android" ios_classname="test_ios"/>
  </Protocols>
</TypeDefinition>