后台脚本是一款强大的动态脚本处理引擎,核心基于高性能的 AviatorScript 表达式求值引擎。该功能允许您(用户)通过编写简单的脚本,灵活、自定义地处理系统中的数据,并实时返回计算结果。
简单来说,您可以将业务逻辑以脚本的形式“告诉”系统,系统会忠实地执行这些逻辑,从而实现无需修改核心代码即可满足多样化、易变的需求。
核心价值
- 灵活性 业务规则不再硬编码,可以随时根据需求变化,通过修改脚本快速响应
- 可配置性 将复杂的业务逻辑外置为可配置的脚本,降低了系统的耦合度
- 用户赋能 高级用户可以直接参与业务逻辑的定制,减少对开发人员的依赖,提升业务迭代效率
- 高性能与安全 底层
AviatorScript引擎保障了脚本的执行效率接近原生 Java 代码,同时其沙箱机制确保了脚本执行环境的安全性,无法进行危险操作
工作原理
- 编写脚本: 在系统中编写
AviatorScript脚本 - 传递字段/函数: 在执行时,系统会将您配置的“字段”替换为当前业务数据的真实值,并注入到脚本执行环境中
- 计算并返回: 脚本执行完成后,系统会返回计算结果,用于后续的业务流程。如数据校验、结果判断、值计算等。
功能特性
1. 内置增强函数
我们在标准的 AviatorScript 语法之上,额外封装了一系列贴合业务场景的实用函数,例如:
caller()当前系统使用者的iddate_add([field], [i], [unit])时间加上...field时间字段名,例如orderTime,createdTimei时间间隔数unit时间单位,例如s,m,h,d,M,Y,分别对应秒,分钟,小时,天,月,年
date_diff([startDate], [endDate], [unit])两个时间之间的间隔startDate开始时间endDate结束时间unit时间单位,例如s,m,h,d,M,Y,分别对应秒,分钟,小时,天,月,年
queryById([id], [fields])根据id来查询数据id查询的记录idfields查询的字段列表
query([sql], [params])手动查询数据sqlsql/预编译语句params参数列表
2. 字段变量注入
当脚本执行环境中包含实体记录时,只需在脚本中使用实体字段名(例如 userAge, orderAmount, productCategory),系统会在执行前自动将它们替换为实际的数据值。
3. 完整的 AviatorScript 语法支持
- 基本运算:
+,-,*,/,%…… - 逻辑判断:
>,<,==,!=…… - 多种数据结构:
Map,List,Set……
更多语法请查看 AviatorScript 官方文档
示例
根据用户的订单金额和用户等级,计算最终应支付的金额(享受不同的折扣) 确认字段 根据业务,我们确定脚本需要两个字段:
amount订单金额userLevel用户等级 编写脚本
javascript
// 使用三元运算符进行条件判断
let discount = userLevel == "VIP" ? 0.8 : (userLevel == "Regular" ? 0.9 : 1.0);
// 计算折后金额
let finalAmount = amount * discount;
// 确保金额不会为负数
finalAmount > 0 ? finalAmount : 0;配置与执行 在系统中,您可以在实体的事件中添加一个字段赋值事件。设置执行规则的赋值类型为脚本结果,并在脚本值域中填入脚本内容。即可实现在数据保存时,系统会自动计算并返回最终金额。 
在系统所有可以配置脚本的地方,都提供了脚本执行功能,如:字段赋值事件、批量编辑、创建记录等。
总结
后台脚本处理功能是系统可扩展性的核心体现。它将编程能力交到了您的手中,让系统能够优雅地适应未来不可预知的需求变化。我们鼓励您在理解基本语法后,积极探索这一功能的潜力,以构建更智能、更灵活的业务流程
