跳到主要内容

表达式上下文

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

什么时候看这页​

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

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

常见入口​

  • 当前用户与认证信息:看 AuthenticationHolder
  • 当前组织信息:看 OrganizationHolder
  • 日期与类型转换:看 Dates、Converter
  • 编码生成:看 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)​

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

下一步看哪里​