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

动态表单插件-数据模型

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

动态表单插件-数据模型

1 插件介绍

动态表单界面插件可以通过系统封装的表单数据模型,访问界面数据。动态表单插件数据模型包括:

  • 数据模型接口/实现类

  • 主实体模型

  • 数据包


2 插件接口和实现类

动态表单界面数据模型接口为IDataModel,提供了各种控制表单数据的方法:

package   kd.bos.entity.datamodel;
public interface IDataModel extends ISupportInitialize,   IEntryOperate, IDataProvider {


动态表单的数据模型实现类为FormDataModel,实现了接口IDataModel的方法: 

package   kd.bos.mvc.form;
public class FormDataModel extends AbstractFormDataModel{
package   kd.bos.entity.datamodel;
public abstract class AbstractFormDataModel implements IDataModel, IRefrencedataProvider   {

 

插件可以通过如下代码,获取到动态表单界面的数据模型实例:

IDataModel model = this.getModel();


3 功能方法及使用

动态表单数据模型接口IDataModel,定义了很多方法,下表列出插件部分方法:

方法

说明

getDataEntityType

获取运行时表单实体元数据对象,又称为主实体模型;

通过表单主实体模型,可以或者界面上包含了那些单据体、字段

getProperty

获取运行时字段元数据对象,又称为实体的属性对象

createNewData

根据表单主实体模型,创建表单新的数据包,字段填写好默认值

getDataEntity

获取表单数据包

getDataEntity(boolean includeEntry) 

获取页面的完整数据包(包含所有分录)

updateCache

提交当前表单数据包到缓存

getValue

获取字段值

setValue

设置字段值

setItemValueByNumber

根据基础资料的编码,设置基础资料字段值

setItemValueByID

根据基础资料的内码,设置基础资料字段值

getContextVariable

获取上下文变量

putContextVariable

添加上下文变量

removeContextVariable

删除上下文变量

addDataModelListener

订阅模型相关事件

addDataModelChangeListener

订阅模型改变事件

 

4 主实体模型

动态表单设计完毕,系统会根据表单字段结构,为表单创建一个运行时元数据对象,又称为表单主实体模型MainEntityType。


说明:

  • 主实体模型会被缓存,请勿在插件中直接修改主实体模型内容,以免串账;

  • 业务需求必须动态修改主实体模型时,只能修改复制品。


4.1 属性对象

表单上的单据体、字段,都会转为属性对象DynamicProperty,分为如下三类:

  • 简单值属性:SimpleProperty,对应普通字段;

  • 复杂值属性:ComplexProperty,对应基础资料字段,关联基础资料主实体RefEntityType,嵌套包含基础资料属性;

  • 集合值属性:CollectionProperty,对应单据体等分录,关联到分录子实体EntryType,嵌套包含分录属性。


4.2 从属关系

各属性对象之间,会按照表单设计,具有层级从属关系;

  • 复杂值、集合值属性对象,会关联子实体,继续包含下层属性对象(字段、子单据体等)。

 

4.3 常用方法

主实体模型MainEntityType部分常用方法如下:

方法

说明

getAllEntities

全部子实体

getAllFields

全部字段,不包括系统自动注册的属性对象,如主键

getMainOrg

主业务组织标识,可能为null

getAppId

业务应用Id

getPermissionControlType

功能权限控制配置

 

MainEntityType的超类EntityType提供的常用方法如下:

方法

说明

findProperty

查找属性,会遍历本实体以及子实体

 

EntityType的超类DynamicType提供的常用方法如下:

方法

说明

getName

实体的标识

getDisplayName

实体的标题

getDBRouteKey

分库标识

getPrimaryKey

主键

动态表单,与物理表格无关,没有主键

getProperties

本实体的属性对象集合,不包括子实体的属性

getAlias

物理表格名称

动态表单不与物理表格关联,此属性为空;

单据、基础资料的主实体,此属性存储单据表格名

isDbIgnore

是否关联物理表格

registerSimpleProperty

注册新的简单值属性,如文本、数值、日期等

registerComplexProperty

注册新的复杂值属性,如基础资料

registerCollectionProperty

注册新的集合值属性,如单据体

createInstance

基于本实体模型,创建空白的数据包(DynamicObject)


4.4  主实体模型示例

下例简单的演示了如何使用MainEntityType的方法(演示代码没有实际的业务意义,仅供参考):

package   kd.bos.plugin.sample.dynamicform.pcform.form.bizcase;
 
import   kd.bos.dataentity.entity.DynamicObject;
import   kd.bos.dataentity.entity.LocaleString;
import   kd.bos.dataentity.metadata.IDataEntityProperty;
import   kd.bos.entity.MainEntityType;
import   kd.bos.form.plugin.AbstractFormPlugin;
 
public class MainEntityTypeSample extends AbstractFormPlugin {
 
    private void useMainEntityType(){
        
         // 获取当前表单的主实体模型
         MainEntityType mainEntityType = this.getModel().getDataEntityType();
        
         // 基于表单主实体模型,创建空的数据包(多种方法)
         DynamicObject dataEntity1 = new DynamicObject(mainEntityType);
         DynamicObject dataEntity2 = (DynamicObject)mainEntityType.createInstance();
        
         // 获取主实体部分属性值
         String entityNumber = mainEntityType.getName();        // 实体标识
         LocaleString entityCaption = mainEntityType.getDisplayName();   // 标题,支持多语言
         String tableName = mainEntityType.getAlias();  // 物理表格
         boolean isDbIgnore = mainEntityType.isDbIgnore();  // 有没有关联物理表格
         String dbRouteKey = mainEntityType.getDBRouteKey();    //   分库标识
         String bizAppId = mainEntityType.getAppId();   // 业务应用标识
        
         // 获取单据头上的字段属性(多种方法)
         IDataEntityProperty billNoProp1 = mainEntityType.getProperties().get("billno");
         IDataEntityProperty billNoProp2 = mainEntityType.getProperty("billno");
         IDataEntityProperty billNOProp3 = mainEntityType.findProperty("billno");
        
         // 获取单据体上的字段属性(多种方法)
         IDataEntityProperty bdProp1 = mainEntityType.getAllEntities().get("entryentity").getProperty("basedatafield1");
         IDataE

动态表单插件-数据模型

1 插件介绍动态表单界面插件可以通过系统封装的表单数据模型,访问界面数据。动态表单插件数据模型包括:数据模型接口/实现类主实体模型数...
点击下载文档文档为doc格式

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

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