### 每刻数据集成到金蝶云星空:一个系统对接集成案例分享
在本次技术案例中,我们将深入探讨如何通过轻易云数据集成平台,将每刻投资项目的数据精准、高效地传输到金蝶云星空。此次集成的方案名为“每刻投资项目->金蝶投资项目”,重点解决了跨系统间的大量数据的快速、可靠写入和格式差异问题。
为了确保整个过程不漏单,并保证定时可靠地抓取每刻接口的数据,我们采用了轻易云提供的全透明可视化操作界面及实时监控功能。在此基础上,针对每刻接口(/api/openapi/reference/data/detail/query)的分页和限流特性进行了专项处理,以保障API调用的稳定性与效率。
批量数据由每刻系统拉取后,通过自定义脚本实现与金蝶云星空标准格式之间的数据映射,再利用金蝶提供的数据写入API(batchSave)完成高效存储。这一过程中,为确保异常情况能够得到及时妥善处理,我们设计并实现了完整的错误重试机制,使得任何潜在的问题都能被迅速发现并解决。
另外,为应对两套系统间可能存在的数据格式差异,我们特别构建了一系列转换规则,这些规则不仅涵盖基本字段类型映射,也考虑到了特殊业务场景下的数据校验与调整需求。同时,通过实时监控和日志记录功能,对整个处理链路进行全面跟踪,提高整体运维效果。
接下来,将详细阐述具体技术实施步骤,从初始配置到实际运行中的注意事项,一一解析。
![用友BIP接口开发配置](https://pic.qeasy.cloud/D33.png~tplv-syqr462i7n-qeasy.image)
### 调用每刻接口获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的第一步。本文将深入探讨如何通过轻易云数据集成平台调用每刻接口`/api/openapi/reference/data/detail/query`来获取并加工数据。
#### 接口配置与请求参数
根据提供的元数据配置,我们需要向每刻系统发送一个POST请求,具体的API路径为`/api/openapi/reference/data/detail/query`。以下是请求参数的详细配置:
- `referenceDataBizCode`: 档案编码,固定值为"TZXM"。
- `keyword`: 根据选项名称和选项编码进行模糊查询,可选参数。
- `offset`: 分页起始位置,默认值为0。
- `pageSize`: 分页条数,默认值为50,最大值为100。
- `updatedStartAt`: 最近修改时间的起始时间戳,用于查询在此时间及之后修改的数据。
- `updatedEndAt`: 最近修改时间的结束时间戳,用于查询在此时间及之前修改的数据。
以下是请求参数的JSON格式示例:
```json
{
"referenceDataBizCode": "TZXM",
"keyword": "",
"offset": "0",
"pageSize": "50",
"updatedStartAt": "{LAST_SYNC_TIME}000",
"updatedEndAt": "{CURRENT_TIME}000"
}
```
#### 请求与响应处理
1. **构建请求**:
使用轻易云平台的可视化界面或API调用工具(如Postman)构建上述请求。确保在请求头中设置必要的认证信息,如API密钥或Token。
2. **发送请求**:
将构建好的请求发送到每刻系统。由于轻易云平台支持全异步操作,可以同时处理多个请求,提高效率。
3. **处理响应**:
每刻系统返回的数据通常包含项目的详细信息,包括项目名称、业务编码等。以下是一个可能的响应示例:
```json
{
"data": [
{
"name": "投资项目A",
"bizCode": "TZXM001",
...
},
{
"name": "投资项目B",
"bizCode": "TZXM002",
...
}
],
...
}
```
#### 数据清洗与转换
获取到原始数据后,需要进行清洗和转换,以便后续写入目标系统(金蝶投资项目)。主要步骤包括:
1. **字段映射**:
将每刻系统中的字段映射到金蝶系统中的相应字段。例如,将`name`映射到金蝶系统中的项目名称字段,将`bizCode`映射到金蝶系统中的业务编码字段。
2. **数据验证**:
根据元数据配置中的`idCheck`参数,对业务编码进行唯一性检查,确保没有重复记录。
3. **格式转换**:
根据目标系统要求,对日期、数值等字段进行格式转换。例如,将时间戳转换为标准日期格式。
4. **错误处理**:
对于不符合要求的数据记录,进行日志记录并通知相关人员进行人工干预。
#### 实践案例
假设我们需要同步最近一小时内修改过的投资项目数据,可以通过以下步骤实现:
1. 获取当前时间和一小时前的时间戳。
2. 构建请求参数,将`updatedStartAt`设置为一小时前的时间戳,将`updatedEndAt`设置为当前时间戳。
3. 发送请求并获取响应数据。
4. 对响应数据进行清洗、转换和验证。
5. 将处理后的数据写入金蝶投资项目系统。
通过以上步骤,我们可以高效地实现每刻投资项目到金蝶投资项目的数据集成,确保数据的一致性和准确性。
![用友BIP接口开发配置](https://pic.qeasy.cloud/S28.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成生命周期的第二步中,关键任务是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并将其转化为目标平台能够接收的格式。在本案例中,我们将探讨如何通过轻易云数据集成平台,将每刻投资项目的数据转换为金蝶云星空API接口所能接受的格式,并最终写入目标平台。
#### 数据请求与清洗
在开始数据转换之前,首先需要从源平台获取原始数据,并对其进行清洗和预处理。假设我们已经完成了这一阶段,接下来进入数据转换与写入阶段。
#### 数据转换与写入
为了将每刻投资项目的数据写入金蝶云星空,我们需要使用其提供的API接口。在本案例中,我们使用`batchSave` API来实现批量保存操作。以下是详细的元数据配置和具体操作步骤。
##### 元数据配置解析
```json
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{
"field": "FNumber",
"label": "编码",
"type": "string",
"value": "{bizCode}"
},
{
"field": "FDataValue",
"label": "名称",
"type": "string",
"value": "{name}"
},
{
"field": "FId",
"label": "类别",
"type": "string",
"value": "TZXM_SYS",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
}
}
],
...
}
```
1. **API接口配置**
- `api`: 指定使用的API接口名称,这里是`batchSave`。
- `method`: HTTP请求方法,这里是`POST`。
- `idCheck`: 是否进行ID检查,设置为`true`。
2. **操作配置**
- `operation`: 定义批量操作的方式。
- `rowsKey`: 指定数组键名,这里是`array`。
- `rows`: 每次处理的数据行数,这里是1行。
- `method`: 批量保存的方法,这里是`batchArraySave`。
3. **请求字段映射**
- `request`: 定义要发送到API接口的字段映射。
- `FNumber`: 映射到源数据中的业务编码 `{bizCode}`。
- `FDataValue`: 映射到源数据中的名称 `{name}`。
- `FId`: 固定值 `"TZXM_SYS"`,通过解析器 `ConvertObjectParser` 转换为目标格式。
4. **其他请求参数**
```json
[
{
...
{"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BOS_ASSISTANTDATA_DETAIL"},
{"field":"Operation","label":"执行的操作","type":"string","value":"BatchSave"},
{"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"},
{"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"}
}
]
```
##### 实际操作步骤
1. **准备源数据**
从每刻投资项目系统中提取所需的数据,例如:
```json
[
{"bizCode": "INV001", "name": "投资项目A"},
{"bizCode": "INV002", "name": "投资项目B"}
]
```
2. **转换数据格式**
根据元数据配置,将提取的数据转换为金蝶云星空API能够接收的格式:
```json
[
{
array: [
{"FNumber": "{INV001}", ...},
{"FNumber": "{INV002}", ...}
],
FormId: 'BOS_ASSISTANTDATA_DETAIL',
Operation: 'BatchSave',
IsAutoSubmitAndAudit: true,
IsVerifyBaseDataField: false
}
]
```
3. **发送HTTP请求**
使用HTTP POST方法,将转换后的数据发送到金蝶云星空API接口:
```python
import requests
url = 'https://api.kingdee.com/batchSave'
headers = {'Content-Type': 'application/json'}
data = {
...
}
response = requests.post(url, json=data, headers=headers)
if response.status_code == 200:
print("Data successfully saved to Kingdee Cloud.")
else:
print("Failed to save data:", response.content)
```
通过上述步骤,我们成功地将每刻投资项目的数据转换并写入到金蝶云星空系统。这一过程展示了如何利用轻易云数据集成平台高效地进行ETL转换和系统间的数据无缝对接。
![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/T25.png~tplv-syqr462i7n-qeasy.image)