跳到主要内容

表达式上下文

这页收录的是 ${...} 表达式运行时可直接使用的上下文对象和工具。

什么时候看这页

  • 你在字段默认值、规则表达式或模板表达式里写 ${...}
  • 你想确认表达式里能直接取当前用户、组织或编码生成器
  • 你需要区分“表达式上下文”和“脚本上下文”的边界

如果你写的是完整脚本,而不是单个表达式,请优先看 脚本上下文

常见入口

  • 当前用户与认证信息:看 AuthenticationHolder
  • 当前组织信息:看 OrganizationHolder
  • 日期与类型转换:看 DatesConverter
  • 编码生成:看 codeGen

AuthenticationHolder

请参照 脚本上下文 中的 AuthenticationHolder 章节。

OrganizationHolder

请参照 脚本上下文 中的 OrganizationHolder 章节。

Dates

日期相关工具方法,请参考 Dates 工具类

Converter

类型转换相关工具方法,请参照 Converter 工具类

codeGen

方法返回值类型说明
get(String codeTemplate)String?获取下一个编码值
get(String codeTemplate, Map context)String?获取下一个编码值
peek(String codeTemplate)String?预览下一个编码值
peek(String codeTemplate, Map context)String?预览下一个编码值

get(String codeTemplate)

获取下一个编码值,并递增序列号。

参数说明

参数名类型说明
codeTemplateString编码模板

例子: PREFIX-{yyyyMMdd}-<0001> 会输出 PREFIX-20240416-0001

编码模板说明:

  • {yyyyMMdd} 表示年月日(Java 中 DateTimeFormatter 的格式化字符串);
  • 支持嵌入SpEL表达式,表达式以${}包裹,当传入上下文的时候,在表达式中可以引用上下文中的字段;
  • <0001>; 表示4位序列号,以1开始,默认步长为1;
  • 若要指定步长,使用 <0001,2> 表示以1开始,步长为2;
  • 序列号默认以模板中其他部件为序列器名进行递增生成;
  • 支持指定序列器名 <序列器名:0001>
  • 支持通过表达式获取序列器名:<${表达式}:0001>

get(String codeTemplate, Map context)

获取下一个编码值,并递增序列号,同时传入表达式上下文。

参数说明

参数名类型说明
codeTemplateString编码模板
contextMap表达式上下文

当在字段的默认值中使用编码生成器时,当前记录可以通过 $record 变量访问,例如:

codeGen.get('PREFIX-{yyyyMMdd}-<0001>', $record)

peek(String codeTemplate)

预览下一个编码值,不递增序列号。

peek(String codeTemplate, Map context)

预览下一个编码值,不递增序列号,同时传入表达式上下文。

下一步看哪里