轻易云数据平台:实现ETL转换与金蝶云星空集成

  • 轻易云集成顾问-林峰
### 供应商货款付款申请单下推操作【供应商货款】①:每刻数据集成到金蝶云星空 在多个数据系统对接的复杂环境中,确保信息传递的准确性和及时性至关重要。在这篇文章中,我们将探讨如何通过轻易云数据集成平台,将每刻(Eke)中的供应商货款付款申请单高效、安全地集成到金蝶云星空。 #### 数据获取与接口调用 首先,需要定时可靠地抓取每刻系统中的付款交易记录。我们通过调用每刻提供的API `/api/openapi/paymenttransaction/paid/list` 来实现数据的批量获取。同时,为了避免因大量请求而造成接口限流,通过处理分页机制有序地获取全部所需的数据。这一过程能够有效确保集成过程中不遗漏任何付款记录。 #### 数据写入与映射问题 获得的数据需要经过清洗和转换,以适应目标系统——金蝶云星空的数据格式要求。在这里,我们利用轻易云平台的强大映射功能,实现每刻原始数据结构向金蝶云结构化表格的数据转换,并通过 API `Push` 完成快速写入。期间处理两者之间潜在的数据格式差异,是确保系统无缝连接的关键步骤之一。 #### 实时监控与异常处理机制 为了保证集成任务执行过程稳定、透明,轻易云平台提供了详尽的状态实时监控及日志记录功能。一旦发现异常,例如第三方 API 调用失败或数据匹配冲突,可以自动触发错误重试机制,最大程度上减少人工干预需求。此外,通过自定义报警规则配置,还能即时通知运维人员,以便迅速解决潜在问题,提高整体业务流程效率。 未来章节,我们将进一步深入具体技术细节,包括如何优化性能、提高安全性,以及增强扩展能力等方面,共同探索更高效、更智能的数据集成之路。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image) ### 调用每刻接口获取并加工数据的技术案例 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用每刻接口`/api/openapi/paymenttransaction/paid/list`,并对获取的数据进行加工处理。 #### 接口调用配置 首先,我们需要配置API调用的元数据。以下是具体的元数据配置: ```json { "api": "/api/openapi/paymenttransaction/paid/list", "method": "POST", "number": "payeeTargetBusinessCode", "id": "paymentBizCode", "idCheck": true, "omissionRemedy": { "crontab": "21 1 * * *", "takeOverRequest": [ { "field": "startPaidTime", "label": "修改时间开始段", "type": "string", "is_required": true, "describe": null, "value": "_function ({LAST_SYNC_TIME}-3600*336)*1000" } ] }, "condition": [ [ {"field":"formSubTypeName","logic":"eq","value":"供应商货款付款申请单"}, {"field":"sourceno","logic":"like","value":"FKSQ"}, {"field":"payerAccountType","logic":"neq","value":"通过其他方式付款"}, {"field":"payerAccountType","logic":"neq","value":"从公司现金付款"}, {"field":"payerAccountNumber","logic":"neq","value":"3602005009200684740"}, {"field":"payerAccountNumber","logic":"neq","value":"111"} ] ], "request": [ {"label":"支付完成时间-开始范围,毫秒的时间戳,非必填","field":"startPaidTime","type":"string","value":"_function ({LAST_SYNC_TIME}-600) * 1000"}, {"label":"支付完成时间-结束范围,毫秒的时间戳,非必填","field":"endPaidTime","type":"string","value":"{CURRENT_TIME}000"}, {"label":"分页条数","field":"pageSize","type":"string","value":"50"}, {"label":"当前页首条数据在所有数据中的偏移量","field":"pageNum","type":"string","value":"1"}, {"label":"付款单ID,非必填,对应form_pay_order中的payment_order_id","field":"paymentNo","type":"string"} ] } ``` #### 数据请求与清洗 在配置好元数据后,我们可以开始进行数据请求。通过POST方法调用每刻接口,并传递必要的参数,如支付完成时间、分页条数等。以下是一个示例请求体: ```json { "startPaidTime": "{LAST_SYNC_TIME}-600000", "endPaidTime": "{CURRENT_TIME}000", "pageSize": 50, "pageNum": 1 } ``` 在请求过程中,我们需要特别注意以下几点: 1. **时间戳转换**:`startPaidTime`和`endPaidTime`字段要求以毫秒为单位的时间戳,因此需要对同步时间和当前时间进行适当的转换。 2. **分页处理**:为了避免一次性获取大量数据导致性能问题,我们采用分页机制,每次请求50条记录。 #### 数据过滤与条件判断 根据元数据中的条件配置,我们需要对返回的数据进行过滤。例如,仅保留“供应商货款付款申请单”类型的数据,并排除通过其他方式或从公司现金付款的记录。具体条件如下: ```json [ {"formSubTypeName": "供应商货款付款申请单"}, {"sourceno": {"$like": "%FKSQ%"}}, {"payerAccountType": {"$ne": ["通过其他方式付款", "从公司现金付款"]}}, {"payerAccountNumber": {"$ne": ["3602005009200684740", "111"]}} ] ``` 这些条件确保了我们只处理符合业务需求的数据,提高了数据处理的准确性和效率。 #### 数据转换与写入 在完成数据请求和清洗后,需要对数据进行必要的转换,以便写入目标系统。例如,将支付完成时间格式化为目标系统所需的格式,或者将字段名称映射为目标系统中的字段名称。 以下是一个简单的数据转换示例: ```json { "paymentBizCode": "{source.paymentBizCode}", "payeeTargetBusinessCode": "{source.payeeTargetBusinessCode}", ... } ``` #### 异常处理与补偿机制 在实际操作中,不可避免会遇到各种异常情况,如网络超时、接口返回错误等。为了保证数据集成过程的稳定性,我们需要设计相应的异常处理和补偿机制。 元数据中的`omissionRemedy`配置提供了一种定时任务机制,通过定期重试未成功的数据请求来弥补遗漏。例如,每天凌晨1:21执行一次补偿任务: ```json { "crontab": "21 1 * * *", ... } ``` 此外,还可以根据上次同步时间调整请求参数,以确保尽可能少地遗漏有效数据。 通过上述步骤,我们可以高效地调用每刻接口获取并加工所需的数据,为后续的数据集成打下坚实基础。在实际应用中,根据具体业务需求调整各项配置,可以进一步提升集成效果和系统稳定性。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/S19.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:ETL转换与金蝶云星空API接口集成案例 在轻易云数据集成平台的生命周期中,第二步至关重要,即将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何通过配置元数据,实现供应商货款付款申请单下推操作的数据集成。 #### 数据请求与清洗 在进行ETL转换之前,首先需要从源系统获取原始数据并进行必要的清洗。这一步骤确保了数据的准确性和一致性,为后续的数据转换打下基础。 #### 数据转换与写入 接下来,我们重点讨论如何将清洗后的数据转换为金蝶云星空API接口所能接受的格式,并通过API接口写入目标平台。以下是具体的元数据配置及其应用。 #### 元数据配置详解 ```json { "api": "Push", "method": "POST", "idCheck": true, "request": [ {"field": "Ids", "label": "id集合", "type": "string"}, {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "CN_PAYAPPLY"}, {"field": "Numbers", "label": "编码集合", "type": "string", "value": "{sourceno}"}, {"field": "RuleId", "label": "单据转换规则内码", "type": "string", "describe":"字符串类型,分号分隔,格式:\"flag1;flag2;...\"(非必录) 例如(允许负库存标识:STK_InvCheckResult)","value":"994f9913-a23f-46fb-b5d9-f1f271b4ef6c"}, {"label":"目标组织内码","field":"TargetOrgId","type":"string","value":"_findCollection find FUseOrgId from c2b5e68c-1b80-398b-bec8-59612f54e804 where FNumber={payerAccountNumber}"}, {"label":"TargetFormId","field":"TargetFormId","type":"string","value":"AP_PAYBILL"}, {"field":"IsEnableDefaultRule","label":"是否启用默认单据转换","type":"string","describe":"布尔类型,默认true(非必录)","value":"true"}, {"label":"IsDraftWhenSaveFail","field":"IsDraftWhenSaveFail","type":"string","value":"false"} ] } ``` #### 配置关键点解析 1. **API和方法**: - `api`字段指定了使用的API接口,这里是`Push`。 - `method`字段指定了HTTP方法,这里是`POST`。 2. **ID检查**: - `idCheck`字段设置为`true`,表示在推送前会进行ID检查,以确保数据的一致性。 3. **请求参数**: - `Ids`: 表示要处理的数据ID集合。 - `FormId`: 金蝶业务对象表单ID,这里指定为`CN_PAYAPPLY`。 - `Numbers`: 编码集合,用于标识具体的数据项,值为动态变量`sourceno`。 - `RuleId`: 单据转换规则内码,可以包含多个规则,通过分号分隔。 - `TargetOrgId`: 目标组织内码,通过查询语句动态获取。 - `TargetFormId`: 目标表单ID,这里指定为`AP_PAYBILL`。 - `IsEnableDefaultRule`: 是否启用默认单据转换规则,这里设置为`true`。 - `IsDraftWhenSaveFail`: 当保存失败时是否保存为草稿,这里设置为`false`。 #### 实践应用案例 假设我们有一批供应商货款付款申请单需要下推到金蝶云星空系统中。通过上述元数据配置,我们可以实现以下步骤: 1. **提取源数据**:从源系统中提取供应商货款付款申请单的数据,并生成相应的ID集合和编码集合。 2. **构建请求参数**:根据提取的数据构建请求参数,包括IDs、编码集合等,同时根据业务需求设置其他参数如目标组织内码、目标表单ID等。 3. **调用API接口**:使用轻易云平台提供的API调用功能,将构建好的请求参数通过POST方法发送到金蝶云星空系统中。 4. **处理响应结果**:接收并处理金蝶云星空系统返回的响应结果,根据响应状态进行相应处理,如记录日志、错误处理等。 通过以上步骤,我们可以高效地完成供应商货款付款申请单的数据下推操作,实现不同系统间的数据无缝对接,提高业务流程的自动化程度和效率。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)