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

【导语】
很多小伙伴会问,苍穹低代码开发平台中预置了大量了控件,但面对特殊或者个性化需求时,业务开发人员只能通过修改配置文件、增加插件的方式,实现新增或扩展控件。这样会带来很多问题:
代码运行在本地出现问题时,不利于排查
手工修改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位或者奔走相告,模型扩展可视化工具上线!
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



