XPLATFORM은 서버모듈로 X-API를 제공합니다. 이 API를 사용하여 생성된 Dataset format을 XPLATFORM HTML5 FrameWork이 해독하여 UI화면에 보여줍니다.
여기서는 X-API가 생성하는 Dataset format을 설명합니다. 이 format을 준수한 XML Format 파일은 XPLATFORM HTML5 FrameWork이 바로 Data로 간주하여 사용합니다. 즉, X-API를 사용하지 않아도 서버 프로그램을 개발할 수 있습니다.
Dataset XML layout
XML Declaration | |||||
Root | |||||
Cache | |||||
Parameters | |||||
Parameter (반복) | |||||
Dataset (반복) | |||||
ColumnInfo | |||||
ConstColumn (반복) | |||||
Column (반복) | |||||
Rows | |||||
Row (반복) | |||||
Col (반복) | |||||
OrgRow | |||||
Col (반복) |
XML Declaration
xml임을 명시하는 xml 선언문을 다음과 같이 정의합니다.
<?xml version="1.0" encoding="utf-8"?>
xml 선언문은 xml 문서의 가장 앞에 있어야 하며, 이 선언문 앞에는 어떠한 공백문자를 포함한 어떠한 문자도 올 수 없습니다.
xml 예
<?xml version="1.0" encoding="UTF-8"?> <Root xmlns="http://www.tobesoft.com/platform/Dataset" ver="4000"> <Parameters> <Parameter id="service">stock</Parameter> <Parameter id="method">search</Parameter> </Parameters> <Dataset id="output"> <ColumnInfo> <ConstColumn id="market" size="10" type="STRING" value="kse" /> <ConstColumn id="openprice" size="10" type="INT" value="15000" /> <Column id="stockCode" size="5" type="STRING" /> <Column id="currentprice" size="10" type="INT" /> </ColumnInfo> <Rows> <Row> <Col id="currentCode">10001</Col> <Col id="currentprice">5700</Col> </Row> <Row> <Col id="currentCode">10002</Col> <Col id="currentprice">14500</Col> </Row> </Rows> </Dataset> </Root>
Dataset엘리멘트 설명
Dataset의 엘리멘트(element)들을 설명합니다.
Root
개요
Dataset을 나타내는 최상위 엘리멘트
자식 엘리멘트
Parameters
Dataset
반복 여부
반드시 1개가 있어야 합니다.
속성
속성 이름 | 설명 | 예시 |
---|---|---|
xmlns | 네임스페이스, 만약 기본 네임스페이스를 사용하지 않는 경우라면 xmlns:tobe로 명시합니다. | <Root xmlns="http://www.tobesoft.com/platform/Dataset"> <Root xmlns:tobe="http://www.tobesoft.com/platform/Dataset"> |
ver | Dataset Layout 의 버전을 명시합니다. | <Root xmlns="" ver="5000"> |
Parameters
개요
통신 시 필요한 파라매터를 명시하기 위한 엘리멘트. 실제 파라매터 값은 자식 엘리멘트 Parameter가 가지고 있으며, Parameters 엘리멘트는 이들을 가지고 있는 집합의 의미입니다.
자식 엘리멘트
Parameter
반복 여부
없거나 1개가 있을 수 있습니다.
Parameters > Parameter
개요
파라매터의 값을 명시합니다.
자식 엘리멘트
없음.
반복 여부
없거나 Parameter 엘리멘트는 파라매터 개수 만큼 반복 될 수 있습니다.
속성
속성 이름 | 설명 | 예시 |
---|---|---|
id | 파라매터 이름 | <Parameter id="ErrorMsg" type="STRING">SUCC </Parameter > |
type | 파라매터 값의 타입 |
비고
type에 올 수 있는 데이터 타입은 다음과 같습니다.
STRING: 스트링. Column의 size와 관계없이 길이 제한이 없습니다.(단 system에서 한번에할당가능한 크기인 2GB정도제한됨)
0 length string 의 경우
<Parameter id="ErrorMsg" type="STRING"></Parameter>
Null인 경우
<Parameter id="ErrorMsg" type="STRING"/>
INT: 정수(-231 ~ 231-1)
FLOAT, DECIMAL: (±2.2X10-308 ~±1.7X10308)
BIGDECIMAL: 실수(±10-1056 ~ ±101056)
DATE: YYYYMMDD(-8192/01/01 ~ 8191/12/31)
DATETIME : YYYYMMDDHHmmssuuu (msec포함가능)
TIME : 6자리 HHmmssuuu(msec포함가능)
BLOB: 이진 데이터
MiPlatform에서는 다음과 같은 필수 파라매터를 사용하도록 정의하였다. MiPlatform과의 연동을 위해서는 파라매터를 설정하여야 합니다.
id | 설명 | 예시 |
---|---|---|
ErrorCode | Error Code. -Transaction 함수 호출 시 0보다 작은 경우에는 사용자가 정의한 에러로 InputDataset에 UpdateStatus를 반영하지 않고 실패 처리됩니다. 0이상일 경우에는 사용자가 정의한 정상 상태로 InputDataset에 UpdateStatus를 반영하며 성공 처리됩니다. -Load 함수 호출 시 0보다 작은 경우에는 사용자가 정의한 에러로 실패 처리됩니다. 0이상일 경우에는 사용자가 정의한 정상 상태로 성공 처리됩니다. 미지정시 : 0 | <Parameter id="ErrorCode">1 </Parameter > |
ErrorMsg | Error Message 미지정시 : ErrorCode가 미지정 또는 0일 때 SUCCESS, 그 외는 FAILED | <Parameter id="ErrorMsg">SUCC </Parameter > |
CacheType | Cache 방법의 Type 을 지정한다. Type 은 Session, Dynamic, Static, None 로 구분됩니다. 미지정시 : Session | <Parameter id="cachetype">Session </Parameter> |
Dataset
개요
하나의 Dataset의 내용의 값을 가지고 있는 엘리멘트. 자식 엘리멘트에는 Dataset의 구조를 표현하기 위한 ColumnInfo와 Dataset의 실제 데이터를 갖고 있는 Rows가 있습니다.
자식 엘리멘트
ColumnInfo
Rows
반복 여부
없거나 xml이 전달하는 Dataset의 개수만큼 반복될 수 있습니다.
속성
속성 이름 | 설명 | 예시 |
---|---|---|
id | Dataset 이름 | <Dataset id="History"> |
Dataset > ColumnInfo
개요
Dataset의 스키마를 표현하기 위한 엘리멘트. 실제 스키마의 정보는 자식 엘리멘트인 ConstColumn 과 Column이 표현하고 ColumnInfo는 이들을 포함하는 집합의 의미를 갖습니다.
고정된 값의 컬럼의 스키마는 ConstColumn이, 비 고정 값의 컬럼의 스키마는 Column이 표현합니다.
자식 엘리멘트
ConstColumn
Column
반복 여부
없거나 1개가 있을 수 있습니다.
ColumnInfo의 자식 엘리먼트들은 ConstColumn, Column 순으로 나열되어야 하며 ConstColumn이 항상 먼저 나열되어야 합니다.
ConstColumn, Column이 섞여서 나열되는 경우에는 애플리케이션에서 데이터를 처리하지 못할 수 있습니다.
(X) ConstColumn이 먼저 나열되지 않은 경우 <ColumnInfo> <Column id="stockCode" size="5" type="STRING"/> <Column id="currentprice" size="10" type="INT"/> <ConstColumn id="market" size="10" type="STRING" value="kse"/> <ConstColumn id="openprice" size="10" type="INT" value="15000"/> </ColumnInfo> ...
(X) ConstColumn, Column이 섞여있는 경우 <ColumnInfo> <ConstColumn id="market" size="10" type="STRING" value="kse"/> <Column id="currentprice" size="10" type="INT"/> <ConstColumn id="openprice" size="10" type="INT" value="15000"/> <Column id="stockCode" size="5" type="STRING"/> </ColumnInfo> ...
Dataset > ColumnInfo > ConstColumn
개요
항상 고정된 값을 갖는 Column의 스키마를 표현합니다.
자식 엘리멘트
없다.
반복 여부
없거나 고정 값 칼럼의 개수만큼 있을 수 있습니다.
속성
속성 이름 | 설명 | 예시 |
---|---|---|
id | Column 이름 | <ConstColumn id="systemName" size="255"type="STRING" value="Production"/> |
size | 최대 data 크기 | |
type | Column의 데이터 타입 | |
value | 컬럼의 고정 값 |
비고
type에 올 수 있는 데이터 타입은 다음과 같습니다.
STRING: 스트링. Column의 size와 관계없이 길이 제한이 없습니다.(단 system에서 한번에할당가능한 크기인 2GB정도제한됨)
INT: 정수(-231 ~ 231-1)
FLOAT, DECIMAL: (±2.2X10-308 ~±1.7X10308)
BIGDECIMAL: 실수(±10-1056 ~ ±101056)
DATE: YYYYMMDD(-8192/01/01 ~ 8191/12/31)
DATETIME : YYYYMMDDHHmmssuuu (msec포함가능)
TIME : 6자리 HHmmssuuu(msec포함가능)
BLOB: 이진 데이터
Dataset > ColumnInfo > Column
개요
파라매터의 값을 명시합니다.
자식 엘리멘트
없다.
반복 여부
없거나 비 고정값 칼럼의 개수만큼 있을 수 있습니다.
속성
속성 이름 | 설명 | 예시 |
---|---|---|
id | Column 이름 | <Column id="department" size="255"type="STRING" prop="text" sumtext="소계"/> |
size | 최대 data 크기 | |
type | Column의 데이터 타입 | |
Prop | Summury시 type을 정의 | |
Sumtext | porp값이 text일 때 문자열 |
비고
type에 설정되는 값은 ColumnInfo에서의 type과 동일합니다.
Prop은 다음과 같은 값을 갖습니다.
count : 이컬럼의 row개수를 summary 표시합니다.
sum: 이 컬럼의 row값의 합을 summary에 표시합니다.
max: 이 컬럼의 row들중 Max값을 summary에 표시합니다.
min: 이 컬럼의 row들중 Min값을 summary에 표시합니다.
avg: 이 컬럼의 row값의 평균을 summary에 표시합니다.
Text: summary에 sumtext속성 값을 표시합니다.
Dataset > Rows
개요
데이터셑의 각 Row들을 포함하기 위한 집합 의미의 엘리멘트. 실제 데이터를 표현하는 Row를 자식 엘리멘트로 갖습니다.
자식 엘리멘트
Row
반복 여부
없거나 1개 있을 수 있습니다.
Dataset > Rows > Row
개요
데이터셑의 하나의 Row의 데이터를 표현하기 위한 엘리멘트. 실제 각 Column의 값을 표현하는 Col을 자식 엘리멘트로 갖습니다. 그리고 type이 “update"일 경우 변경되기 전의 Row의 값을 가지고 있는 Org_Row 자식 엘리멘트가 있습니다.
자식 엘리멘트
Col
Org_Row
반복 여부
없거나 데이터셑의 Row 개수만큼 있을 수 있습니다.
속성
속성 이름 | 설명 | 예시 |
---|---|---|
type | insert : 원본 Dataset에 추가된 Row. | <Row type="insert"> <Col id="currentCode">10001</Col> <Col id="currentprice">13400</Col> </Row> |
update: 원본 Dataset에 변경된 Row. 자식 엘리멘트로 Org_Row를 포함한다. Org_Row는 변경전의 원본 Row입니다. | <Rows> <Row type="update"> <Col id="currentCode">10001</Col> <Col id="currentprice">13400</Col> <OrgRow> <Col id="currentCode">10001</Col> <Col id="currentprice">13700</Col> </OrgRow> </Row> </Rows> | |
delete: 원본 Dataset에 삭제된 Row를 의미합니다. | <Row type="delete"> <Col id="currentCode">10001</Col> <Col id="currentprice">13400</Col> </Row> |
Dataset > Rows > Row > Col
개요
데이터셑의 각 Column 값을 표현합니다.
자식 엘리멘트
없습니다.
반복 여부
없거나 칼럼의 개수만큼 있을 수 있습니다.
속성
속성 이름 | 설명 | 예시 |
---|---|---|
Id | Column 이름. ColumnInfo 의 자식 엘리멘트(ConstColumn , Column)에서 설정한 이름과 같다. | <Col id="department">management</Col> |
비고
0 length string 의 경우
<Col id="department" ></Col> or <Col id="department" />
Null인 경우
Tag가 없는 것으로 구분합니다.
Dataset > Rows > Row > OrgRow
개요
데이터셑의 Row의 값이 변경되었을 때, 원래 값을 가지고 있는 엘리멘트. 자식 엘리멘트로 실제 값을 가지고 있는 Col이 있습니다.
자식 엘리멘트
Col
반복 여부
없거나 1개 있을 수 있습니다.
비고
부모 엘리멘트인 Row와 유사하나 속성이 없습니다.
Dataset > Rows > Row > OrgRow > Col
개요
변경되기 전의 Column 값을 표현합니다.
자식 엘리멘트
없습니다.
반복 여부
없거나 칼럼의 개수만큼 있을 수 있습니다.
속성
속성 이름 | 설명 | 예시 |
---|---|---|
id | Column 이름. ColumnInfo 의 자식 엘리멘트(ConstColumn , Column)에서 설정한 이름과 같습니다. | <Col id="department">management</Col> |