30.5. 서술자
30.5.1. 개요
같음에 대한 식을 테스트하여 서술자를 구성할 수 있습니다. 예를 들어, 조건자 simple("$header.timeOfDay} == '14:30'")
, 들어오는 메시지의 timeOfDay
헤더가 14:30
인지 여부를 테스트합니다.
또한 resultType
을 부울로 지정할 때마다 표현식은 표현식 대신 서술자로 평가됩니다. 이렇게 하면 이러한 표현식에 서술자 구문을 사용할 수 있습니다.
30.5.2. 구문
간단한 서술자를 사용하여 교환(headers, 메시지 본문 등)의 다양한 부분을 테스트할 수도 있습니다. 간단한 서술자에는 다음과 같은 일반 구문이 있습니다.
${LHSVariable} Op RHSValue
여기서 LHSVariable 은 왼쪽의 변수인 LHSVariable 은 표 30.1. “간단한 언어의 변수” 에 표시된 변수 중 하나이고 오른쪽의 RHSValue 값은 다음 중 하나입니다.
-
다른 변수
${
RHSVariable}
. -
작은따옴표로 묶은 문자열 리터럴
'
. -
작은따옴표로 묶은 숫자 상수
'
. -
null 개체,
null
.
단순 언어는 항상 RHS 값을 LHS 값의 유형으로 변환하려고 합니다.
간단한 언어는 RHS를 변환하려고 하지만 Operator에 따라 LHS를 비교하기 전에 적절한 Type으로 캐스팅해야 할 수 있습니다.
30.5.3. 예
예를 들어 다음과 같이 간단한 문자열 비교 및 숫자 비교를 수행할 수 있습니다.
simple("${in.header.user} == 'john'") simple("${in.header.number} > '100'") // String literal can be converted to integer
다음과 같이 왼쪽이 쉼표로 구분된 목록의 멤버인지 테스트할 수 있습니다.
simple("${in.header.type} in 'gold,silver'")
왼쪽이 다음과 같이 정규식과 일치하는지 테스트할 수 있습니다.
simple("${in.header.number} regex '\d{4}'")
다음과 같이 is
연산자를 사용하여 왼쪽의 유형을 테스트할 수 있습니다.
simple("${in.header.type} is 'java.lang.String'") simple("${in.header.type} is 'String'") // You can abbreviate java.lang. types
다음과 같이 왼쪽이 지정된 숫자 범위(범위가 포함됨)에 있는지 여부를 테스트할 수 있습니다.
simple("${in.header.number} range '100..199'")
30.5.4. 연결
논리 결합, &&
amp; 및 ||
를 사용하여 서술자를 결합할 수도 있습니다.
예를 들어, 다음은 & ;&
amp; 조합(논리적 및)을 사용하는 표현식입니다.
simple("${in.header.title} contains 'Camel' && ${in.header.type} == 'gold'")
그리고 여기에 ||
를 사용하는 표현식(논리적 포함 또는)이 있습니다.
simple("${in.header.title} contains 'Camel' || ${in.header.type} == 'gold'")