PropertyType
- 1 프로퍼티타입 (PropertyType)
- 1.1 Value Type(valueType)
- 1.1.1 기본형 : STRING, INT, LONG, DOUBLE, BOOLEAN, DATE
- 1.1.2 TEXT
- 1.1.3 HTML
- 1.1.4 FILE, IMAGE
- 1.1.5 FILES, IMAGES
- 1.1.6 CODE
- 1.1.7 REFERENCE
- 1.1.8 PARENT
- 1.1.9 PART
- 1.1.10 REFERENCES
- 1.1.11 PARTS
- 1.1.12 REFERENCED
- 1.1.13 CHILDREN
- 1.1.14 기타 : MONTH, COLOR, JSON
- 1.2 주요 속성
- 1.1 Value Type(valueType)
프로퍼티타입 (PropertyType)
노트타입의 개별 속성을 정의합니다.
Value Type(valueType)
각 프로퍼티타입의 유형을 정의합니다.
기본형 : STRING, INT, LONG, DOUBLE, BOOLEAN, DATE
Java의 기본형에 1:1로 매핑되는 유형이며, DB의 경우는 정확하게 매핑되는 유형이 없는 경우는 유사한 유형으로 매핑합니다. ex) INT형은 Oracle의 경우 그냥 NUMBER로 매핑
TEXT
STRING형과 비교하면 줄바꿈 문자등이 포함되어 일반적으로 textarea를 이용하여 입력을 받는 형태를 의미하며 DB의 TEXT(mysql)나 CLOB(oracle) 등으로 매핑되어 저장됩니다.
HTML
TEXT와 저장 형태는 동일하지만, 기본적으로 HTML 형태의 데이터를 저장하는데 사용됩니다. 본안 HTML 속성의 경우
FILE, IMAGE
FILE형은 해당 프로퍼티타입에 fileHandler(기본값은 default) 설정을 통하여 파일 저장 방식을 지정할 수 있으며, fileHandler를 변경하여 저장 방식을 커스터마이징 할 수 있다.
DefaultFileHandler는 다음과 같이 application.yml에 file.default.path에 설정된 경로에 tid/pid/yyyymm/dd/UUID.파일확장자 형태로 파일을 저장하며, {“contentType”: “jpeg”, “storePath” : “tid/pid/201707/11/daidafeildiadag.jpg”, “fileName”: “test.jpg”, “fileSize” : 233} 같은 형태로 fileValue를 관리한다.
file:
default:
path: /resource/backend/files
FILES, IMAGES
FILES형은 FILE형을 처리하는 것을 배열형태로 저장하는 것을 지원합니다.
CODE
CODE형은 Java의 enum과 같이 선택할 수 있는 값을 제공하는 유형이며, 다음과 같이 직접 코드 값을 JSON 형태로 정의하거나 Java 클래스의 enum 타입에 직접 매핑하는 형태로 정의합니다.
"code": [{"value": "node", "label": "Node"}, {"value": "data", "label": "Data"}]
"code": "net.ion.ice.core.node.PropertyType$ValueType"
REFERENCE
REFERENCE는 다른 노드에 대한 ID를 저장하여 노드 간의 Relation을 정의하는 유형입니다.. 이를 위하여 다음과 같은 추가적인 속성에 대한 설정이 필요합니다.
referenceType : 참조할 노드 타입 지정
filter : 참조 대상 노드를 선택하기 위한 조건이 필요한 경우 이를 Parameter Query 형태의 filter로 설정, 이 경우 해당 REFERENCE를 뒤한 code API를 호출하면 필터링된 코드 목록 리턴
ex) 프로퍼티타입의 referenceValue의 filter는 "filter" : "tid_matching={{:referenceType}}" 와 같이 설정되어 있음
API 호출시에 http://localhost:8080/node/propertyType/code.json?pid=referenceValue&referenceType=event 와 같이 호출하면 referenceType이 event인 프로퍼티타입 코드 리스트 반환
REFERENCE형에 대한 저장시에 대상 노드타입의 idable이 하나 이상이면 id1>id2 와 같은 형태로 ID가 생성되기 때문에 이런 경우를 고려하여 refId라는 추가적인 값을 가지게 된다. 따라서 REFERENCE형에 대한 API에서는 다음과 같은 형태로 리턴 됩니다.
{
"refId": "event>tid",
"value": "tid",
"label": "NodeType ID"
}
이런경우 indexable이 true라면 기본 PID로는 value와 label이 인덱싱되고, PID_refId 필드로 refId가 인덱싱 됩니다. 따라서 PID_refId_matching=xxx와 같은 형태로 질의가 가능합니다.
PARENT
REFERENCE와 동일한 기능을 제공합니다. 추가적으로 상위 노드 저장시에 해당 노드에 값이 없어도 자동으로 값을 저장하며 상위 노드가 삭제되면 해당 노드도 삭제됩니다.
PART
REFERENCE, PARENT와 동일하게 Relation 기능을 제공하지만, PART는 1:1 관계만 제공하며, 상위 노드 API에 항상 포함되어 리턴됩니다.
subFormPart: {
testNodePartsId: 2,
name: "TEST PART",
description: "test",
id: "2",
label: "TEST PART",
file: null
},
subFormReference: {
value: "1",
label: "TEST REFERENCE",
refId: "1"
}
REFERENCES
REFERENCES는 REFERENCE 유형을 다중 선택 가능한 유형입니다. 따라서 추가 속성이나 인덱싱도 REFERENCE와 동일하게 설정하며, API 응답 형태는 다음과 같이 배열로 반환됩니다.
PARTS
REFERENCES와 동일한 기능을 제공합니다. 다만, PART와 마찬가지로 모든 API에서 항상 Object 형태로 포함되어 제공됩니다.
REFERENCED
카테고리-컨텐츠 관계 처럼 REFERENCE나 REFERENCES로 참조하는 대상 목록을 제공하는 유형이다. REFERENCED 유형은 실제로 값을 저장하는 것이 아니라 다음과 같은 추가 속성을 이용하여 내부적으로 쿼리를 실행한 결과를 제공한다.
referenceType : 참조하고 있는 노드 타입 지정
referenceValue : 참조하고 있는 노드 타입의 REFERENCE 속성 지정
filter : REFERENCED 목록을 제공하기 위해서 sorting이나 조건이 필요한 경우 이를 Parameter Query 형태의 filter로 설정
CHILDREN
REFERENCED와 동일한 기능을 제공합니다. 추가적으로 항상 하위 데이터가 API에 포함되며, 상위 노드 삭제시 하위 노드도 삭제 됩니다.
기타 : MONTH, COLOR, JSON
STRING 동일하지만 해당하는 UI 활용하기 위하여 구분한 유형입니다.
주요 속성
ValueType과 관련된 속성 이외의 주요 속성은 다음과 같습니다.
pid | valueType | config | description |
---|---|---|---|
pid | STRING | idable | PropertyType의 아이디를 지정합니다. |
defaultValue | STRING |
| 기본값을 정의합니다. {{: nextOrderNo() }}와 같이 ICE EL을 지원합니다. |
defaultComponent | STRING |
| 자동 폼생성시에 사용되는 기본 컴포넌트를 지정합니다. |
required | BOOLEAN |
| 필수여부를 선택합니다. |
idable | BOOLEAN |
| 해당 속성의 ID 여부를 선택합니다. |
labelable | BOOLEAN |
| Select 컴포넌트에서 필요한 code API에서 label로 사용되는 속성인지에 대한 여부를 지정합니다. |
treeable | BOOLEAN |
| 해당 속성으로 tree API에 대한 지원여부를 지정합니다. |
i18n | BOOLEAN |
| 해당 속성의 다국어 지원 여부를 지정합니다. |
indexable | BOOLEAN |
| 해당 속성에 대해서 인덱싱 설정 여부를 정의합니다. |
sortable | BOOLEAN |
| 소팅이 불가능한 인덱싱의 경우에 PID_sort 필드를 만들어서 소팅이 가능하도록 추가 인덱싱 사용여부 설정 |
facetable | BOOLEAN |
| Facet 기능을 사용할 수 있도록 추가 인덱싱 작업 설정 |
analyzer | CODE |
| |
indexNull | BOOLEAN |
| null 값에 대한 인덱싱 여부 설정 |
idType | CODE | autoIncrement, UUID, hash | 자동 생성 아이디 유형 설정 |
orderNo | INT |
| 정렬 순서 |
length | INT |
| 최대 길이 설정 |
encryption | BOOLEAN |
| 해당 속성의 암호화 여부를 설정합니다. |
virtual | BOOLEAN |
| 가상화 속성 여부를 설정합니다. |
virtualValue | STRING |
| 가상화 속성의 경우 해당하는 값을 동적으로 추출하여 제공합니다. |
option | PARTS |
| API 처리, Validation, UI 옵션 등의 추가 옵션을 설정합니다. |
relatedPid | REFERENCES |
| 해당 노드타입의 다른 프로퍼티 타입 중에서 관련이 있는 프로퍼티 타입을 설정합니다. |
enableCondition | PARTS |
| 해당 속성의 활성화 여부에 대한 조건을 설정합니다. |
requiredCondition | PARTS |
| 해당 속성의 필수값 여부에 대한 조건을 설정합니다. |
columnId | STRING |
| pid와 DB의 컬럼명이 다를 경우 DB의 컬럼명을 지정합니다. |
useRefId | BOOLEAN |
| DB 저장시 refId를 저장합니다. |