Rankings Element를 이용하여 Queue에 대기 중인 Entity 정렬하기( http://www.scmlab.com/25182 )에 이어서 이번에는 Search Module을 이용한 Queue에 있는 Entity 추출하는 방법에 대하여 알아 보겠습니다. 아래의 그림 중 붉은 박스가 오늘 설명한 Search 모듈입니다.

일반적으로 Search 모듈은 Queue에 있는 특정 값을 찾아내는 기능을 하는 것이며, 이렇게 찾은 entity를 Remove 모듈을 통하여 추출해오는 기능을 하는 것입니다.
따라서 Search 모듈과 Remove모듈은 거의 한 세트라고 보셔도 무방할 듯하네요
자 그럼 이 Search 모듈과 Remove 모듈에 대해서 좀 더 알아 볼까요?
Search모듈은 위와 같이 구성이 되어있습니다.

Type ; 가장 많이 사용되는 것은 Queue에 있는 Entity의 속성을 찾기위해 사용됩니다. 그 외에도 Batch 혹은 Expression의 조건에 해당하는 값들을 찾을 수 있습니다.
Queue Name ; Type을 Search a Queue라고 설정을 하였으면, 당연히 Queue 이름을 적어줘야겠죠? 위에 적혀있는 Top_Team이라는 Queue는 http://www.scmlab.com/25182 에서 정의된 Queue입니다.
Starting Value & Ending Value ; 어느 범위에 해당하는 Entity의 값을 찾을 것인가를 결정하는 곳입니다. 1은 Queue에 있는 첫번째 Entity부터 찾기 시작하라는 말이며, NQ란 지금 Queue에있는 마지막 Entity까지 전부다 찾아 보라는 뜻입니다.
Search Condition ; 찾을 조건을 입력하는 곳입니다. Max(Win_Count)라는 말은 Queue에 대기하고 있는 Entity의 attribute 중에 하나인 Win_Count가 가장 큰 값을 찾으라는 뜻입니다.
이렇게 Search를 한 후 나가는 곳을 보시면 Found와 Not Found 있습니다. 이것은 말 그대로 해당되는 조건의 값을 찾으면 Found로 해당되는 조건의 값이 없으면 Not Found로 Entity를 보냅니다. 만약 Queue에 대기 중인 Entity가 하나도 없으면 당연히 Not Found로 가겠죠?

다음은 이렇게 Search를 통해 찾은 해당 Entity를 개체로 부터 끄집어 내어 오는 로직을 살펴보겠습니다. 이 기능은 Remove를 통하여 해당 개체를 추출해 올 수 있습니다.

Remove Module은 간단하게 구성이 되어 있습니다.
Queue Name ; 말 그대로 가져올 Entity가 있는 Queue의 이름을 나타냅니다.
Rank of Entity ; 이 곳에는 몇 번째의 Entity를 가져 올 것인지를 적어 주는 곳입니다. J라는 말은 해당 Entity(Search를 통해 조건을 만족한 것)를 가져오라는 뜻입니다.
이렇게 Remove를 한 Entity는 Orginal과 Removed Enttiy라는 두개의 길로 나가게 됩니다.

Orginal ; Search를 통과한 entity를 말하며, 사용자가 정의를 하지 않은 경우 Attribute의 모든 값이 0으로 나옵니다.
Removed Entity ; 실제로 Search를 통해서 찾은 Entity를 나타내며 이 Entity는 Search 조건을 만족하는 값을 Attribute에 저장되어 있는 것을 확인 하실 수 있습니다.
위와 같은 예제를 만들어서 확인 해보시면 좀 더 쉽게 이해가 되실 거라고 생각됩니다.
