搜索

30.5. predicates

download PDF

概述

您可以通过测试表达式来构建 predicates。例如: predicate, simple ("${header.timeOfDay} == '14:30'"),测试传入消息中的 timeOfDay 标头是否等于 14:30

另外,每当将 resultType 指定为布尔值时,表达式都会作为一个 predicate 而不是表达式来评估。这允许将 predicate 语法用于这些表达式。

语法

您还可以使用简单 predicates 测试交换的不同部分(标题、消息正文等)。简单 predicates 有以下通用语法:

${LHSVariable} Op RHSValue

其中左侧的 LHSVariable 变量是 表 30.1 “简单语言的变量” 中显示的变量之一,以及右侧 RHSValue 的值之一:

  • 另一个变量 ${RHSVariable}.
  • 字符串 literald (用单引号括起)、'.
  • 数字常数,用单引号 ' 括起。
  • null 对象 null

简单的语言始终尝试将 RHS 值转换为 LHS 值的类型。

注意

尽管简单的语言将尝试转换 RHS,但根据 LHS 在进行比较前,可能需要进入相应的类型。

例子

例如,您可以执行简单的字符串比较和数字比较,如下所示:

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 operator 测试左侧的类型,如下所示:

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'")

组合

您还可以使用逻辑组合、finis 和 || 组合来 组合 predicates。

例如,以下是使用 & amp;& 组合(逻辑和)的表达式:

simple("${in.header.title} contains 'Camel' && ${in.header.type} == 'gold'")

以下是使用 || 组合的表达式(逻辑含 或 ):

simple("${in.header.title} contains 'Camel' || ${in.header.type} == 'gold'")
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.