SearchFilter 샘플 정보

이 샘플에서는 Java 사용자 정의 메시지 처리 노드를 Filter 노드로서 사용하는 방법을 보여줍니다. SearchFilter 노드는 20명의 고객 이름이 포함된 XML 메시지에서 특정 고객 이름을 검색합니다.

다음 그림은 SearchFilter 샘플 메시지 플로우를 보여줍니다.

이 그림은 SearchFilter 메시지 플로우를 보여줍니다. SFInput 노드는 SearchFilter 노드 및 SFFailure 노드에 연결됩니다. SearchFilter 노드는 SFOutput 노드, NotFound 노드 및 SFFailure 노드에 연결됩니다. NotFound 노드는 SFOutput 노드 및 SFFailure 노드에 연결됩니다.

SearchFilter 노드는 XML 입력 메시지의 컨텐츠에서 SearchName 요소에 포함된 문자열을 검색합니다. 예를 들면, 다음과 같습니다.
<SearchName>
Surname of customer
</SearchName>

XML 입력 메시지에 검색 이름이 표시되면, 전체 고객 이름이 메시지 끝에 추가됩니다. 예를 들어, "John Smith"가 입력 메시지에 있는 20명의 고객 이름 중 하나이고 "Smith" 문자열이 SearchName 요소에 포함되는 경우, SearchFilter 노드는 "John Smith"를 메시지 끝에 추가합니다.

이 샘플에서는 전체 고객 이름을 찾으면 메시지에 5번 추가합니다. 이것으로 SearchFilter 노드의 추가 기능을 설명합니다. 다음 예 코드는 Java 소스 파일인 com.ibm.broker.ude.samples.SearchFilterNode.java에서 가져온 것으로 고객 이름이 메시지에 5번 추가되는 방법을 보여줍니다.

// if the search name was found then add <Result> tag to output message
if (customerElement.getFirstChild().getValue().equals(searchName)) {
// indicate that the search name has been found
result = true;

// construct a concatenation of 5 full names using String Buffer
// as this has improved performance over ordinary String concatenation
StringBuffer fiveNames = new StringBuffer();
fiveNames.append(customerElement.getLastChild().getValue());
fiveNames.append(" ");
fiveNames.append(searchName);
fiveNames.append(" ");

searchName = fiveNames.toString();

for (counter = 0; counter < 4; counter++) {
fiveNames.append(searchName);
}

// Add a new <Result> tag to output message as the last child of <Message1>
newtag = topOfBody.createElementAsLastChild(MbElement.TYPE_NAME, "Result", fiveNames.toString());

terminal = getOutputTerminal("True");
}

Java 소스 파일인 com.ibm.broker.ude.samples.SearchFilterNode.java는 Java 프로젝트 UDESampleJavaCode에 있습니다.

XML 입력 메시지에서 검색 이름을 찾지 못하면, SearchFilter 노드의 로컬 환경 트리에 "Not found" 문자열이 저장됩니다. "NotFound" Compute 노드는 "Not found" 문자열을 출력 메시지에 추가합니다.

SearchFilter 샘플에서는 다음 큐를 사용합니다.

사용자 정의 확장 샘플 정보

기본 페이지 아이콘 샘플 홈으로 돌아가기