电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

表达式函数自定义

来源:金蝶云社区作者:金蝶2024-09-231

表达式函数自定义

变更记录


产品版本
更新内容更新日期
V6.0.1
初始版本2023年10月09日


1 简介

1.1 功能介绍

表达式中的函数使我们无需通过代码,就能实现简单的业务逻辑编写,平台已经预置大量通用函数与业务相关的函数,但无法覆盖所有应用场景,本功能提供自定义函数功能,帮助客户沉淀在特定领域可复用的函数。



1.2 应用场景

用户可在苍穹里自定义函数,函数可通用在界面规则、业务规则、校验规则、转换规则中。


1.3 系统路径

【开发服务云】-【新版开发平台-【模型扩展-规则-函数定义

2 主要操作

2.1 新建自定义函数

前提条件

有相关授权

操作步骤

步骤1: 进入菜单,点击新增按钮

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


界面字段说明:

1)默认表达式:

用户在函数树上,双击函数时,会把函数的【默认表达式】,插入到计算公式中。 因此,函数的默认表达式需要填写函数的完整表达式内容,包括函数名、括号、参数。 参考格式:函数名称(参数1, 参数2,...)  例如:if(condition, true_val, false_val)

2返回值类型:

定义函数返回值类型,如返回值:Object

3函数运行类

函数的完整执行类名,函数执行类,必须实现BOSUDFunction接口,后续章节说明如何编写函数执行类。

4参数配置界面

选择函数的参数配置界面,此界面一般可由动态表单开发获取。如不需要配置参数,可空。

如:

5函数适用范围

苍穹有多种场景支持表达式和函数,不同场景运行上下文不同,函数不能通用。 如果自定义的函数运算只依赖于传入的参数,可选择函数适用范围为“通用函数”,例如四设五入函数Round(d, i),只对传入参数做运算,是通用函数; 如果函数运算需主动到上下文中取单据信息,请选择适用范围为"单据函数"。例如是否下推函数IsPush(),没传入参数,需运行时反向到上下文中取当前单据信息,只能在单据上运行,是单据函数。

6函数使用说明

函数使用说明会显示在表达式配置界面,指导用户正确使用函数。请填写函数的用途及各参数的含义,参考格式: 1. 函数描述:xxx; 2. 函数格式:xxx; 3. 函数参数:xxx; 4. 示例:xxx;

如:

7显示顺序

函数在函数配置单据中,左树的显示排序位置。

8使用状态

已禁用的函数不会出现在函数树中,但已经用到此函数的表达式还能够正常运行。

9已废弃

已废弃的函数不会出现在函数树中,但已经用到此函数的表达式还能够正常运行。如有预置的函数需要禁止使用,请维护升级脚本更新此字段值为1。不要删除已发布的函数,会导致已配置的表达式运行中断。

10系统预置

系统预置的函数不允许被删除,出厂预置的函数请在预插SQL脚本中手工调整此字段值为1。



2.2 执行类编写与参数界面新建

1实现函数执行类函数的执行类,必须实现接口 BOSUDFunction,接口方法介绍如下:
getName : 输出函数名,必须与资源文件中的定义一致
getInstance:系统在执行函数前,调用此方法,创建函数执行类,传入单据转换上下文对象;
call:执行函数,传入函数的参数值
2实现函数配置界面如果函数的执行参数比较多,用户配置比较复杂,可以定义配置界面。如果函数非常简单,不需要执行参数,可以不用实现参数配置界面,略过本节。
基于动态表单界面 bos_functionparameter,设计自定义函数的参数配置界面
派生AbstractFuncParamPlugIn,实现参数配置界面插件
把函数参数配置界面FormId,填写到函数资源文件中,属性名为SettingFormId;

示例:界面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

表达式函数自定义

变更记录产品版本更新内容更新日期V6.0.1 初始版本2023年10月09日1 简介1.1 功能介绍表达式中的函数使我们无需通过代码,就能实现简单的...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信