利用轻易云ETL转换技术对接金蝶云星空API的实战经验

  • 轻易云集成顾问-黄宏棵
### 吉客云与金蝶云星空的VMI以销定采采购退料集成方案技术探讨 在本次案例中,主要目标是实现吉客云的数据通过轻易云数据集成平台,高效、可靠地对接至金蝶云星空系统,以满足企业对于VMI(Vendor Managed Inventory)模式下的以销定采采购及退料管理需求。 首先,我们需要解决的是如何高效获取吉客云接口 `erp.storage.goodsdocout.v2` 提供的数据。由于此API需处理大量业务数据,因此我们利用轻易云数据集成平台所支持的分批抓取和分页机制,有效避免了由于接口限流导致的数据漏单问题。同时,通过自定义数据转换逻辑,将吉客云输出的数据格式适配到金蝶云星空's要求。 为了确保海量数据能迅速而准确地写入到金蝶云星空,我们采用了其提供的批量保存API `batchSave`。该API允许一次性写入大量记录,从而提高了整体处理效率。此外,为保证在整个过程中不会产生遗漏或重复处理的问题,我们还配置了一套实时监控与告警系统,对每一个集成任务进行状态跟踪和性能监控。 核心难点之一在于如何应对各种可能发生的异常情况,比如网络波动或接口响应超时。在这里,重试机制就显得尤为重要,一旦检测到错误,系统将自动触发重试操作,同时也会记录详细日志供后续排查。这不仅提升了整体稳定性,也大大减少了手动干预的工作量。 具体实施过程中,还需要特别注意两端系统之间的数据格式差异。例如,在从吉客云提取出JSON格式的数据后,需要通过映射配置将其转换为符合金蝶规范的XML格式,并且要充分考虑字段匹配、值域校验等细节问题。此外,通过可视化数据流设计工具,可以直观展示并调整各个步骤中的实现逻辑,使得整个流程一目了然、便于管理。 最后,为保障所有这些复杂操作能够顺利进行,每步执行都进行了严密测试,并结合实际业务场景不断优化参数设置。从中积累下来的丰富经验,不仅验证了解决方案的有效性,也为未来类似项目提供了宝贵参考。 ![打通钉钉数据接口](https://pic.qeasy.cloud/D33.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过调用吉客云接口`erp.storage.goodsdocout.v2`来获取并加工数据,以实现VMI以销定采采购退料的集成方案。 #### 元数据配置解析 元数据配置是实现数据请求与清洗的关键。以下是对元数据配置的详细解析: ```json { "api": "erp.storage.goodsdocout.v2", "effect": "QUERY", "method": "POST", "number": "goodsdocNo", "id": "goodsdocNo", "idCheck": true, "request": [ {"field":"pageIndex","label":"分页页码","type":"string"}, {"field":"pageSize","label":"分页页数","type":"string","value":"50"}, {"field":"goodsDocNo","label":"出库单号","type":"string"}, {"field":"startDate","label":"创建时间的起始时间","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"endDate","label":"创建时间的结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"}, {"field":"inouttype","label":"类型","type":"string","describe":"201-销售出库 202调拨出库 ..."}, {"field":"sourceBillNo","label":"来源单号","type":"string"}, {"field":"warehouseCode","label":"仓库编号","type":"string"}, {"field":"vendCode","label":"供应商编号(往来单位)","type":"string"}, {"field":"billNo","label":"上游单据号(关联单号)","type":"string"}, {"field":"userName","label":"创建人名称","type":"string"}, {"field":"outBillNo","label":"外部单号(全模糊匹配)","type":"string"}, {"field":"gmtModifiedStart","label":"主表更新时间起始","type":"string"}, {"field":"gmtModifiedEnd","label":"主表更新时间截至","type":""}, {"field":""} ], ... } ``` #### 请求参数配置 1. **分页参数**: - `pageIndex`:分页页码,类型为字符串。 - `pageSize`:分页页数,默认值为50。 2. **时间参数**: - `startDate`:创建时间的起始时间,使用动态变量`{{LAST_SYNC_TIME|datetime}}`。 - `endDate`:创建时间的结束时间,使用动态变量`{{CURRENT_TIME|datetime}}`。 3. **过滤条件**: - `inouttype`:类型字段,用于区分不同出库类型,如销售出库、调拨出库等。 - `warehouseCode`、`vendCode`、`billNo`等字段用于进一步细化查询条件。 #### 数据清洗与转换 在获取到原始数据后,需要进行清洗和转换,以确保数据符合业务需求。以下是一些关键步骤: 1. **字段映射与筛选**: - 使用元数据中的返回参数配置,将需要的字段映射出来,例如:`goodsdocNo`, `inOutDate`, `gmtCreate`, `sourceBillNo`, `inouttype`, 等。 2. **条件过滤**: - 根据业务需求,对返回的数据进行条件过滤。例如,通过条件配置过滤掉数量小于0且仓库名称包含“VMI”的记录,并排除特定出库类型(如202和205)。 3. **自动填充响应**: - 配置自动填充响应功能,以便在处理过程中自动补全必要的数据字段。 #### 异常处理与补救措施 为了确保数据集成过程的稳定性和可靠性,需要设置异常处理和补救措施: 1. **异常检测**: - 配置定时任务(crontab)定期检查数据同步状态,例如每天凌晨2点9分执行一次检查任务。 2. **补救措施**: - 在检测到异常时,自动触发补救机制,通过接管请求重新拉取缺失的数据。例如,通过设置起始时间为当前时间减去三天来重新拉取最近三天的数据。 通过上述步骤,我们可以高效地调用吉客云接口获取并加工所需的数据,为后续的数据转换与写入打下坚实基础。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在轻易云数据集成平台中,数据集成的生命周期包括多个阶段,其中一个关键步骤是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台——金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下将详细介绍如何通过元数据配置实现这一过程。 #### 1. 数据请求与清洗 在开始ETL转换之前,我们需要确保从源系统获取的数据已经过清洗和预处理。这一步骤保证了数据的准确性和一致性,为后续的转换和写入打下坚实基础。 #### 2. 数据转换与写入 我们重点关注如何将清洗后的数据通过ETL转换,转为金蝶云星空API接口所能接受的格式,并最终写入目标系统。以下是具体的元数据配置及其解析。 ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "TLSQDD01_SYS" }, { "field": "FDate", "label": "采购日期", "type": "string", "describe": "日期", "value": "{Date}" }, { ... } ], ... } ``` ##### 核心字段解析 1. **FBillTypeID(单据类型)**: - 类型:`string` - 描述:单据类型 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 值:`TLSQDD01_SYS` 此字段用于指定单据类型,通过转换器将内部编码转为金蝶云星空可识别的格式。 2. **FDate(采购日期)**: - 类型:`string` - 描述:日期 - 值:`{Date}` 此字段用于记录采购日期,从源系统获取后直接映射到目标系统。 3. **FPURCHASEORGID(采购组织)**: - 类型:`string` - 描述:组织 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 值:`I01` 用于指定采购组织,同样通过转换器进行编码转换。 4. **FSUPPLIERID(供应商)**: - 类型:`string` - 描述:基础资料 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 值:`{warehouseCode}` 此字段用于指定供应商,通过映射关系将仓库代码转为供应商代码。 5. **FEntity(明细信息)**: - 类型:`array` - 子字段: - **FMaterialId(物料编码)**: - 类型:`string` - 描述:基础资料 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 值:`{{Fentity.goodsDocDetailList_goodsNo}}` 用于记录物料编码,通过转换器进行编码转换。 - **FMRAPPQTY(采购数量)**: - 类型:`string` - 描述:数量 - 值: `_function {{Fentity.goodsDocDetailList_quantity}} *(-1)` 用于记录采购数量,通过函数计算实现负值转换。 ... ##### 操作配置解析 ```json { ... "operation": { ... } } ``` 1. **FormId(业务对象表单Id)**: - 类型: `string` - 描述: 必须填写金蝶的表单ID如: `PUR_PurchaseOrder` - 值: `PUR_MRAPP` 2. **IsAutoSubmitAndAudit(提交并审核)**: - 类型: `bool` - 值: `true` 3. **Operation(执行的操作)**: - 类型: `string` - 值: `Save` 这些操作配置确保了在将数据写入金蝶云星空时,能够自动提交并审核,实现无缝对接。 #### 总结 通过上述元数据配置,我们可以高效地将清洗后的源平台数据进行ETL转换,并成功写入金蝶云星空API接口。此过程不仅提升了数据处理效率,还确保了各环节的数据准确性和一致性。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/T13.png~tplv-syqr462i7n-qeasy.image)