# SDK接口
SDK全称为Software Development Kit,软件开发工具包,SDK接口,则是这些资源中的API接口,可以让开发者与底层的软件系统进行交互,实现各种自定义的功能。
# 适用范围
本文档适用于集成主数据管理平台的三方应用系统(供开发者参考),文档的适用产品版本为:7.3.0
。
# 编写目的
本文档主要介绍sdk的调用方式,以及覆盖编码配置、数据模型及主题、数据字典及主题的查询,数据及国际化的操作等功能的api接口,为使用主数据管理平台服务进行后续开发提供便利。
# 适用读者
本文档的适用读者范围主要是在EOS平台使用主数据管理平台服务的设计和开发人员。
# 使用SDK
# 引入依赖
- 在独立部署项目中引入以下依赖
<dependency>
<groupId>com.primeton.mdm</groupId>
<artifactId>mdm-starter</artifactId>
<version>7.3.0</version>
</dependency>
- 在微应用项目中引入以下依赖
<dependency>
<groupId>com.primeton.mdm</groupId>
<artifactId>mdm-sdk</artifactId>
<version>7.3.0</version>
</dependency>
# 添加配置文件application-mdm.properties
- 独立应用配置
eos.springmvc.eos-serialize.exclude-packages=com.primeton.mdm
spring.jpa.open-in-view=false
spring.jpa.properties.javax.persistence.validation.mode=none
spring.jpa.hibernate.ddl-auto=none
spring.jpa.show-sql=false
## Database Dialect
## MySQL
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
## Oracle
# spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
## SQLServer
# spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
## Dameng
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.DmDialect
### GaussDB
#spring.jpa.database=postgresql
#spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQL9Dialect
#spring.jpa.properties.hibernate.temp.use_jdbc_metadata_defaults = false
# unit: millis
mdm.schedule.fixed-delay.mdm-inst-heart-beat=30000
# default : statistic every hour
mdm.report.statistic.interval=0 0 * * * ?
# [file, db]
mdm.data-file.storage-type=file
mdm.data-file.storage-location=./data/data-files
# data model cache
#mdm.data-model-cache.enabled=true
# if set true, and request with a header 'X-MDM-UNIFIED-RESPONSE' = true, mdm will return unified response
mdm.support-unified-response=false
#data record log
mdm.data.record.log.enabled=true
mdm.data.record.log.keep.days=15
# data-push
mdm.push.enabled=true
# if MDM singleton instance lock disabled, else enabled
mdm.push.lock-enabled=true
mdm.push.thread-pool.corePoolSize=10
mdm.push.thread-pool.maxPoolSize=100
mdm.push.thread-pool.queueCapacity=10000
mdm.push.scan.interval-seconds=60
mdm.push.data-page-size=10
mdm.push.data-step-minutes=30
mdm.push.http.validate-response-body.enabled=true
mdm.push.http.validate-response-body.code-attr=code
mdm.push.http.validate-response-body.msg-attr=message
mdm.push.http.validate-response-body.ok-code=200
# t1, t1 + step, t1 + 2*step, ..., t1 + n*step
# t1 + n*step + mistake < now && lastModifiedAt BETWEEN (t1 + (n-1)*step) AND (t1 + n*step - 1s.)
mdm.push.time-mistake-seconds=30
mdm.push.in-time.event-queue-size=100000
# regular cleanup sequenceDate code maxValue
# default true
mdm.block-sequence-code.clear=true
mdm.block-sequence-code.clear.interval=0 0 2 * * ?
mdm.op-log.clean.keep-days=30
#mill s
mdm.afc.copy.scheduled.time=1000
mdm.batch.update.insert.size=1000
#email
spring.mail.host=smtp.126.com
spring.mail.username=youremail@126.com
spring.mail.password=RNGFEHNEKHJHVKKB
spring.mail.protocol=smtp
spring.mail.default-encoding=UTF-8
- 微应用项目配置:
mdm.application.name=localhost:28090
mdm.application.afc-token=fb9d872b8a5545d1b38bbe21c8e0175d
# 使用示例
@Autowired
IMDMClient mdmClient;
public PageResultList<MDMDataFieldBlockRuleDTO> findBlockRule() {
IBlockRuleAPI blockRuleAPI = mdmClient.getBlockRuleAPI();
return blockRuleAPI.findBlockRule("test", "name", 0, 10);
}
# SDK Apis
# 数据模型API:IDataModelAPI
# 通过id查找模型
- API:
MDMDataModelDTO findById(String id, Integer version, Boolean includeRelatedModel);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
id | String | 模型id,必填 |
version | Integer | 模型版本 |
includeRelatedModel | Boolean | 是否携带关联模型 |
返回值 | MDMDataModelDTO | 数据模型 |
# 通过编码查找模型
- API:
MDMDataModelDTO findByCode(String code, Integer version, Boolean includeRelatedModel);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
code | String | 模型编码,必填 |
version | Integer | 模型版本 |
includeRelatedModel | Boolean | 是否携带关联模型 |
返回值 | MDMDataModelDTO | 数据模型 |
# 查找主题的模型列表
- API:
PageResultList<MDMDataModelDTO> findByTopicId(String topicId, String matchWord, int pageIndex, int pageSize);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
topicId | String | 主题id |
matchWord | String | 模糊查询 |
pageIndex | int | 页码,必填 |
pageSize | int | 每页大小,必填 |
返回值 | PageResultList | 分页模型列表 |
# 查找机构的模型列表
- API:
PageResultList<MDMDataModelDTO> findByOrgId(String orgId, int pageIndex, int pageSize);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
orgId | String | 主题id,必填 |
pageIndex | int | 页码,必填 |
pageSize | int | 每页大小,必填 |
返回值 | PageResultList | 分页模型列表 |
# 查询模型历史版本
- API:
List<MDMDataModelVersionDTO> findVersions(String dataModelId);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelId | String | 模型编码,必填 |
返回值 | List | 分页数据模型版本 |
# 查询扩展信息
- API:
List<MDMExtendedInfoDTO> findExtendedInfo(String modelId);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
modelId | String | 模型id,必填 |
返回值 | List | 扩展信息 |
# 获取数据模型显示权限
- API:
MDMDataPermissionDTO findDataPermission(String dataModelCode);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 数据模型编码 |
返回值 | MDMDataPermissionDTO | 数据权限 |
# 获取全部模型
- API:
List<MDMModelAndTopicDTO> queryDataModels();
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
返回值 | List | 模型树 |
# 通过模型编码获取模型
- API:
List<MDMModelDTO> queryDataModelsByCode(String dataModelCode, boolean includeProperty);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码:支持模糊匹配 |
includeProperty | boolean | 是否包含属性 |
返回值 | PageResultList | 模型DTO |
# 左树右表模式下,左侧树的配置
- API:
List<MDMModelTreeDTO> queryWithTree(String dataModelCode, String pid, MDMQueryParam queryParam);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型code,必填 |
pid | boolean | 为空时查询根列表,否则查询其子列表 |
返回值 | PageResultList | 编码规则配置 |
# 模型数据API:IDataOpsAPI
# 按条件查询码段配置
- API:
PageResultList<Map<String, Object>> find(String dataModelCode, boolean withSysColumn, MDMQueryParam param, int pageIndex, int pageSize, Map<String, String> args);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
withSysColumn | boolean | 是否查询系统字段 |
param | MDMQueryParam | 查询条件,必填 |
pageIndex | int | 页码 |
pageSize | int | 每页大小 |
args | Map<String, String> | 额外查询条件 |
返回值 | PageResultList | 数据列表 |
# 对比数据
- API:
Map<String, Object> diff(String dataModelCode, String uid, int v1, int v2);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
uid | String | 数据uid |
v1 | int | 版本1 |
v2 | int | 版本2 |
返回值 | Map | 对比结果 |
# 校验数据: 满足校验规则,满足业务主键合法
- API:
List<String> validate(String dataModelCode, Map<String, Object> data);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
data | Map | 数据,必填 |
返回值 | List | 校验是否通过 |
# 按主键查询数据
- API:
Map<String, Object> findById(String dataModelCode, String id, boolean isParseRefReferenceField);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码 |
id | String | 数据id,必填 |
isParseRefReferenceField | boolean | 是否存在引用字段 |
返回值 | Map | 数据 |
# 按主键查询数据
- API:
List<Map<String, Object>> findByIds(String dataModelCode, String[] ids, boolean isParseRefReferenceField);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码 |
ids | String[] | 数据id,必填 |
isParseRefReferenceField | boolean | 是否存在引用字段 |
返回值 | Map | 数据 |
# 按UID查询数据
- API:
List<Map<String, Object>> findByDataId(String dataModelCode, String uid, boolean isParseRefReferenceField);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
uid | String | 数据unique id,必填 |
isParseRefReferenceField | boolean | 是否存在引用字段 |
返回值 | List | 数据的全部版本 |
# 插入数据
- API:
String insert(String dataModelCode, Map<String, Object> data, boolean mustCheck);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
data | Map | 数据 |
mustCheck | boolean | 是否数据遮罩 |
返回值 | String | 数据id |
# 插入数据并生效
- API:
String insertAndRelease(String dataModelCode, Map<String, Object> data);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
data | Map | 数据 |
返回值 | String | 数据id |
# 批量插入数据
- API:
List<String> batchInsert(String dataModelCode, List<Map<String, Object>> data, boolean autoRelease);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
data | List | 数据 |
autoRelease | boolean | 是否自动生效 |
返回值 | List | 数据id列表 |
# 更新数据
- API:
void update(String dataModelCode, Map<String, Object> data, boolean isPrimaryKey, boolean autoRelease, boolean isAllRefData);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
data | Map | 数据,必填 |
isPrimaryKey | boolean | 是否根据主键更新 |
autoRelease | boolean | 是否自动生效 |
isAllRefData | boolean | 是否存在引用字段 |
返回值 | 无 | 无 |
# 更新数据并生效
- API:
void updateAndRelease(String dataModelCode, Map<String, Object> data, boolean isAllRefData);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
data | Map | 数据,必填 |
isAllRefData | boolean | 是否存在引用字段 |
返回值 | 无 | 无 |
# 批量更新数据及是否生效
- API:
void batchUpdate(String dataModelCode, List<Map<String, Object>> dataList, boolean isAllRefData, boolean autoRelease);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
dataList | List | 数据列表,必填 |
autoRelease | boolean | 是否自动更新 |
isAllRefData | boolean | 是否存在引用字段 |
返回值 | 无 | 无 |
# 复制数据
- API:
String copy(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | String | 新数据id |
# 删除数据
- API:
void delete(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | 无 | 无 |
# 批量删除
- API:
void batchDelete(String dataModelCode, List<String> ids);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
ids | List | 数据id列表,必填 |
返回值 | 无 | 无 |
# 修订数据
- API:
String revise(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | String | 修订版本数据id |
# 批量修订数据
- API:
List<String> batchRevise(String dataModelCode, List<String> ids);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
ids | List | 数据id列表,必填 |
返回值 | List | 修订版本数据id列表 |
# 生效数据
- API:
MDMResult release(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | MDMResult |
# 新增后立即发起数据生效审批流程
- API:
MDMResult newRelease(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | MDMResult |
# 修订保存数据后立即发起数据生效审批流程
- API:
MDMResult reviseRelease(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | MDMResult |
# 批量生效数据
- API:
void batchRelease(String dataModelCode, List<String> ids);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
ids | List | 数据id列表,必填 |
返回值 | 无 | 无 |
# 批准生效数据
- API:
void approve(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | 无 | 无 |
# 批量批准生效数据
- API:
void batchApprove(String dataModelCode, List<String> ids);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
ids | List | 数据id列表,必填 |
返回值 | 无 | 无 |
# 拒绝生效数据
- API:
void reject(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | 无 | 无 |
# 批量拒绝生效数据
- API:
void batchReject(String dataModelCode, List<String> ids);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
ids | List | 数据id列表,必填 |
返回值 | 无 | 无 |
# 数据历史版本回退(参数版本可以使用数据ID或数字版本号)
- API:
void rollback(String dataModelCode, String id, String version);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
version | String | 版本,必填 |
返回值 | 无 | 无 |
# 启用数据
- API:
MDMResult enable(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | MDMResult |
# 批量启用数据
- API:
MDMResult batchEnable(String dataModelCode, List<String> ids);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
ids | List | 数据id列表,必填 |
返回值 | MDMResult |
# 停用数据
- API:
MDMResult disable(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | MDMResult |
# 批量停用数据
- API:
MDMResult batchDisable(String dataModelCode, List<String> ids);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
ids | List | 数据id列表,必填 |
返回值 | MDMResult |
# 作废数据
- API:
MDMResult deprecate(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | MDMResult |
# 批量作废数据
- API:
MDMResult batchDeprecate(String dataModelCode, List<String> ids);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
ids | List | 数据id列表,必填 |
返回值 | MDMResult |
# 推送数据
- API:
void push(String dataModelCode, List<String> ids, List<String> subscriberId);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelCode | String | 模型编码,必填 |
ids | List | 数据unique id列表,必填 |
subscriberId | List | 订阅者id,必填 |
返回值 | 无 | 无 |
# 树-数据查看(普通模型)
- API:
List<Map<String, Object>> findDataTree(String dataModelId, String id, int pageIndex, int pageSize);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelId | String | 模型编码,必填 |
id | String | 数据id,必填 |
pageIndex | int | 页码 |
pageSize | int | 每页大小 |
返回值 | List | 数据树 |
# 流程审批通过
- API:
void approveProcess(ProcessContext processContext);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
processContext | ProcessContext | 流程 |
返回值 | 无 | 无 |
# 审批流程驳回
- API:
void rejectProcess(ProcessContext processContext);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
processContext | ProcessContext | 流程 |
返回值 | 无 | 无 |
# 数据元信息 -- 仅系统字段
- API:
Map<String, Object> getDataSysInfo(String dataModelCode, String id);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
dataModelId | String | 模型编码,必填 |
id | String | 数据id,必填 |
返回值 | Map |
# 模型主题API:IDataTopicAPI
# 查询单个主题
- API:
MDMDataTopicDTO find(String id, String code);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
id | String | 主题id |
code | String | 主题编码 |
返回值 | MDMDataTopicDTO | 主题信息 |
# 查询列表,参数皆为空则返回全部主题
- API:
List<MDMDataTopicDTO> findByParentId(String parentId, String parentCode);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
parentId | String | 上级id |
parentCode | String | 上级编码 |
返回值 | List | 主题列表 |
# 查询扩展信息
- API:
List<MDMExtendedInfoDTO> findExtendedInfo(String topicId);
- 参数说明:
参数 | 类型 | 说明 |
---|---|---|
topicId | String | 主题id,必填 |
返回值 | List | 扩展信息 |
# 字典数据API:IDictDataAPI
# 查询字典数据
API:
PageResultList<Map<String, Object>> find(String dictModelId, String dictModelCode, String columnCode, String matchWord,int pageIndex, int pageSize);
参数说明:
参数 类型 说明 dictModelId String 字典模型id dictModelCode String 字典模型编码 columnCode String 字段编码值 matchWord String 字段值 pageIndex int 页码 pageSize int 每页大小 返回值 PageResultList 分页字典数据列表
# 按主键查询
API:
List<Map<String, Object>> findById(String dictModelId, String dictModelCode, String id);
参数说明:
参数 类型 说明 dictModelId String 字典模型id dictModelCode String 字典模型编码 id String 字典数据id 返回值 List 字典数据列表
# 按父级数据查询
API:
PageResultList<Map<String, Object>> findByParent(String dictModelId, String dictModelCode, String parentValue, int pageIndex, int pageSize);
参数说明:
参数 类型 说明 dictModelId String 字典模型id dictModelCode String 字典模型编码 parentValue String 父级数据 pageIndex int 页码 pageSize int 每页大小 返回值 PageResultList 字典数据列表
# 保存字典模型数据
API:
void save(String dictModelId, String dictModelCode, List<Map<String, Object>> dictDataList);
参数说明:
参数 类型 说明 dictModelId String 字典模型id dictModelCode String 字典模型编码 dictDataList List 字典数据列表 返回值 无 无
# 删除字典模型数据
API:
void batchDelete(String dictModelId, String dictModelCode, String[] dataCodes);
参数说明:
参数 类型 说明 dictModelId String 字典模型id dictModelCode String 字典模型编码 dataCodes String[] 数据Code列表 返回值 无 无
# 数据推送,字典ID和编码必须传一个,dictPushId可以传多个逗号隔开
API:
void push(String dictModelId, String dictModelCode, List<String> dictPushes, List<Object> dataIds);
参数说明:
参数 类型 说明 dictModelId String 字典模型id dictModelCode String 字典模型编码 dictPushes List 字典推送目标 dataIds List 推送的数据id列表 返回值 无 无
# 字典模型API:IDictModelAPI
# 根据id查找单个模型包含字段信息,字段配置信息
API:
DMDictModelDTO findById(String id, Integer version);
参数说明:
参数 类型 说明 id String 字典模型id,必填 version Integer 字典版本 返回值 MDMDictModelDTO 字典模型信息
# 根据编码查找单个模型包含字段信息,字段配置信息
API:
MDMDictModelDTO findByCode(String code, Integer version);
参数说明:
参数 类型 说明 code String 字典模型编码 version Integer 字典版本 返回值 MDMDictModelDTO 字典模型信息
# 查找模型列表
API:
PageResultList<MDMDictModelDTO> find(String topicId, String matchWord, int pageIndex, int pageSize);
参数说明:
参数 类型 说明 topicId String 主题id matchWord String 模糊查询 pageIndex int 页码 pageSize int 每页大小 返回值 PageResultList 主题下字典列表分页
# 查询某个字典模型版本的字段信息
API:
List<MDMDictFieldDTO> findByVersion(String modelId, String modelCode, int version);
参数说明:
参数 类型 说明 modelId String 字典模型id modelCode String 字典模型编码 version int 版本,必填 返回值 List 某个字典模型版本的字段信息
# 字典主题API:IDictTopicAPI
# 查询单个主题
API:
MDMDictTopicDTO find(String id, String code);
参数说明:
参数 类型 说明 id String 主题id code String 主题编码 返回值 MDMDictTopicDTO 主题信息
# 查询列表,参数皆为空则返回全部主题
API:
List<MDMDictTopicDTO> findByParentId(String parentId, String parentCode);
参数说明:
参数 类型 说明 parentId String 上级id parentCode String 上级编码 返回值 List 主题列表