ETL转换与写入:轻易云平台对接金蝶云星空API

  • 轻易云集成顾问-黄宏棵
### SD003-(委外类)生产订单新增驳回 泛微=>金蝶撤销案例分享 在现代企业的业务系统中,数据集成是确保信息流畅和高效运作的重要环节。本次案例聚焦于如何通过泛微OA-Http与金蝶云星空的数据对接,实现生产订单新增后的驳回处理,由泛微传输至金蝶进行撤销操作。 具体方案编码为SD003,在实际应用过程中,我们使用了API接口 `/api/workflow/paService/getWorkflowRequest` 从泛微OA获取数据,并调用金蝶云星空的 `CancelAssign` 接口完成数据写入。为了确保集成的可靠性,我们需要处理一些关键技术点,包括但不限于: 1. **定时可靠抓取与批量数据传输**:我们设计了一个定时任务,通过调用泛微OA-Http API接口,周期性地抓取新的生产订单请求。这不仅保证了即时同步,还提高了整体效率。 2. **分页和限流控制**:由于业务需求下的数据量较大,需要特别关注接口请求中的分页和限流问题,以避免因超出接口限制而导致的数据漏单或性能瓶颈。 3. **自定义数据转换逻辑**:两套系统间的数据格式存在差异,为此我们设置了一系列自定义转换规则,确保所有字段能正确映射并符合目标系统要求,实现无缝对接。 4. **实时监控与错误重试机制**:通过集中化监控平台,对每个步骤进行细致跟踪,一旦发现异常将自动触发告警并尝试重试,最大程度上保障集成过程平稳运行,而不影响正常业务流程。 5. **高吞吐量支持及性能优化**:考虑到大量生产订单在高峰期产生,本实施方案特别注重提升写入速度和吞吐能力。在实际运行中,即便面对突发的大规模数据,也能快速、稳定地将其批量导入到金蝶云星空中去。 下一步,将深入展示具体实现方式以及相关代码示例,让大家更直观地了解整个对接流程中的技术要点及应对策略。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/D35.png~tplv-syqr462i7n-qeasy.image) ### 调用泛微OA-Http接口获取并加工数据的技术案例 在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何使用轻易云数据集成平台调用泛微OA-Http接口`/api/workflow/paService/getWorkflowRequest`,并对获取的数据进行初步加工处理。 #### 接口概述 泛微OA-Http接口`/api/workflow/paService/getWorkflowRequest`主要用于查询特定工作流请求的信息。该接口采用GET方法,通过传递特定的参数来获取所需的数据。 #### 元数据配置解析 根据提供的元数据配置,我们可以了解到以下关键点: - **API路径**:`/api/workflow/paService/getWorkflowRequest` - **请求方法**:GET - **请求参数**: - `workflowId`:e9流程id,值为"406" - `workflowIdList`:中间方案ID,值为"8183a586-bdfb-3e93-8573-d5e81803c5ff" - **条件过滤**:仅当`currentNodeId`等于"3123"时,才会返回结果。 #### 请求参数配置 在实际操作中,我们需要按照元数据配置中的要求构造HTTP GET请求。以下是一个示例请求URL: ``` https://example.com/api/workflow/paService/getWorkflowRequest?workflowId=406&workflowIdList=8183a586-bdfb-3e93-8573-d5e81803c5ff ``` #### 数据过滤与条件判断 根据元数据配置中的条件过滤部分,我们需要确保只有当返回的数据中字段`currentNodeId`等于"3123"时,才会进一步处理。这一步骤可以通过轻易云平台内置的条件判断功能实现。 ```json { "condition": [ [ { "field": "currentNodeId", "logic": "eqv2", "value": "3123" } ] ] } ``` #### 自动填充响应 元数据配置中的`autoFillResponse: true`表示平台会自动将响应结果填充到后续处理流程中。这一特性极大简化了开发者的工作,使得数据处理更加高效和透明。 #### 数据加工与清洗 在获取到符合条件的数据后,需要对其进行初步加工和清洗,以便后续的数据转换与写入。例如,可以提取关键字段、格式化日期、去除无用信息等。以下是一个简单的数据清洗示例: ```json { "requestId": "12345", "workflowId": "406", "currentNodeId": "3123", // 其他字段... } ``` 通过轻易云平台的可视化界面,可以方便地对上述JSON结构进行字段提取和转换操作。 #### 实践案例 假设我们需要将符合条件的生产订单驳回信息从泛微OA系统同步到金蝶系统。在此过程中,我们首先调用上述接口获取生产订单信息,并通过轻易云平台进行初步清洗和加工,然后再将处理后的数据写入金蝶系统。 1. **调用接口**:构造GET请求并发送。 2. **条件判断**:检查返回结果中的`currentNodeId`是否为"3123"。 3. **数据清洗**:提取并格式化必要字段。 4. **写入目标系统**:将清洗后的数据通过轻易云平台写入金蝶系统。 这种方式不仅提高了数据集成的效率,还确保了每个环节的透明度和可追溯性。 通过以上步骤,我们实现了从泛微OA系统到金蝶系统的数据无缝对接,为企业业务流程自动化提供了有力支持。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和实现方法。 #### 元数据配置解析 首先,我们需要理解元数据配置中的各个字段及其作用。以下是元数据配置的详细解析: ```json { "api": "CancelAssign", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field":"FormId","label":"FormId","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"PUR_PurchaseOrder"}, {"field":"Numbers","label":"Numbers","type":"string","describe":"111","value":"_function SUBSTRING_INDEX('{requestName}', '-', 1)"}, {"field":"InterationFlags","label":"InterationFlags","type":"string","describe":"字符串类型,分号分隔,格式:\"flag1;flag2;...\"(非必录) 例如(允许负库存标识:STK_InvCheckResult)","value":"STK_InvCheckResult"}, {"field":"IgnoreInterationFlag","label":"IgnoreInterationFlag","type":"string","describe":"布尔类型,默认true(非必录)","value":"true"}, {"field":"NetworkCtrl","label":"NetworkCtrl","type":"string","describe":"布尔类型,默认false(非必录)","value":"false"}, {"field":"IsVerifyProcInst","label":"IsVerifyProcInst","type":"string","describe":"是否检验单据关联运行中的工作流实例,布尔类型,默认false(非必录)","value":"false"} ] } ``` #### 数据请求与清洗 在数据请求阶段,我们从源系统获取原始数据。这些数据可能包含冗余信息或格式不符合目标系统要求,因此需要进行清洗和预处理。例如,从泛微系统获取生产订单驳回信息时,需要提取出关键信息如订单编号、驳回原因等。 #### 数据转换与写入 接下来,我们进入数据转换阶段,将清洗后的数据按照目标系统API接口的要求进行重新组织和格式化。以下是如何将这些字段映射到金蝶云星空API接口所需格式的具体步骤: 1. **FormId**: 固定值为`PUR_PurchaseOrder`,表示这是一个采购订单。 2. **Numbers**: 使用`SUBSTRING_INDEX`函数从请求名称中提取订单编号。例如,如果请求名称为`12345-67890`,则提取结果为`12345`。 3. **InterationFlags**: 固定值为`STK_InvCheckResult`,表示允许负库存标识。 4. **IgnoreInterationFlag**: 布尔类型,默认值为`true`。 5. **NetworkCtrl**: 布尔类型,默认值为`false`。 6. **IsVerifyProcInst**: 布尔类型,默认值为`false`。 通过轻易云的数据集成平台,可以利用其强大的ETL功能,将上述字段进行相应的转换和映射。以下是一个示例代码片段,用于展示如何通过API接口将转换后的数据写入金蝶云星空: ```python import requests import json def transform_and_write_data(request_name): # 提取订单编号 order_number = request_name.split('-')[0] # 构建请求体 payload = { "FormId": "PUR_PurchaseOrder", "Numbers": order_number, "InterationFlags": "STK_InvCheckResult", "IgnoreInterationFlag": True, "NetworkCtrl": False, "IsVerifyProcInst": False } # API URL api_url = 'https://api.kingdee.com/CancelAssign' # 发起POST请求 response = requests.post(api_url, data=json.dumps(payload), headers={'Content-Type': 'application/json'}) if response.status_code == 200: print("Data successfully written to Kingdee Cloud.") else: print(f"Failed to write data to Kingdee Cloud. Status code: {response.status_code}") # 示例调用 transform_and_write_data('12345-67890') ``` #### 实时监控与错误处理 在实际操作中,我们还需要实时监控数据流动和处理状态,以确保每个环节都能顺利执行。如果出现错误,例如网络故障或API调用失败,需要有相应的错误处理机制来捕获并记录这些异常,以便后续排查和修复。 通过上述步骤,我们可以高效地将源平台的数据经过ETL转换后写入到金蝶云星空API接口,实现不同系统间的数据无缝对接。这不仅提升了业务流程的透明度和效率,也确保了数据的一致性和准确性。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/T9.png~tplv-syqr462i7n-qeasy.image)