如何获取实体扩展属性的值
{一}内在关系
首先要知道BOS中实现的一些规则,主要说明以下几个东东的内在关系
BOSUuid ---> BOSType---> Entity--->Table
根据BOSUuid可以获取BOSType,根据BOSType就可以获取一个唯一的实体,通过实体就可以知道对应的元数据表是哪个
其实Entity这个东东就是一个配置文件,有些东西和Hibernate的hmp配置文件的作用基本一样
其次是BOS的主要功能,元数据解析,建模工具、界面设计工具这些地方大量使用了元数据解析,
下面就说重点了,如何解析元数据,不需要自己写DOM什么的,用现成的啊。
com.kingdee.bos.metadata.MetaDataLoaderFactory--元数据装载工厂类
com.kingdee.bos.metadata.util.MetaDataLoader--根据MetaDataLoaderFactory封装的工具类
com.kingdee.bos.metadata.MetaDataUtils--看看这个就知道entity_pkmapping 、facade_pkmapping文件怎么使用了
{二}代码示例:
/**
* 获取OrgType类型的扩展属性值
* @param ctx
* @param bosType
* @param exPropName
* @return
*/
public static OrgType getEntityExPropOrgTypeValue(Context ctx,BOSObjectType bosType,String exPropName){
return OrgType.getEnum(getEntityExPropValue(ctx,bosType,exPropName));
}
/**
* 获取Boolean类型的扩展属性值
* @param ctx
* @param bosType
* @param exPropName
* @return
*/
public static boolean getEntityExPropBooleanValue(Context ctx,BOSObjectType bosType,String exPropName){
return Boolean.parseBoolean(getEntityExPropValue(ctx,bosType,exPropName));
}
/**
* 获取实体扩展属性值
* @param ctx
* @param bosType
* @param exPropName
* @return
*/
public static String getEntityExPropValue(Context ctx,BOSObjectType bosType,String exPropName){
EntityObjectInfo entity = MetaDataLoader.getEntity(ctx, bosType);
return entity.getExtendedProperty(exPropName);
}