Skip to content

布尔表达式

概念说明

布尔表达式用于条件判断,最终返回 truefalse,常用于 IF 条件控制、流程分支等场景。

基于 Java Spring Expression Language(SpEL),输入变量为 msg(当前消息对象),通过 msg.字段名 访问属性。

快速上手

js
msg.title == '系统告警'
msg.level >= 3 && msg.status != 'closed'
msg.title.contains('紧急')

语法参考

msg 对象访问方式

js
msg.title           // 字符串字段
msg.level           // 数字字段
msg.flag            // 布尔字段
msg.sender.name     // 嵌套属性
msg.sender?.name    // 安全嵌套访问(sender 可能为 null 时使用)
msg.tags[0]         // 数组下标访问

运算符

运算符说明示例
==等于msg.title == '123'
!=不等于msg.status != 'closed'
> / <大于 / 小于msg.level > 2
>= / <=大于等于 / 小于等于msg.score >= 60
&&and逻辑与msg.level > 1 && msg.flag == true
||or逻辑或msg.type == 'A' || msg.type == 'B'
!not逻辑非!msg.isRead
matches正则匹配msg.title matches '.*紧急.*'

字符串内置方法

方法说明示例
.contains(str)包含子串msg.title.contains('告警')
.startsWith(str)以...开头msg.code.startsWith('ERR')
.endsWith(str)以...结尾msg.code.endsWith('_SYS')
.isEmpty()是否为空字符串msg.content.isEmpty()
.length()字符串长度msg.title.length() > 10
.size()集合元素个数msg.tags.size() > 0

示例

js
// 字符串匹配
msg.title == '123'

// 数值范围
msg.level >= 3
msg.level >= 1 && msg.level <= 5

// 多条件 AND
msg.status == 'active' && msg.level > 1

// 多条件 OR
msg.type == 'warning' || msg.type == 'error'

// 取反
!msg.isRead

// 字符串包含
msg.title.contains('告警')

// 正则匹配
msg.title matches '.*紧急.*'

// 嵌套属性(使用安全导航)
msg.sender?.name == '系统' && msg.level >= 2

// 复合条件
(msg.level >= 1 && msg.level <= 5) && msg.status != 'closed'

注意事项

配置人员注意

  • 字段可能为 null 时,使用安全导航符 ?.(如 msg.sender?.name),否则表达式会报错并中断执行
  • 字符串比较使用单引号,如 msg.title == '告警'

开发者注意

SpEL 支持 and / or / not 文字运算符,与 && / || / ! 完全等价,可按团队习惯统一风格。