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

奔走相告,模型扩展可视化工具上线!

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

奔走相告,模型扩展可视化工具上线!

【导语】

    很多小伙伴会问,苍穹低代码开发平台中预置了大量了控件,但面对特殊或者个性化需求时,业务开发人员只能通过修改配置文件、增加插件的方式,实现新增或扩展控件。这样会带来很多问题:

    • 代码运行在本地出现问题时,不利于排查

    • 手工修改xml缺乏校验控制,出现过业务控件覆盖标准控件的问题

    • 需要重复注册插件,开发效率低

    • 缺少统一平台查看平台控件扩展情况,不能高度复用

    那么如何可以更高效、更便捷的新增控件呢?

    开发平台这次带来了,模型扩展可视化工具,接下来,小编为你详细介绍功能特性!


【适用版本】

    该功能适用版本为苍穹V5.0


【特性展示】

             

    模型扩展主要分为三大类,分别是元素、操作、规则,其中,

    元素:包含元素属性,预置10+元素属性,包含文本、复选框、复杂对象等。

    操作:包含操作,以及对校验操作数据合法性的校验器,与操作同步进行的操作服务。

    规则:包含界面规则、业务规则。

 

以元素为例,下面我们通过实际案例,来看如何新建一个身份证控件吧!

【功能详情】

  • 需求描述

添加一个身份证号字段,以便录入15位及18位身份证号时使用,自动校验身份证号长度合规性。


  • 实现方案:

    1. 在【模型扩展】-【元素】增加一个身份证号控件

    2. 实现身份证号的校验逻辑

    3. 在任意页面使用身份证控件

  优点:一次实现,多次复用 


  • 操作步骤:


    1、新增元数属性

    通过可视化模型扩展工具,对字段元素属性进行扩展增复选框类型属性,作为开启校验身份证字段的复选框

 

    2、新增元素

    通过可视化模型扩展工具,对元素进行扩展;

定义元素分为两种模式,新建元素、扩展元素,其中新建元素支持新建空白元素及复制系统预设元素:

1)新建空白元素:自定义元素属性

2)复制系统预设元素(推荐):复制预设元素全部属性,可对属性进行增删改操作。

3)扩展系统预设元素:扩展预设元素,可新增属性;不支持修改、删除预设属性及基本信息。

    使用【复制系统预设元素】模式进行扩展,选择文本元素,修改相应信息,添加校验身份证的属性(步骤1),填入实现逻辑代码所属包名。

 

    3、完成效果

    可以看到,身份证控件,及“身份证”属性都已配置完成。

 

    4、运行效果

    实际的运行效果,拖入的身份证控件界面,在界面上的“身份证号”字段,当录入值不合法时,会给出“身份证号不合法”的提示。

 

 

     5、控制插件

    其中涉及到数据的控制脚本,字段设计时类继承自Field<T>,运行时类继承FieldEdit

    5.1 字段设计时实现类

#auth 王洪雷

package 
kd.bos.newdevportal.domaindefine.sample.Field;
import kd.bos.dataentity.entity.SimplePropertyAttribute;
import kd.bos.entity.property.TextProp;
import kd.bos.form.field.FieldEdit;
import kd.bos.metadata.entity.commonfield.TextField;
/**
 * 字段设计时实现类
 * 【元素】 配置的 所属包名+编码
 * 命名规范 开发商标识_类名[Field]
 */
public class kdtest_IdCard extends TextField {

    private boolean idcardval;

    @SimplePropertyAttribute
    public boolean getIdcardval() {
        return idcardval;
    }

    public void setIdcardval(boolean idcardval) {
        this.idcardval = idcardval;
    }

    @Override
    protected FieldEdit createServerEditor() {
        kdtest_IdCardEdit edit = new kdtest_IdCardEdit();
        return edit;
    }

    public kdtest_IdCardProp createDynamicProperty() {
        kdtest_IdCardProp idCardProp = new kdtest_IdCardProp();
        idCardProp.setIdcardval(this.getIdcardval());
        return idCardProp;
    }

    @Override
    protected void setDynamicProperty(TextProp prop) {
        super.setDynamicProperty(prop);
        ((kdtest_IdCardProp) prop).setIdcardval(this.getIdcardval());
    }
  }

    5.2 字段属性类

package 
kd.bos.newdevportal.domaindefine.sample.Field;
import java.util.List;
import kd.bos.dataentity.entity.DataEntityTypeAttribute;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.property.TextProp;
import kd.bos.entity.validate.AbstractValidator;
import kd.bos.exception.KDBizException;
/**
 * 字段属性类
 * 命名规范 开发商标识_类名[Prop]
 */
@DataEntityTypeAttribute(name = "kd.bos.newdevportal.domaindefine.sample.Field.kdtest_IdCardProp") 
public class kdtest_IdCardProp extends TextProp {

    public boolean isIdcardval() {
        return idcardval;
    }

    public void setIdcardval(boolean idcardval) {
        this.idcardval = idcardval;
    }

    boolean idcardval;

    @Override
    public List<AbstractValidator> getValidators() {
        return super.getValidators();
    }

    @Override
    public String getClientType() {
        return super.getClientType();
    }

    @Override
    public void setFieldValue(IDataModel model, Object dataEntity, Object value) {
        super.setFieldValue(model, dataEntity, value);
         if (StringUtils.isNotBlank(value) && this.isIdcardval()) {
                    //假设身份证号是15位或者

奔走相告,模型扩展可视化工具上线!

【导语】 很多小伙伴会问,苍穹低代码开发平台中预置了大量了控件,但面对特殊或者个性化需求时,业务开发人员只能通过修改配置文件、增...
点击下载文档文档为doc格式

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

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