FILTER

  • inputValue(input 위치에서 찾은 데이터)의 row count 만큼 roof 돌며 각 아이템에 대하여 하위 filter 또는 filterTerms 처리 후 output에 반환

  • filter의 type 에 따라 filter를 hierarchy 하게 구성 가능

    • type = conjunction → 하위 filters

    • type = filter → filterTerms

  • conjunction 에 따라 filters 또는 filterTerms를 AND, OR 논리 연산한다.

  • isNot 이 true 이면 논리연산값을 부정처리한다.

 

 Define field

Filter

ID

Description

ID

Description

id

query flow component id

name

이름

type

  • filter

  • conjunction

input

flow Component 처리 기준 데이터 위치

isNot

부정연산 true , false

conjunction

논리연산 and , or , exist

output

flow Component 처리 결과 위치

filters

type = conjunction 인경우 하위 filter 설정

filterTerms

type = filter 인경우 하위 filterTerms 설정

next

다음 flow Component id

 

Filter Terms

ID

Description

ID

Description

id

filter terms id

field

비교연산 기준 데이터 위치

"field": "id"

"field": "context.pg.id"

"field": "session.userId"

isNot

부정연산 true , false

method

관계 연산자 (아래 상세 설명)

value

조건값

 

Filter Terms Method

ID

Description

ID

Description

equals

두 CharSequence를 비교하여 동일한 문자 시퀀스를 나타내는지 확인

contains

CharSequence에 검색 CharSequence가 포함되어 있는지 확인

exist

존재 여부 확인

startWith

CharSequence가 지정된 접두사로 시작하는지 확인

endsWith

CharSequence가 지정된 접미사로 끝나는 지 확인

above

숫자,날짜 비교 >=

below

숫자,날짜 비교 <=

fromto

숫자,날짜 기간 내 포함 여부 "20200101~20201231"

 

Flow Component

output 위치에 논리연산값 반환 후 next

filter start

  • get value of "input" position (inputValue)

  • roof inputValue

    • if type = conjunction

      • roof filters

    • if type = filter

      • roof filterTerms

        • run each "terms"

        • get the value of the "method" processed "value" position (termsValue)

        • set "field" as the key, "termsValue" as the value

  • put the value of the "output" position

next

 

Component inner filter

논리연산값에 따라 현재 flow Component 실행여부 판단

flowComponent start

→ mapper, reducer, trigger, switch, switchTerms, validation

  • get value of "input" position (inputValue)

  • roof inputValue

    • filter exists

    • if type = conjunction

      • roof filters

    • if type = filter

      • roof filterTerms

        • run each "terms"

        • get the value of the "method" processed "value" position (termsValue)

        • set "field" as the key, "termsValue" as the value

    • The result of the final logical operation of "filter"

      • TRUE execute flowComponent

      • FALSE continue

next

 

SAMPLE Flow Component

[ { "typeId": "filter", "id": 97734146, "name": "TEST filter", "type": "conjunction", "input": "context.cartProductList", "isNot": false, "conjunction": "and", "filters": [ { "typeId": "filter", "id": 977341461, "name": "TEST subFilter 1", "type": "filter", "isNot": false, "conjunction": "or", "filterTerms": [ { "typeId": "filterTerms", "id": 555, "field": "existOption", "isNot": true, "method": "equals", "value": "true" }, { "typeId": "filterTerms", "id": 554, "field": "existOption", "isNot": false, "method": "equals", "value": "true" } ] }, { "typeId": "filter", "id": 977341462, "name": "TEST subFilter 2", "type": "filter", "isNot": false, "conjunction": "and", "filterTerms": [ { "typeId": "filterTerms", "id": 556, "field": "existOption", "isNot": true, "method": "equals", "value": "true" } ] } ], "output": "filterCartProducts" } ]

SAMPLE Component inner filter

{ "typeId": "trigger", "id": 685630802, "name": "create Cart", "input": "cart", "output": "cart.node", "filter": { "typeId": "filter", "id": null, "name": "cart Id 존재 여부", "type": "filter", "isNot": false, "conjunction": "and", "filterTerms": [ { "typeId": "filterTerms", "id": null, "field": "id", "isNot": true, "method": "exist", "value": "" } ] }, "processEvent": { "typeId": "processEvent", "id" : "createCart", "name": "장바구니 생성", "tid": "cart", "targetEvent": "create" }, "next": 15054316 }