基础配置中心微服务开发引入引出功能使用指南
# 1 产品概述
## 1.1 产品介绍
基础配置中心微服务引入引出功能是专门给二次开发者提供基于微服务场景的引入引出的二开拓展能力。
## 1.2 业务场景
针对一些特殊的配置项,无法直接通过使用基础配置中心标准的EXCEL引入引出以及JSON引入引出,同时由于插件引入引出在分应用的情况下支持不友好等问题时,既可以使用微服务引入引出。
## 1.3 系统路径
【基础服务云】→【实施配置中心】→【基础配置中心列表】新增基础配置项
## 1.4 关键字段/按钮说明
**关键字段说明**
|字段名称|详细解释|
|-|-|
|业务云|微服务应用所在云|
|业务应用|微服务所在应用|
|服务名称|微服务任务名称,通常都是您注册在微服务工程类(ServiceFactory)的名称|
|分批数量|针对大数据量可进行分批处理,大数据量如果不进行分批,可能导致微服务请求超时,影响正常业务,可根据业务引入引出耗时来控制每次处理的数据量。如没有配置,默认1000条数据一批进行处理。|
# 2 主要操作
## 2.1 主要操作1
基于实际业务开发微服务接口。
**微服务开发规范:** 可参考[微服务开发及调用规范](https://vip.kingdee.com/knowledge/specialDetail/218022218066869248?category=249111205459980800&id=241157540979680000&productLineId=29)
### 2.1.1 实施配置中心微服务规范
微服务引出必须实现**exportPacket(Map<String, Object> map)**方法。
**map传入参数**
|参数名|解析|
|-|-|
|entity_number|实体标识|
|entity_name|实体名称|
|params|该参数携带的是微服务配置时配置的参数信息|
|listSelectedRowList|页面勾选数据,类型为平台的ListSelectedRow类型,可获取内码、编码、名称|
|...|后续升级存在更多数据,也会在map中携带|
**map返回参数**
|参数名|解析|
|-|-|
|code|业务执行情况,0为数据引出成功,其他为失败|
|msg|出错信息,当code不为0时需要提供友好的错误信息给用户|
|dev_msg|出错信息,当code不为0时可返回堆栈等便于开发分析问题的日志,非必填|
|byte_arr|微服务的文件传输方式byte数组,需要返回该参数,本地文件转byte数组可参考示例代码实现|
|...|后续升级需要返回更多数据,也会在map中携带|
微服务引入必须要实现**importPacket(Map<String, Object> map)** 方法。
**map传入参数**
|参数名|解析|
|-|-|
|entity_number|实体标识|
|entity_name|实体名称|
|params|该参数携带的是微服务配置是配置的参数信息|
|byte_arr|当微服务的文件传输方式为通过byte数组传输时,微服务引入时会传入该参数,得到该参数后,可以转为文件,byte数组转本地文件可参考示例代码|
|...|后续升级存在更多数据,也会在map中携带|
**map返回参数**
|参数名|解析|
|-|-|
|code|业务执行情况,0为数据引入成功,其他为失败|
|msg|出错信息,当code不为0时需要提供友好的错误信息给用户|
|dev_msg|出错信息,当code不为0时可返回堆栈等便于开发分析问题的日志,非必填|
|...|后续升级需要返回更多数据,也会在map中携带|
开发示例:
```java
package kd.bamp.ricc.dynamic.plugin.list;
import kd.bos.cache.CacheFactory;
import kd.bos.cache.TempFileCache;
import kd.bos.cache.tempfile.TempFileCacheDownloadable;
import kd.bos.db.DB;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.exception.KDBizException;
import kd.bos.url.UrlService;
import kd.sys.ricc.common.util.StringUtils;
import kd.sys.ricc.exception.RiccBizException;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class DataPacketServiceImpl {
/**
* 微服务引出的方法
* @param map
* @return
*/
public Map<String, Object> exportPacket(Map<String, Object> map) {
//实体标识
String entityNumber = (String) map.get("entity_number");
//实体名称
String entityName = (String) map.get("entity_name");
//传入的勾选数据
List<ListSelectedRow> listSelectedRowList = (List<ListSelectedRow>) map.get("listSelectedRowList");
// begin 这里执行业务逻辑,得到引出文件
//###########业务逻辑###########
//###########业务逻辑###########
//###########业务逻辑###########
// end 这里执行业务逻辑,得到引出文件
//返回数据
Map<String, Object> returnMap = new HashMap<>();
//code ==0 为数据引出成功,其他为失败,失败的时候需要填写失败原因
returnMap.put("code", 0);
returnMap.put("msg", "如果引出失败。这里填写错误信息");
returnMap.put("dev_msg", "如果引出失败。这里填写错误堆栈");
/**
*byte数组
*/
//##### begin 文件传输方式为byte数组时,您需要的处理逻辑,必须返回临时byte数组即:byte_arr
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try {
FileInputStream fileInputStream = new FileInputStream(filePath);
inputStreamToOutpurStream(fileInputStream, byteArrayOutputStream);
//必须返回的byte_arr 参数
returnMap.put("byte_arr", byteArrayOutputStream.toByteArray());
fileInputStream.close();
byteArrayOutputStream.close();
} catch (IOException e) {
}
//##### begin 文件传输方式为byte数组时,您需要的处理逻辑,必须返回临时byte数组即:byte_arr
//返回的文件名称,可以随意,可返回可不返回
returnMap.put("file_name", "test.json");
return returnMap;
}
/**
* 微服务引入的方法
* @param map
* @return
*/
public Map<String, Object> importPacket(Map<String, Object> map) {
Map<String, Object> returnMap = new HashMap<>();
try {
/**
* 方式一 byte数组
*/
//###### begin 设置的文件处理方式为byte数组时,可以通过参数byte_arr,得到byte数组,转为文件#########
byte[] bytes = (byte[]) map.get("byte_arr");
try (InputStream in = new ByteArrayInputStream(bytes)) {
//业务处理文件引入系统
//业务处理文件引入系统
//业务处理文件引入系统
} catch (IOException e) {
}
//###### end 设置的文件处理方式为byte数组时,可以通过参数byte_arr,得到byte数组,转为文件#########
}catch (Exception e){}
//code ==0 为数据引入成功,其他为失败,失败的时候需要填写失败原因
returnMap.put("msg", "如果引出失败。这里填写错误信息");
returnMap.put("dev_msg", "如果引出失败。这里填写错误堆栈");
returnMap.put("code", 0);
return returnMap;
}
/**
* 输入流转为输出流
* @param inputStream 输入流
* @param outputStream 输出流
* @throws IOException
*/
public static void inputStreamToOutpurStream(InputStream inputStream, OutputStream outputStream) throws IOException {
byte[] bytes = new byte[4096];
int index;
while ((index = inputStream.read(bytes)) != -1) {
outputStream.write(bytes, 0, index);
}
}
}
```
## 2.2 主要操作2
**前提条件**
已经实现了微服务接口
**后续操作**
**操作步骤**
**步骤1:** 新增配置项,并设置为支持添加到传输包。
**步骤2:** 配置引入引出方式为:微服务引入引出
![image.webp](/download/0100f49d169eb12f4bc6b7b7e947e7fd7dea.webp)
**步骤3:** 设置微服务参数,业务云、业务应用、服务名称、分批数量。
![image.webp](/download/01009d782713e8164ca383e80dac4079af86.webp)![image.webp](/download/010060d4d3ded85c448f9793ae81c0cd11a1.webp)
我这边开发的微服务名称是DataPacketService
![image.webp](/download/01009ba830f309ba4abb8855b3e2ef64ee49.webp)
**步骤4:** 保存配置项。
**步骤5:** 进行添加到传输包和同步传输包测试。
基础配置中心微服务开发引入引出功能使用指南
# 1 产品概述## 1.1 产品介绍基础配置中心微服务引入引出功能是专门给二次开发者提供基于微服务场景的引入引出的二开拓展能力。## 1.2...
点击下载文档
本文2024-09-23 00:46:55发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-141696.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章