ETL技术解析:将数据写入金蝶云星空API接口

  • 轻易云集成顾问-杨嫦
### 致远A8+数据集成到金蝶云星空案例分享:正式OA-ERP机加件采购申请单 在企业信息化过程中,系统间的数据对接与集成是提高业务流程效率的关键环节。本文将重点分享一个实际运行的系统对接集成案例:将致远A8+中的"正式OA-ERP机加件采购申请单"数据集成到金蝶云星空。在本方案中,我们利用了多个技术特性和接口功能,以实现高效、稳定的跨系统数据同步。 为了确保此次数据集成能够顺利进行,首先需要解决的是如何可靠地抓取致远A8+接口数据,并确保数据不漏单。我们使用了致远A8+提供的API接口`/seeyon/rest/flow/FromFinish/{templateCode}/{startTime}/{endTime}`进行定时调用,通过设置合理的时间范围来抓取新生成和变更的数据。同时,为避免分页和限流问题,我们引入了批量处理逻辑,并结合监控机制实时跟踪任务状态,有效提升了数据获取的可靠性。 另一方面,在将大量的数据快速写入到金蝶云星空时,也面临着诸多挑战,如如何处理两者之间的数据格式差异以及异常处理与错误重试机制。为此,本方案采用自定义转换规则,对致远A8+提取的数据进行清洗和映射,使之符合金蝶云星空接受标准,然后通过其API `batchSave` 批量提交。此外,配置集中监控和告警系统实时追踪各个环节,及时检测并修复可能出现的问题,提高整体流程可见性及健壮性。 通过以上步骤,实现了一整套严密且高效的数据抓取、转换、写入流程,此次成功搭建不仅充分发挥了各平台优势,也为未来类似项目提供了有效借鉴。后续部分我们将详细介绍具体实施细节及代码示例,以进一步阐述每个模块操作过程及注意事项。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/D15.png~tplv-syqr462i7n-qeasy.image) ### 调用致远A8+接口获取并加工数据的技术案例 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用致远A8+接口 `/seeyon/rest/flow/FromFinish/{templateCode}/{startTime}/{endTime}` 获取并加工数据。 #### 接口概述 该接口用于查询指定时间范围内已完成的流程实例。通过配置元数据,可以灵活地设置请求参数和处理返回的数据。以下是元数据配置的详细信息: ```json { "api": "/seeyon/rest/flow/FromFinish/{templateCode}/{startTime}/{endTime}", "effect": "QUERY", "method": "GET", "number": "flowTitle", "id": "flowId", "name": "flowTitle", "idCheck": true, "request": [ {"field":"templateCode","label":"templateCode","type":"string","value":"JJJCGSQD"}, {"field":"startTime","label":"startTime","type":"string","value":"{{LAST_SYNC_TIME|date}}"}, {"field":"endTime","label":"endTime","type":"string","value":"_function DATE_FORMAT(DATE_ADD('{{CURRENT_TIME|date}}', INTERVAL 1 DAY), '%Y-%m-%d')"}, {"field":"qcloudflowList","label":"qcloudflowList","type":"string","value":"qcloudflowList"} ], "autoFillResponse": true } ``` #### 请求参数解析 1. **templateCode**: 固定值 `JJJCGSQD`,表示机加件采购申请单的模板代码。 2. **startTime**: 动态值 `{{LAST_SYNC_TIME|date}}`,表示上次同步时间。 3. **endTime**: 动态值 `_function DATE_FORMAT(DATE_ADD('{{CURRENT_TIME|date}}', INTERVAL 1 DAY), '%Y-%m-%d')`,表示当前时间加一天后的日期。 4. **qcloudflowList**: 固定值 `qcloudflowList`,用于标识特定的流程列表。 #### 数据请求与清洗 在调用接口时,通过GET方法发送请求,并传递上述参数。以下是一个示例请求URL: ``` GET /seeyon/rest/flow/FromFinish/JJJCGSQD/2023-10-01/2023-10-02 ``` 返回的数据通常包含多个流程实例的信息,需要对这些数据进行清洗和处理,以便后续的数据转换与写入步骤。 #### 数据转换与写入 在获取到原始数据后,需要对其进行转换。例如,将流程实例中的某些字段映射到目标系统所需的格式。以下是一个简单的数据转换示例: ```json [ { "flowId": "12345", "flowTitle": "机加件采购申请单 - 001", "startDate": "2023-10-01", ... }, ... ] ``` 在轻易云平台中,可以通过配置自动填充响应(autoFillResponse)来简化这一过程,使得返回的数据能够自动映射到目标系统所需的字段格式。 #### 实践案例 假设我们需要将致远A8+中的机加件采购申请单同步到ERP系统中,具体步骤如下: 1. **配置元数据**:如上所述,设置API路径、请求方法、请求参数等。 2. **发送请求**:通过轻易云平台发起GET请求,获取指定时间范围内的流程实例。 3. **清洗数据**:对返回的数据进行必要的清洗和过滤,例如去除无效字段或格式化日期。 4. **转换数据**:将清洗后的数据转换为目标系统所需的格式。 5. **写入目标系统**:通过轻易云平台将转换后的数据写入ERP系统。 以上步骤展示了如何利用轻易云平台高效地实现致远A8+与ERP系统之间的数据集成。在实际操作中,还可以根据业务需求进一步优化和调整各个环节,以确保数据集成过程的准确性和高效性。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/S24.png~tplv-syqr462i7n-qeasy.image) ### 将源平台数据ETL转换并写入金蝶云星空API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并最终写入目标平台。在这个技术案例中,我们将重点探讨如何将数据转为金蝶云星空API接口所能够接收的格式,并通过POST请求写入目标平台。 #### API接口配置与元数据解析 在这个案例中,我们使用的API接口为`batchSave`,其请求方法为`POST`。以下是元数据配置的详细解析: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "111", "parser": {"name": "ConvertObjectParser", "params": "FNUMBER"}, "value": "CGSQD01_SYS" }, { ... } ], ... } ``` #### 数据字段解析与转换 1. **单据类型(FBillTypeID)**: - 字段类型:字符串 - 转换器:`ConvertObjectParser` - 参数:`FNUMBER` - 值:`CGSQD01_SYS` 2. **申请日期(FApplicationDate)**: - 字段类型:字符串 - 值:`{{mainData.申请日期|datetime}}` 3. **申请类型(FRequestType)**: - 字段类型:字符串 - 值:`Material` 4. **申请组织(FApplicationOrgId)**: - 字段类型:字符串 - 转换器:`ConvertObjectParser` - 参数:`FNumber` - 值:`100` 5. **币别(FCurrencyId)**: - 字段类型:字符串 - 转换器:`ConvertObjectParser` - 参数:`FNumber` - 值:`PRE001` 6. **单据编号(FBillNo)**: - 字段类型:字符串 - 值:`{{mainData.流水号}}` 7. **汇率类型(FExchangeTypeId)**: - 字段类型:字符串 - 转换器:`ConvertObjectParser` - 参数:`FNumber` - 值:`HLTX01_SYS` 8. **交期(F_Boey_JQ)**: - 字段类型:字符串 - 值:`{{mainData.交期|datetime}}` 9. **明细信息(FEntity)**: 包含多个子字段,如物料编码、申请数量、材料、表面处理等,每个子字段也需要进行相应的转换和解析。 #### 请求示例 根据上述配置,构建的请求体示例如下: ```json { "FormId": "PUR_Requisition", "Operation": "BatchSave", "IsAutoSubmitAndAudit": true, "IsVerifyBaseDataField": false, "Model": { ... // 主表信息 { ... // 明细信息 { ... } } } } ``` #### 实施步骤 1. **数据提取与清洗**: 从源系统中提取原始数据,并进行必要的清洗和预处理。这一步骤确保数据质量和一致性。 2. **数据转换**: 使用轻易云平台提供的转换工具,根据元数据配置,将源数据字段映射到目标系统所需的格式。例如,将日期格式化为金蝶云星空所接受的标准格式。 3. **构建请求体**: 根据元数据配置,构建符合金蝶云星空API接口规范的JSON请求体。确保所有必填字段都已正确填充,并且字段值经过适当的解析和转换。 4. **发送请求并处理响应**: 使用HTTP POST方法,将构建好的请求体发送到金蝶云星空API接口。处理响应结果,根据返回的信息判断操作是否成功,并进行相应的错误处理或日志记录。 #### 技术要点总结 - 使用轻易云平台提供的可视化界面和工具,可以方便地进行元数据配置和ETL过程管理。 - 利用元数据中的解析器,如`ConvertObjectParser`, 可以自动完成复杂的数据转换任务。 - 构建符合目标系统API规范的请求体,是确保数据成功写入的重要环节。 - 实时监控和日志记录,有助于快速定位和解决集成过程中的问题,提高整体效率和透明度。 通过这些技术手段,我们可以实现不同系统间的数据无缝对接,确保业务流程顺畅高效。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)