프로퍼티타입 (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) 등으로 매핑되어 저장
FILE
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
CODE
CODE형은 Java의 enum과 같이 선택할 수 있는 값을 제공하는 유형이며, 프로퍼티타입의 code 속성으로 다음과 같이 설정한다.
"code": [{"value": "node", "label": "Node"}, {"value": "data", "label": "Data"}, {"value": "logic", "label": "Logic"}, {"value": "path", "label": "Path"}]
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로는 refId가 인덱싱되고, PID_label 필드로 label이, PID_value 필드로 value 가 각각 인덱싱되어 PID_label_matching=xxx와 같은 형태로 질의가 가능하다.
REFERENCES
REFERENCES는 REFERENCE 유형을 다중 선택 가능한 유형이다. 따라서 추가 속성이나 인덱싱도 REFERENCE와 동일하게 설정하며, API 응답 형태는 다음과 같이 배열로 반환된다.
[
{
"refId": "event>tid",
"value": "tid",
"label": "NodeType ID"
},
{
"refId": "event>event",
"value": "event",
"label": "Event"
}
]
REFERENCED
카테고리-컨텐츠 관계 처럼 REFERENCE나 REFERENCES로 참조하는 대상 목록을 제공하는 유형이다. REFERENCED 유형은 실제로 값을 저장하는 것이 아니라 다음과 같은 추가 속성을 이용하여 내부적으로 쿼리를 실행한 결과를 제공한다.
referenceType : 참조하고 있는 노드 타입 지정
referenceValue : 참조하고 있는 노드 타입의 REFERENCE 속성 지정
filter : REFERENCED 목록을 제공하기 위해서 sorting이나 조건이 필요한 경우 이를 Parameter Query 형태의 filter로 설정
PARENT와 CHILDREN
PARENT와 CHILDREN은 REFERENCE와 REFERENCED와 동일한 개념
Component 설정(component)
조건부 노출 설정(enableCondition)
조건부 노출 설정은 동일 노드의 다른 프로퍼티의 값에 따라서 해당 프로퍼티의 노출 여부를 정의한다.
required : 필수 여부
idable : 아이디 여부
labelable : Label 여부
treeable : REFERENCE일 경우 트리형태 지원 여부
indexable : 인덱싱 여부
analyzer : 인덱싱을 하는 경우 적용할 Analyzer 지정
simple : Lowercase 만 적용
standard : Lowercase와 Stop필터 적용
code : Lowercase 적용하고, 공백이나 ‘,’ 문자로 토큰
cjk : Lowercase, CJKBigram, StopFilter 적용
referenceType : valueType이 REFERENCE 또는 REFERENCED일 경우 참조할 노드 타입 지정
referenceValue : 참조 노드 타입의 프로퍼티 타입 지정
code : CODE 형에서 사용할 코드 값
validationTypes : Validation 체크 값
fileHandler : 파일 저장에 사용할 저장소 지정