2012-10-09 3 views
3

방법 메시지의 헤더 속성을 기반으로 경로 선택 노드를 사용 노새에 메시지를,에? prop1 및 prop2 :뮬 선택 노드 표현

내 메시지는 두 개의 헤더를 가지고있다.

나는이 표현을 사용하여 경로로 시도

:

<when expression="INBOUND:prop1=abc evaluator="header"> 

그것을 작동합니다.

하지만 난이하려고하면

<when expression="INBOUND:prop1=abc and prop2=123" evaluator="headers"> 

가 작동하지 않습니다. 나는 메시지에서 헤더 속성을 올바르게 설정하더라도 "otherwise"플로우로 이동한다는 의미입니다.

많은 아이디어가 많이 부탁드립니다!

감사합니다.

답변

4

뮬 3.3.x는되어 있다고 가정하고, 두 속성은 문자열 인 :

<when expression="#[message.inboundProperties.?prop1 == 'abc' and message.inboundProperties.?prop2 == '123']"> 

참고이 즉 prop1prop2있을 필요가 없습니다, null이 안전합니다.

+0

처럼 보일 것 그루비 식 계산기와 조건을 사용 될 수 있을까요? 나는 3.2.1을 실행하고있다 – ridermule

+1

아니, 이것은 3.2.x에서 실행되지 않습니다. 위의 @genjosanzo의 Groovy 솔루션을 3.2.x에서 사용하거나 3.3.x로 업그레이드하고 제안 된 MEL 표현식을 사용합니다. 이것은 Mule의 새로운 통합 표현식 언어입니다. –

+0

참조 : https://docs.mulesoft.com/mule-user-guide/v/3.7/mule-expression-language-reference#literals – Klapsa2503

2

헤더 평가자는 당신이 MEL원에 따라 너무 버전 < 3.3.0의 예와 노새를 사용한다고 가정하여 sintax에서

을 (즉,이 논리 연산자를 지원하지 않습니다) 복잡한 표현을 처리하도록 설계되지 않았습니다 아마도 당신의 요구에 맞을 것입니다. 그러나 업그레이드하는 즉시이 접근법을 취해야합니다.

오래된 노새 버전에서는 가장 좋은 방법은 당신이 뮬 3.2.x가 호환되는지 알고 다음

<when expression="#[groovy:message.getInboundProperty('prop1') == 'abc' && message.getInboundProperty('prop2') == '123']">