getColCount(colcount), getRowCount(rowcount), getColID,addColumnfindRow, getColumn, lookup, findRowExp, setColumn, extractRowsgetCaseAvg, getAvg keystring, filter, getRowCount, getRowCountNF
- 서비스 경로 사용시 Full경로가 아닌 PrefixID 사용
- ex)
http://nexacro.com~=>SvcURL::select_emp.jsp~
🎨 CacheLevel(국내에서 잘 사용X)
1. none : 캐시기능 X, 웹 서버로 부터 다운로드
2. session : 최초 웹 서버 다운로드 후 캐시에 데이터 올려짐
3. dynamic : 화면을 열고 닫을 때마다 웹서버에 물어본다. 변경되지 않을 시 캐시에서 @ 데이터를 가져올 때 SvcURL 반드시 none으로 해야함 서비스 작성 시 한번의 호출로 N개의 Dataset을 가져오는 것이 좋다. 공백은 (" ")로 처리됨
🎨 Dataset
1. useclientlayout :true
레이아웃 정보를 가져 오지 않게 된다. 형변환 안해도 됨
2. dataset의 복제할 때 복제한 데이터를 서버에 올릴 때는 데이터와 타입을 복제하는 assign를 사용해야 한다. 데이터만 복제하는copyData을 하면 안된다.
3. copyRow는 해당 칼럼을 매칭시키는 것에 따라서 특정한 칼럼 데이터를 복제한다.
4. form의 Properties에서 stepindex를 조정하면 해당 스탭에서 리로드 할 수 있다.
5. dataset의 칼럼값이 변경될 때 발생하는cancolumnchange(dataset 반영 전), 칼럼 값이 변경된 후에 발생하는oncolumnchanged(dataset 반영 후) 이벤트가 있다. (cancolumnchange에서return false를 해주면oncolumnchanged가 발생하지 않고 멈추게 된다.
6. 이벤트 수정 없이 데이터만 수정할 수 있게 끄는 방법(데이터가 많을 수록 엄청난 성능)
this.Dataset6.set_enableevent(false);후true추가
- Grid는 항상 Dataset과 바인딩해서 사용한다. 그냥 툴 쓰는게 가장 편해보임
🎨 Container Component
Div/PopupDiv에 다른 화면을 연결하여 사용 가능하다.PopupDiv는Div와 비슷하나PopupDiv는 포커스를 잃게 되면 자동으로 사라진다.
🎨 Form
this.all;은 모든 정보를 나타내지만 div나 form 같은 안에 있는 데이터는 안찍힌다.
- 그렇기 때문에
pObj.all을 사용- 현재 보이는 컴포넌트만 찍어내길 원한다면
pObj.components사용- 보이지 않는 컴포넌트만
pObj.objects사용컴포넌트IDString값을 오브젝트로 만들 경우에eval함수 쓰는거보다this.components를 사용해야 한다.(보안에 취약하기 때문)
🎨 팝업
- 모달, 모달리스 중 모달 사용 권장(로딩빠름)
- Common : DynamicCreation & Binding
D:\nexacro\넥사크로 자료\운영자교육-교안 PDF 파일 참고
- 원본 소스 파일과 Generate 파일(.js) 관리 : 인수인계하거나 받을때는 원본소스(xfdi), Generate된 소스(form.js) 가지고 있어야함
- 도움말(F1)에 개발환경 지원/미지원 범위 참고
- pdf에 History 예제 있음(뒤로가기)
- 개인화 자료 : 그리드 화면의 칼럼 정렬 순서 등 개인별 UI를 제공 시 개인화 자료 저장 방법(로컬스토리지 방법은 제공)
🎨 캐쉬(Cache) 기능 설명 있음
- seesion을 사용할 경우 DB에서 데이터가 실시간으로 조회 X 이 경우 None으로 설정해야함
- 넥사크로 스튜디오 플랫폼에서 확인할 경우 반영안됨
- WRE 운영 환경(HTML5)에서는 CheckVersion 사용 권장
=> 버전 정보 갱신 3단계
1. "Environment" > Misc. > checkversion(true), version 갱신
2. "TypeDefinition" > Services > PrefixID 별로 Version정보 갱신
3. 엔진 lib 버전 정보
"TypeDefinition" > Objects > Module의 Json파일 클릭 Version정보 갱신
🎨 세션처리 (JSESSIONID)
세션 값이 변경될 경우 WAS 엔지니어에게 문의해야함
🎨 보안
- NEXACRO Script 작성 시 eval 함수는 사용 X, 대체 방법 PDF에 나와 있음
- http에서 Timeout 시간 설정은 클라이언트(넥사크로), 서버(WAS), Back End(DB)에서 각 각 환경설정 필요함
🎨 변수 Scope
1. var : 지역변수, script에서만 사용
2. this. : 멤버변수, form 끼리 변수 참조 가능
3. 변수명 : glovalVal, 메모리 성능 저하되어 사용 X
※ 참고 사이트 - nexacro에서 변수와 함수 사용시 Scope에 대한 정의
🎨 통신방식
HTML5에서는 Binary(1) 지원 X
🎨 PrefixID
서비스 경로 사용시 Full경로가 아닌 PrefixID(SvcURL::) 사용
🎨 서비스 호출
한번의 서비스 호출로 n개의 Dataset를 가져온다.
🎨 Dataset Layout
서비스 호출 시 데이터가 없는 경우에도 반드시 Layout을 리턴
🎨 Column Type
Dataset Column을 이용한 수식 계산 시 Column Type를 이용, Sort는 Column의 Type이 기준, 형변환 X
- Column Type 변경을 권장하지만 만에하나 하지 않는 경우 useclientlayout를 true로 변경하는 대안이 있다.
🎨 Dataset Event
Dataset Event 중 onload, onrowsetchanged, onrowposchanged 등 Event객체에 e.reason이 포함된 경우 스크립트 작성 시 반드시 분기 처리
🎨 Dataset 중심의 바인딩/스크립트
가능한 Dataset 바인딩를 활용하고, 이벤트 작성시 Dataset의 이벤트를 먼저 사용한다.( 이벤트 중복 때문)
🎨 jsDoc
1. Javascript소스코드 파일에 주석을 달기 위해 사용되는 마크업 언어( 주석 )
2. 프로젝트 공통Script lib모듈로 작성된 소스코드를 jsDoc 문서로 산출물을 작성한다.(문서 생성)
3. jsDoc 을 활용한 프로젝트 공통Script 산출물(굳이?)
🎨 Generate된 js소스 경로 보는 방법
Tools > Options > project_Generate > Generate Path 경로가 나온다.
🎨 JSON파일 줄이기
Deploy > Packing (Archive&Update) > Options > Deploy > Merge 2개 체크
- compile은 MRE만 지원 html 지원X
이후, Deploy > compress > 3가지 속성도 체크
🎨 로그 강제로 없애는 방법( 엔진에서 직접 )
Application information > Application_Desktop > Script 주석에
🎨 공통함수 구성
include 해서 파일을 가져오는 방법이 있지만 엔진에서 EduLib.json으로 include 하지않아도 파일을 가져다가 사용
- 상단에 var pForm = nexacro.Form.prototype;을 정의하고 this대신 pForm을 정의하면 된다.
🎨 화면 단순화 및 분할
한번에 화면을 보여주는 것이 아닌 step by step으로 화면을 구성하면 실행이 더욱 빨라진다.
this.setTimer(1,1000);
- div 프로퍼티에 url 속성은 빠르게 복붙할 수 있음, tab의 경우 로직으로 풀어야하지 prelode는 건들면 안됨
🎨 async라는 속성은 script에 코딩해야 한다
🎨 Dataset을 사용 할 때에는 enavleevent를 사용, Grid에서는 enableredraw를 사용한다.
🎨 대용량 데이터
대용량 데이터 처리시 Chunked 방식 적용
🎨 gzip(압축)
브라우저에서 제공하는 gzip방식을 이용하여 패킷 사이즈 절감할 수 있음
🎨 KeepAlive
일정 개수의 서버 세션(Connect)를 유지하여, 커넥션 시간을 단축
🎨 Etag
이중화 되어 있는 서버에서 Etag와 Last-modified가 동일하게 넘어와야 한다.
🎨 메모리 누수
선언되지 않은 변수는 Global영역에 만들어진다.(var, this사용 권장), 객체 리소스 해제할 때는objRemoved.destroy();와objRemoved = null;을 같이 사용해야 메모리 누수가 없다.
- Window 7 IE11에서의 메모리 누수현상
쓰지 말자 Application에서 해결방법 x, MDI 방식으로 띄우는 식으로 해야함- 외부모듈 사용을 위해 WebBrowser 컴포넌트를 사용한 경우 문제 해결을 위해 폼 unload시 추가 스크립트 작성 필요하다. pdf참조
- 차트를 도입 시 rMateChart를 사용한다. pdf 참조
🎨 전용브라우저
- 런처 서비스 : 넥사크로 엔진모듈을 다운로드 시켜주는 업데이트 모듈
- 넥스크로 엔진 : window os에서 넥사크로 플랫폼 앱을 실행하기 위한 실행환경파일 배포시 3개의 배포 버전 준비(32bt, 64bt, xp)
🎨 WRE 환경에서는 별로 배포작업을 하진 않지만 Deploy시 체크사항 확인하기
1. JSON Merge
2. 코드 난독화
🎨 NRE 환경
실행모듈 배포과정 필요
1) Client 라이선스 체크, 수동설치파일, 디지털서명파일
2) 배포 순서도 확인하기 ( pdf 참조 )
3) 외부모듈 사용하는 경우(예: extCommon.dll)에는 32bt, 64bt, xp 3가지 전부 준비해야함.
※ 넥사크로 플랫폼에서는 32bt이나 사용자 pc에서 실행시 64bt로 올라온다.
4) CLSID : 넥사크로는 Class ID를 따로 생성 가능하며, 디렉토리도 따로 분리해서 사용 가능하다.
※ CLSID는 한번 생성 후 동일한 ID를 유지해야 업데이트가 가능함
5) Launcher 서비스 설치 및 동작하기 위해서는 관리자 권한이 필요하며, 웹 브라우저에서 Launcher과 통신시 데이터는 JSON형식으로 주고받는다.
6) 장애 대응 방법 : 메뉴얼에 대응 방법이 있으나 해결이 되지 않는다면 고객센터에 문의하기
- 제품 기본 설치정보, 시스템 요구사항은 pdf 확인하기
- 서버에서 lib 정상 작동하는지 확인하는 법(기동절차 및 확인방법) pdf 참고
- 버전 정보 확인하는 방법 pdf 참조
🎨 환경정보 설정( pdf 참조 )
배포하는 파일 포맷에 대해 웹 서버에 다운로드 될 수 있도록 web.xml(mime type) 설정하는 부분에 다운로드 할 수 있도록 확장자를 등록해야한다.(ex 이미지 X, 색깔 X )
🎨 tracemode(NRE 환경)
사용자 PC에서 에러 로그를 알 수 있는 방법( properties > tracemode)
- none(기록X), new(마지막 로그만 기록), append(계속 기록)
🎨 디버깅용 서버환경 Log
트랜잭션이 일어날 때마다 파일이 쌓이고 서버에서 클라이언트가 넘어오는지 확인 가능(pdf 참고)
🎨 종료 절차
WAS의 Lib형태로 제공되며 별도의 실행 및 종료 명령이 없으며, WAS의 실행 종료를 따른다.
🎨 서버환경 변경 시 체크사항
IP주소, 도메인 주소 변경, Core 개수 변경 시 라이선스 재발급해야함 (투비소프트 고객지원센터 > 다운로드 > 개발용 라이센스 신청하기)
🎨 HTTP => HTTPS로 사설 인증으로 변경시 pdf 참조
공인인증서는 걍 됨
🎨 디버깅
Fiddler하는 방법 교육자료에 동영상 있음