# 元数据服务帮助类

## 主实体查询

`kd.bos.servicehelper.MetadataServiceHelper` 

举例，获取`bos_user`运行时主实体模型：

```java
MainEntityType mainEntityType = MetadataServiceHelper.getDataEntityType("bos_user");
```



### API 概览 

| 方法                                                         | 说明                                         |
| ------------------------------------------------------------ | -------------------------------------------- |
| static MainEntityType getDataEntityType(String number)       | 根据业务对象编码加载业务对象运行时主实体模型 |
| static Map<String, Object> copyMobleFormMetadata(String tplId, String bizAppId, String bizUnitId,       String newNumber, LocaleString newName) | 复制移动表单模板元数据                       |



### API 详情

#### 根据业务对象编码加载业务对象运行时主实体模型

```java
static MainEntityType getDataEntityType(String number)
```

传入参数：

| 参数名称     | 参数   | 参数类型 | 是否必传 |
| ------------ | ------ | -------- | -------- |
| 业务对象编码 | number | String   | 是       |

返回数据：

**MainEntityType**，主实体模型



#### 复制移动表单模板元数据

```java
static Map<String, Object> copyMobleFormMetadata(String tplId, String bizAppId, String bizUnitId,String newNumber, LocaleString newName)
```

传入参数：

| 参数名称       | 参数      | 参数类型     | 是否必传 |
| -------------- | --------- | ------------ | -------- |
| 源模版的PKId   | tplId     | String       | 是       |
| 所属应用Id     | bizAppId  | String       | 是       |
| 所属业务单元Id | bizUnitId | String       | 是       |
| 新建表单编码   | newNumber | String       | 是       |
| 新建表单名称   | newName   | LocaleString | 是       |

返回数据：

**Map<String, Object>**，操作是否成功信息

```javascript
{
	"success":true，//操作是否成功 true为成功，false为失败
    "message":"",//操作失败原因
    "formId":"x1afsaq13/dsa",//表单ID
    "formName":LocaleString//表单名称
}
```





## 更多元数据查询服务
`kd.bos.entity.EntityMetadataCache`



实体元数据服务类,用于获取实体元数据的各种元素信息。静态帮助类，直接使用。

举例，通过实体元数据缓存获取`bos_user`表单的运行时元数据版本：

```java
String version = EntityMetadataCache.getRuntimeMetadataVersion("bos_user");
```



### API 概览 

| 方法                                                         | 说明                                               |
| ------------------------------------------------------------ | -------------------------------------------------- |
| static AppInfo getAppInfo(String appId)                      | 根据appId获取应用的信息                            |
| static String getAppNumberById(String appId)                 | 根据appId获取应用编码                              |
| static FilterCondition getBaseDataFieldFilterMeta(String formId, String key) | 根据表单和基础资料字段获取过滤后基础资料元数据信息 |
| static Map<String, List<Map<String, Object>>> getDataEntityNetCtrlOperate(String entityNumber) | 根据实体编码获取网络控制元数据                     |
| static List<Map<String, Object>> getDataEntityOperate(String entityNumber)<br/> static Map<String, Object> getDataEntityOperate(String entityNumber, String operKey) | 根据实体编码获取实体操作元数据                     |
| static Operations getDataEntityOperations(String entityNumber) | 根据实体编码获取对应的操作代码                     |
| static MainEntityType getDataEntityType(String number)<br/>static MainEntityType getDataEntityType(URL url)<br/>static MainEntityType getDataEntityTypeById(String entityId)<br/>static MainEntityType getDataEntityTypeNoCache(String number) | 获取主实体元数据                                   |
| static LinkSetElement getLinkSet(String entityNumber)        | 根据实体编码获取实体单据关联配置                   |
| static PermissionControlType getPermissionControlType(String entityNumber) | 根据实体编码获取权限控制元数据                     |
| static Set<String> getPermissionItems(String entityNumber)   | 根据实体编码获取权限项                             |
| static String getPluginScripts(String key)                   | 根据实体标识返回插件脚本                           |
| static Map<String, OrgRelationConfig> getPrincipalRelation(String entityNumber) | 根据实体编码获取主关系元数据                       |
| static IEntityMetaDataProvider getProvider()<br/>static IEntityMetaDataProvider getProvider() | 实体元数据缓存实现对象操作                         |
| static String getRuntimeMetadataVersion(String number)       | 根据元数据编码获取运行时元数据版本                 |
| static DynamicObjectType getSubDataEntityType(String entityNumber, Collection<String> properties) | 根据实体编码和属性列表构造实体                     |
| static TableDefine loadTableDefine(Long tableId)<br/>static TableDefine loadTableDefine(String entityNumber, String entityKey) | 获取单据实体表格定义                               |
| static void removeDataEntityTypeLocalCache(String number)    | 根据实体编码移除实体类型本地二级缓存               |