서버 담당자는 Client와 Server간에 데이터 통신을 해야 하는데 제품간의 통신 Format이 있어야 한다
-> 그 통신 Format이 Dataset Layoout이다
Dataset Layout을 만들기 위해 도와주는 역할을 하는 모듈이 X-API이다
Client와 Server간의 통신은 http통신을 한다
-> 통신을 할 때 n개의 Dataset과 n개의 Variable를 주고 받을 수 있다
Client에서 Server로 데이터를 넘기는 부분 -> Input, Input Dataset
Server에서 Client로 데이터를 내리는 것 -> Output, Output Dataset

F1을 눌러 도움말에서 transaction을 검색하고 밑에 Form이라는 것을 선택을 해서 내용 하단 쯤에 Sample Call 첫 번째를 복사해서 Script 함수 안에 붙여넣어 주면 된다(Service ID를 strSelect로 변경)

1번째는 Service ID로 transaction을 구분할 수 있는 ID
2번째는 Service URL로 내가 호출할 서비스

JSP, ASP, SAP, bs, metadata, model는 서버 URL 경로를 설정하는 변수이다
3번째는 저장할 때 사용
4번째는 조회(Client에서 받을 Dataset명과 Server에서 보내는 Dataset명을 기입 -> ds_emp=out_emp를 입력)
-> ds_emp는 내가 만든 Dataset, out_emp는 Service에서 넘겨주는 이름
5번째는 조회 조건 Parameters(arg=1 arg2=2를 입력)
조회 조건을 넘기는 방법에는 Get방식과 Post방식이 있다
arg2=2 3처럼 데이터에 공백(space)이 포함될 수 있다(이대로 넘기면 Pasing오류가 난다)
-> + nexacro.wrapQuote("2 3")형태로 작성하면 하나의 값으로 인식하도록 해당 Method의 내부에서 처리해준다
즉, 값에 공백(space)이 들어가는 경우는 nexacro.wrapQuote()로 감싸준다

callback함수는 무조건 3개의 Parameters가 넘어온다
svcid(서비스id)는 transaction에서 1번째로 넘겨주는 인자
ecd, emsg는 서버 JSP단에서 넘겨주는 인자

성공을 했을 때는 몇 건의 조회됐는지 조회 건수를 표현해 주는 것이고,
실패를 했을 때는 ecd와 emsg를 보여줘서 Error상태를 파악할 수 있게 해준다
추가하는 방법
-> this.ds_emp.addRow();

ADD 버튼에 this.ds_emp.addRow();를 입력해주면 하나의 Row를 추가할 수 있다
-> Row 하나 추가하면 ds_emp에 있는 모든 컬럼을 사용자가 입력해야 한다
그러므로 초기값은 가능하면 최대한 셋팅을 해주는 것이 좋다
셋팅하는 방법
-> this.ds_emp.setColumn 메서드를 통해 셋팅할 수 있다

this.ds_emp의 추가한 Row위치의 GENDER 컬럼을 Default값으로 "W"를 설정했다
삭제하는 방법
-> this.ds_emp.deleteRow(this.ds_emp.rowposition);

this.ds_emp.rowposition은 현재 Row 위치를 의미한다

Add 버튼을 눌러 Row가 추가되는 것을 볼 수가 있다

Delete 버튼을 눌러 Row가 삭제되는 것을 볼 수가 있다
저장하는 방법

조회와 다르게 조회 부분은 지우고 저장 부분에는 in_emp=ds_emp라고 입력을 해주면 된다
server ds = client ds의 의미는 Server에서 받을 Dataset명과 Client에서 넘겨줄 Dataset명이다
-> 앞에서 받는 Dataset명 오른쪽에는 보내주는 Dataset명을 작성해준다고 생각하면 이해하기 편하다

위의 이미지처럼 입력을 해서 callback함수가 실행되게 해줘야 한다
저장할 때 수정하지 않은 Row까지 넘겨주면 네트워크 리소스와 서버 부하까지 발생을 하니 불필요한(수정되지 않은) 데이터는 넘길 필요가 없다
-> 저장할 때는 수정된 정보만 넘길 수 있는 옵션이 있는데 그게 :U 옵션이다

이런 식으로 저장할 때는 :U를 붙여줘야 한다 만약, 전체를 넘겨주고 싶은 경우 :A를 사용하면 된다
-> :A로 넘기는 소스가 있다면 확인을 해야 한다 왜 :A를 넘겼는지 타당한 이유가 없으면 잘못 설정한 것이다(이때는 :U로 변경)

Form을 선택해서 4번째 아이콘 Event를 누르면 밑에 onload를 더블 클릭 해주면 위의 이미지처럼 된다

위의 이미지처럼 입력해주면 된다
Dataset도 n개의 Dataset를 받을 수 있다
-> n개의 Dataset을 받을 때 구분은 공백("")이다
1번째 방법

Button01에 Posirion width부분을 px -> %로 바꾸어 주고 실행을 하면 위의 이미지처럼 첨에 나오게 된다

실행된 화면의 크기를 줄였을 경우 위의 이미지처럼 Button01의 크기가 줄여진 것을 볼 수가 있다
-> 즉, 화면의 크기가 변하며 자동으로 엔진이 %계산해서 resize를 해주는 것이다
2번째 방법

Button00의 width가 줄어든 만큼 오른쪽에 있는 Button01도 이동이 되어야 한다

Button01에서 마우스를 가운데에 놓으면 십자가 모양이 보인다 -> 십자가 위치에 마우스를 올리면 손모양으로 바뀌는데 클릭한 뒤 Button00에 드래그를 해주면 위의 이미지처럼 팜업창이 뜬다
Button00을 기준으로 42px 유지하겠다는 설정이다

실행을 해보면은 두 버튼간의 간격이 화면의 크기를 변하게 해도 일정하게 유지되는 모습을 볼 수 있다
3번째 방법

Drag한 사이즈가 Static 컴포넌트 사이즈이다
-> 실제 데이터는 Text 데이커 Static00이다
데이터(Static) 크기에 맞춰서 Static 컴포넌트의 크기가 자동으로 변경되는 경우가 있다
-> 자동으로 변경해주는 기능은 Fit to Contents

Static00를 클릭 상단에 Fit to Contents by width, height, both가 있다
width를 누르면 Static00 컴포넌트의 width를 Text에 맞게 변경된다
height를 누르면 Static00 컴포넌트의 height를 Text에 맞게 변경된다
both를 누르면 Static00 컴포넌트의 width, height를 Text에 맞게 같이 변경된다
4번째 방법

Production을 선택했을 때는 오른쪽 점선이 보이는 것은 Arrangement가 설정되어 있고 Static 컴포넌트 Position의 fittocontents 속성이 width로 설정되어 있다
-> 설정값 때문에 데이터 양에 따라 Static컴포넌트의 너비가 변하는 것이다
뒤에 있는 Static컴포넌트도 변화에 따라 움직여야 하기 때문에 Arrangement를 설정했다
Arrangement가 설정되지 않은 컴포넌트는 오른쪽 설정값이 비워져 있다
-> 값이 비워있는 것이 기본이다
Arrangement를 설정하면 오른쪽에 연결된 컴포넌트 정보가 나온다
-> 해당 설정 값으로 연결여부를 확인할 수 있다
Summary 타이틀 아래 컴포넌트도 fittocontents를 height로 설정했다
아래 Div 컴포넌트는 위에 있는 Summary영역과 Arrangement가 설정되어 있다
-> Summary 내용 길이의 변화에 맞춰서 움직이게 된다