表达式函数自定义

变更记录
| 产品版本 | 更新内容 | 更新日期 |
| V6.0.1 | 初始版本 | 2023年10月09日 |
1 简介
1.1 功能介绍
表达式中的函数使我们无需通过代码,就能实现简单的业务逻辑编写,平台已经预置大量通用函数与业务相关的函数,但无法覆盖所有应用场景,本功能提供自定义函数功能,帮助客户沉淀在特定领域可复用的函数。
1.2 应用场景
用户可在苍穹里自定义函数,函数可通用在界面规则、业务规则、校验规则、转换规则中。
1.3 系统路径

2 主要操作
2.1 新建自定义函数
前提条件
有相关授权
操作步骤
步骤1: 进入菜单,点击新增按钮

步骤2:维护相关字段,点击保存。

界面字段说明:
用户在函数树上,双击函数时,会把函数的【默认表达式】,插入到计算公式中。 因此,函数的默认表达式需要填写函数的完整表达式内容,包括函数名、括号、参数。 参考格式:函数名称(参数1, 参数2,...) 例如:if(condition, true_val, false_val)
定义函数返回值类型,如返回值:Object
函数的完整执行类名,函数执行类,必须实现BOSUDFunction接口,后续章节说明如何编写函数执行类。
选择函数的参数配置界面,此界面一般可由动态表单开发获取。如不需要配置参数,可空。
如:

苍穹有多种场景支持表达式和函数,不同场景运行上下文不同,函数不能通用。 如果自定义的函数运算只依赖于传入的参数,可选择函数适用范围为“通用函数”,例如四设五入函数Round(d, i),只对传入参数做运算,是通用函数; 如果函数运算需主动到上下文中取单据信息,请选择适用范围为"单据函数"。例如是否下推函数IsPush(),没传入参数,需运行时反向到上下文中取当前单据信息,只能在单据上运行,是单据函数。
函数使用说明会显示在表达式配置界面,指导用户正确使用函数。请填写函数的用途及各参数的含义,参考格式: 1. 函数描述:xxx; 2. 函数格式:xxx; 3. 函数参数:xxx; 4. 示例:xxx;
如:

函数在函数配置单据中,左树的显示排序位置。
已禁用的函数不会出现在函数树中,但已经用到此函数的表达式还能够正常运行。
9)已废弃
已废弃的函数不会出现在函数树中,但已经用到此函数的表达式还能够正常运行。如有预置的函数需要禁止使用,请维护升级脚本更新此字段值为1。不要删除已发布的函数,会导致已配置的表达式运行中断。
10)系统预置
系统预置的函数不允许被删除,出厂预置的函数请在预插SQL脚本中手工调整此字段值为1。
2.2 执行类编写与参数界面新建
示例:界面bos_func_getsysparam,插件kd.bos.designer.func.GetSysParamPlugIn
3)举例说明
以获取月份函数为例:
3.1)参数配置界面:bos_func_getmonth

3.2) 参数配置界面的插件:GetMonthPlugin
package kd.bos.designer.func;
import kd.bos.dataentity.resource.ResManager;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.form.func.AbstractFuncParamPlugIn;
/**
* 获取时间的月份
* @author rd_sort_oyang
*/
public class GetMonthPlugin extends AbstractFuncParamPlugIn {
private static final String KEY_DATETIME = "datetime";
@Override
public Boolean checkSetting(StringBuilder msgBuilder) {
String dateTimeString = (String)this.getModel().getValue(KEY_DATETIME);
if (StringUtils.isBlank(dateTimeString)){
msgBuilder.append(ResManager.loadKDString("请填写参数项。", "GetMonthPlugin_0", "bos-designer-plugin"));
return false;
}
return true;
}
/**
* 输出函数配置
*/
@Override
public String getSetting() {
String dateTime表达式函数自定义
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



