앱 구동 시나리오

넥사크로 앱이 실행되는 과정은 아래와 같습니다.

bootstrap

Application을 로딩하기 위해 관련 정보를 확인하고 필요한 자원을 가져오는 과정을 설명합니다. 이 과정을 부트스트랩이라고 표현합니다.


WRE

NRE

1

index.html

start.json

start_android.json

start_ios.json

2

get bootstrap info

3


update engine

4

update resource (data)

5

load framework files

6

load component modules

7

load Application

일반적으로 부트스트랩은 컴퓨터가 외부 입력 없이 스스로 시작할 준비를 하는 과정을 의미합니다. 주로 메모리에 담긴 정보를 기반으로 동작하며 부팅(booting)이라고 표현하기도 합니다.

https://en.wikipedia.org/wiki/Bootstrapping

넥사크로 앱 실행과정에서 사용하는 부트스트랩이라는 용어는 앱을 시작할 준비를 하는 과정이라는 표현을 담고 있습니다.

Application 로딩

앱이 실행되기 위해 Application과 연결된 폼을 로딩하는 과정은 아래와 같습니다.


로딩 순서

이벤트 발생

1

Environment 로딩


2

Screen 선택 (Screen 정보가 2개 이상인 경우)


3

Screen 환경 정보 로딩


- 선택된 Screen 정보를 screenid 속성값으로 지정한 App 확인


- Applicaiton 오브젝트 생성


4

Environment 설정 처리 (Typedefinition, 속성, Variables)


Environment.onload

5

테마 로딩 (css, map.js 파일)


6

Initvalue 파일 로딩


7

Application 로딩 (*.xadl.js 파일)


- Application 속성 설정


Application.onloadingappvariables

- Mainframe 생성 및 초기화


MainFrame.onactivate

- Frame 생성 및 초기화


ChildFrame.onactivate

Application.onload

8

Form 로딩 (*.xfdl.js 파일)


Form.oninit

Form.onload

Form.onactivate

Application.onloadforms

로딩 순서에 따라 아직 생성되지 않는 항목은 사용할 수 없습니다.

예를 들어 Environment.onload 이벤트 함수 내에서 AppVariables에 접근하게 되면 undefined로 표시됩니다.

this.Environment_onload = function(obj:nexacro.Environment,e:nexacro.LoadEventInfo)
{
	trace(nexacro.getApplication().all['Variable0']); //undefined
}

폼 로딩

앞에서 설명한 Application 로딩 항목에서 'Form 로딩'부터 'Form.onload 이벤트 발생' 사이의 과정을 좀 더 상세히 살펴보면 아래와 같습니다.

  1. Form 로딩

  2. Form 실행

  3. 서브파일 다운로드 및 실행

  4. Form 초기화

  5. Form Style 속성 설정

  6. Form 속성 설정

  7. 오브젝트, 컴포넌트, 바인드아이템(BindItem) 생성

  8. 엔진 내부에서 처리하는 스크립트 수행

  9. 이벤트핸들러 등록

  10. 오브젝트, 컴포넌트 메소드 호출: Object.createComponent

  11. 이벤트 발생: Form.oninit

  12. 메소드 호출: Form.on_created

  13. 오브젝트, 컴포넌트 메소드 호출: Object.on_created

  14. 이미지 로딩, transaction 처리

  15. 이벤트 발생: Form.onload

서브파일은 include 방식으로 연결되는 스크립트 파일 등을 의미합니다.

Form에 포함된 Object, Component는 지정된 Z-Order 순서대로 생성합니다.

div, tab 컴포넌트는 url 속성으로 연결된 Form을 가져오는 네트워크 속도에 따라 로딩이 끝나는 시점이 달라질 수 있습니다.