[Nexacro] 컴포넌트활용 개발시 유의사항

Gajun Choi·2022년 9월 8일
2

Nexacro

목록 보기
1/6

투비소프트에서 제공해주는 강의
https://www.youtube.com/watch?v=PArLpGCTpxc&list=PLgoHUQa-ZzHAbNjKAl1DyWDrseM_NxxAG&index=7

Sync / ASync

1. Sync

1-1) 동기통신 기본 개념

  • Transaction 함수 호출 후 서버에서 응답이 완료되는 시점까지 대기 후 결과를 받으면 다음 스크립트 진행

    this.transaction("svcSelect" // 서비스 ID (transaction 구분)
    , "http://velog.io/write" // 서비스 URL
    , "" // 저장
    , 'ds_emp = out_emp // 조회 -> client ds = server ds (서버쪽 데이터를 클라용으로 치환)
    , ""
    , "fn_callback", false);

    // trace 실행되지 않고 transaction 완료까지 대기
    trace(ds_emp.getRowCount()); // 서버 건수 확인가능
    -> 콜백 함수 부분이 false 면 동기

1-2) 동기통신의 주의점

  • 통신 응답대기인 상태에서 다른 오퍼레이션 발생시 백화현상, 응답없음 발생
  • Form 의 onload Event 에서 사용 할 경우 화면 구성이 멈춰지는 듯한 현상 ( 새로고침 현상 )
  • 통신의 경우 통신대기 상태를 나타내는 이미지 등의 비정상적인 표현

2. ASync

  • Transaction 함수 호출 후 통신완료와 상관없이 다음 스크립트를 수행하며, 서버에서 결과를 리턴 받으면 callback 함수가 호출됨

    this.transaction("svcSelect"
    , "http://velog.io/write"
    , ""
    , 'ds_emp = out_emp
    , ""
    , "fn_callback", true);

    // 바로 trace 실행문 됨 trace(ds_emp.getRowCount()); // 서버 건수 확인 불가

3. 개발시 유의사항

3-1) PrefixId 사용하기

  • Ex) this.transaction ("svcSelect", "SvcURL::select_emp.jsp",...
    SvcURL:: - Cache -> Prefix Cache 기능 사용가능 (캐시를 이용한 성능 향상)

    주로 운영자가 관리하기 때문에 기본값으로 dynamic (동적 환경) 으로 수행 된다.

    3-2) 서비스 작성

  • 여러개의 Dataset 전달 시 공백으로 구분하여 처리 - 전달하는 파라미터는 nexacro.wrapQuote(strParameter) 함수 사용

    1) this.transaction(svcSelect1","SvcURL::select_code.jsp", "","ds_dept=out_dept", "", "fn_call");
    2) this.transaction(svcSelect1","SvcURL::select_code.jsp", "","ds_pos=out_pos", "", "fn_call");

    ___ 1) 과 2) 를 한 번에 쓰는 방법 (공백을 추가한다 - 아래가 더 빠름)

    3) var strParameter = nexacro.wrapQuote('홍길동');
    this.transaction("svcSelect1","SvcURL::select_code.jsp", "","ds_dept=out_dept ds_pos=out_pos", "", "fn_call");

3-3) Column Type - 서버에서 타입을 제대로 전달하지 않았을 경우

  • Dataset 의 Column 을 이용한 수식 계산 시 Type 을 사용
    Ex) 그리드 합계 - 데이터 타입을 모두 스트링으로 받은 경우
    getSum("SALARY") - getSum() 함수는 정수를 받기 때문에 형변환이 필요하다.
    getSum("nexacro.toNumber(SALARY)") 로 사용
    EX) Sort 기능 - Sort 는 Column 의 Type 이 기준이 되며, 형 변환이 불가
    해결 방법 : dataSet 에는 useclientlayout 을 true 로 바꾸면 서버에서 넘겨받은 데이터와 컬럼이 매칭되는 값만 가져온다. ( 형변환이 불필요 )

3-4) Event

* onload, onrowsetchanged, onworposchanged 등 event 객체에 e.reason 이 있는 경우 반드시 분기(if문)처리를 해야함 (이후 설명 다시 합니다)

  • Ex)
this.ds_emp_onrowposchanged = function(obj:nexacro.NormalDataset, e:nexacro...)
{
	if(e.reason == 12) {			// append
    
    } else if(e.reason == 20) {		// delete
    
    } else if(e.reason == 30) {		// sort
     
    }
}

3-5) Dataset 중심의 바인딩 / 스크립트 문제 해결 단계

  • 첫 번째 : 바인딩으로 풀고 그리드는 expression 을 활용 (script 를 줄이기 위함)
  • 두 번째 : 이벤트 처리(Dataset 에서 먼저 잡고 해결이 안되면 각각의 Component 에서 잡기)
profile
개발하는헬창

0개의 댓글