통신 Data Format은 Service와 MiPlatform 간에 전달되는 Data의 XML 구조입니다.
TOBESOFT 제품군이 아닌 경우 통신 Data Format을 아래와 같이 통일시키면 MiPlatform에서 Data를 처리할 수 있습니다. 통신 Data Format은 XML형식과 Binary형식이 있습니다
Binary형식은 Developer 매뉴얼을 참고하십시오.
XML Fomat
구성
Prolog | |||
Root Element | |||
Params | |||
Dataset1 | |||
column | |||
colinfo | |||
record | |||
record Information | |||
Dataset2 | |||
column | |||
colinfo | |||
record | |||
record Information | |||
DatasetN | |||
column | |||
colinfo | |||
record | |||
record Information |
Prolog
Prolog는 Root Element가 나오기 전에 선언되는 Header 정보로 XML 선언문과 DTD 정보가 있습니다. MiPlatform에서는 XML 선언문만 사용합니다.
Attribute 이름 | 설명 |
---|---|
version | W3C에서 발표된 XML Version |
encoding | CharSet |
<?xml version="1.0" encoding="euc-kr"?>
Root Element
Root Element는 Sub Element "Params" 와 "Dataset"으로 구성됩니다.
Params
통신 시에 필요한 parameter(시스템변수, 사용자 변수)를 정의합니다,
id가 ErrorCode, ErrorMsg, Cache 시스템 변수로 반드시 정의되어야 하며, 필요한 경우 사용자 정의 변수를 추가로 선언할 수 있습니다.
Attribute 이름 | 설명 |
---|---|
Id | 전달 Parameter의 ID |
Type | 전달 Parameter의 Type |
<param id="ErrorMsg" type="STRING">SUCC</param>
필수 Parameter (시스템 변수)
ID | 설명 |
---|---|
ErrorCode | Error Code -Transaction 함수 호출시 0보다 작은 경우에는 사용자가 정의한 에러로 InputDataset에 UpdateStatus를 반영하지 않고 실패 처리됩니다. 0이상일 경우에는 사용자가 정의한 정상 상태로 InputDataset에 UpdateStatus를 반영하며 성공 처리됩니다. -Load 함수 호출시 0보다 작은 경우에는 사용자가 정의한 에러로 실패 처리됩니다. 0이상일 경우에는 사용자가 정의한 정상 상태로 성공 처리됩니다. |
ErrorMsg | Error Message |
Cache | Cache기능 사용 여부 |
<param id="ErrorCode">1</param> <param id="ErrorMsg">SUCC</param> <param id="cache" type="string" >true</param>
선택 Parameter (사용자 변수)
Format은 필수 Parameter (시스템 변수)사용과 동일하며 ID에 적당한 이름을 부여하여 사용합니다.
dataset
In/Output Data에 대한 내용입니다. Sub Element로 Colinfo(Dataset을 구성하고 있는 Column 정보)와 Record(전달될 실제 Data)로 구성되어 있습니다.
Attribute 이름 | 설명 |
---|---|
id | Dataset의 이름 |
<dataset id="output" >
column
Dataset의 상수 Column 정보에 대한 기술 입니다.
상수의 값은 Tag와 Tag사이에 입력합니다.
Attribute 이름 | 설명 |
---|---|
id | Const Column의 이름 |
size | Column의 최대 Data크기 (기준값임.) |
type | Column에 들어갈 Data의 종류 colinfo의 type과 동일합니다. |
<Column id="col1" size="255" type="string">Const</Column>
colinfo
Dataset을 구성하고 있는 Column 정보에 대한 기술입니다.
Attribute 이름 | 설명 |
---|---|
id | Colinfo의 이름 |
type | Column의 Type (string:Size에 상관없이 값이 저장됩니다. Int: 정수 Decimal: 실수 date : 14자리 yyyyMMddHHmmss 8자리 yyyyMMdd 6자리 HHmmss Long: 긴 문자열 Char: l: string Type 같습니다. currency: 통화(화폐단위)형 데이터 blob:Binary Data ) |
size | Column의 Size |
<colinfo id="UserID" type= "STRING" size="30"/>
record
Dataset에 포함된 Data의 내용으로, colinfo에서 정의된 Column ID가 record의 sub-element로 기술됩니다. 각 컬럼의 데이타는 sub-element의 콘텐츠로 지정됩니다.
<?xml version="1.0" encoding="euc-kr" ?> <!-- recode tag에 type이 추가됨 type이 update인 경우에는 org_recode tag가 추가되어 있어 변경된 상태를 구별할 수 있습니다. --> <root> <dataset id="ds_sample"> <column id="Const0" type="STRING">100</column> <column id="Const1" type="STRING" /> <colinfo id="Genre" size="256" type="STRING" /> <colinfo id="Year" size="256" type="STRING" /> <colinfo id="Title" size="256" type="STRING" /> <colinfo id="Audience" size="256" type="DECIMAL" /> <colinfo id="Country" size="10" type="STRING" /> <record type="insert"> <!-- insert된 레코드 --> <Audience /> <Country>InsertTest</Country> <Genre /> <Title /> <Year /> </record> <record type="update"> <!-- update된 레코드 --> <Audience>120</Audience> <Country>한국Test</Country> <Genre>스릴러</Genre> <Title>주홍글씨</Title> <Year>2004</Year> <org_record> <Audience>120</Audience> <Country>한국</Country> <Genre>스릴러</Genre> <Title>주홍글씨</Title> <Year>2004</Year> </org_record> </record> <record> <Audience>90</Audience> <Country>한국</Country> <Genre>스릴러</Genre> <Title>알포인트</Title> <Year>2004</Year> </record> <record> <Audience>70</Audience> <Country>한국</Country> <Genre>스릴러</Genre> <Title>거미숲</Title> <Year>2003</Year> </record> <record type="delete"> <!-- delete된 레코드 --> <Audience>50</Audience> <Country>한국</Country> <Genre>스릴러</Genre> <Title>페이스</Title> <Year>2003</Year> </record> </dataset> </root>
통신 Format 전체 예시
<?xml version="1.0" encoding="euc-kr"?> <root> <!-- Parameter list --> <params> <param id="var1" type="STRING">var1</param> <param id="var2" type="INTEGER">2005</param> <param id="var3" type="DECIMAL">99.99</param> </params> <!-- Datasets --> <dataset id="sample1"> <!-- Column info --> <colinfo id="col1" type="STRING" size="255"/> <colinfo id="col2" type="INT" size="255"/> <colinfo id="col3" type="DECIMAL" size="255"/> <colinfo id="col4" type="BLOB" size="255" encrypt="base64"/> <!-- record --> <record> <col1>black</col1> <col2>2003</col2> <col3>166.6</col3> <col4>MTIzNDU2Nzg5MA==</col4> </record> <!-- Inserted record --> <record type="insert"> <col1>white</col1> <col2>2004</col2> <col3>172.4</col3> <col4>MTIzNDU2Nzg5MA==</col4> </record> <!-- Updated record --> <record type="update"> <col1>red</col1> <col2>2001</col2> <col3>177.4</col3> <col4>MTIzNDU2Nzg5MA==</col4> <!-- Original record --> <org_record> <col1>yellow</col1> <col2>2002</col2> <col3>178.2</col3> <col4>MTIzNDU2Nzg5MA==</col4> </org_record> </record> <!-- Deleted record --> <record type="delete"> <col1>blue</col1> <col2>1998</col2> <col3>182.5</col3> <col4>MTIzNDU2Nzg5MA==</col4> </record> </dataset> <dataset id="sample2"> <!-- Constant columns --> <column id="const_col1" type="STRING">col1</column> <column id="const_col2" type="STRING">col2</column> <!-- Column info --> <colinfo id="col1" type="STRING" size="255"/> <colinfo id="col2" type="INT" size="255"/> <!-- Records --> <record> <col1>apple</col1> <col2>324</col2> </record> <record> <col1>grape</col1> <col2>377</col2> </record> </dataset> </root>