검색

32.8. 변수 및 함수 사용

download PDF

32.8.1. 경로에서 변수 평가

경로 내에서 Cryostat 표현식을 평가할 때 Cryostat 변수를 사용하여 현재 교환 내용과 O/S 환경 변수 및 Java 시스템 속성에 액세스할 수 있습니다. 변수 값에 액세스하는 구문은 XML 네임스페이스를 통해 변수에 액세스하는 경우 $VarName 또는 $Prefix: VarName 입니다.

예를 들어 In 메시지의 본문에 $in:body 로 액세스하고 In 메시지의 헤더 값은 $in:HeaderName 으로 액세스할 수 있습니다. O/S 환경 변수는 $env:EnvVar 로 액세스할 수 있으며 Java 시스템 속성은 $system:SysVar 로 액세스할 수 있습니다.

다음 예에서 첫 번째 경로는 / person/city 요소의 값을 추출하여 city 헤더에 삽입합니다. 두 번째 경로 필터는 $in:city = 'London' 을 사용하여 교환합니다. 여기서 $in:city 변수가 city 헤더 값으로 교체됩니다.

from("file:src/data?noop=true")
    .setHeader("city").xpath("/person/city/text()")
    .to("direct:tie");

from("direct:tie")
    .filter().xpath("$in:city = 'London'").to("file:target/messages/uk");

32.8.2. 경로에서 함수 평가

표준 Cryostat 함수 외에도 Cryostat 언어는 추가 함수를 정의합니다. 이러한 추가 기능( 표 32.4. “Cryostat 사용자 정의 기능”에 나열된)은 기본 교환에 액세스하거나, 간단한 표현식을 평가하거나, Apache Camel 속성 자리 표시자 구성 요소에서 속성을 검색하는 데 사용할 수 있습니다.

예를 들어 다음 예제에서는 in:header() 함수와 in:body() 함수를 사용하여 기본 교환에서 헤드와 본문에 액세스합니다.

from("direct:start").choice()
  .when().xpath("in:header('foo') = 'bar'").to("mock:x")
  .when().xpath("in:body() = '<two/>'").to("mock:y")
  .otherwise().to("mock:z");

이러한 함수와 해당 in:HeaderName 또는 in:body 변수 간의 유사성을 확인합니다. 함수에는 in:body 가 아니라 in:header('HeaderName') 대신 in:header( 'HeaderName ' ) 및 in:body() 의 구문이 약간 다릅니다.

32.8.3. CryostatBuilder에서 변수 평가

Cryostat Builder 클래스를 사용하여 평가되는 표현식에서 변수를 사용할 수도 있습니다. 이 경우 평가할 교환 개체가 없기 때문에 $in:body 또는 $in:HeaderName 과 같은 변수를 사용할 수 없습니다. 그러나 변수 (이름,) fluent 빌더 방법을 사용하여 인라인으로 정의된 변수 를 사용할 수 있습니다.

예를 들어 다음 CryostatBuilder 구성은 $test 변수를 평가하며, 이 변수는ournon : 값을 갖도록 정의됩니다.

String var = XPathBuilder.xpath("$test")
               .variable("test", "London")
               .evaluate(getContext(), "<name>foo</name>");

이 방식으로 정의된 변수는 글로벌 네임스페이스에 자동으로 입력됩니다(예: 변수 $test 에서는 접두사를 사용하지 않음).

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.