使用轻易云平台进行ETL转换并写入金蝶云星空的数据集成技术方案

  • 轻易云集成顾问-吴伟
### 案例分享:泛微OA-Http数据集成到金蝶云星空 在企业信息化系统中,数据的高效流转和准确处理是业务运作顺畅的重要保障。本文将详细探讨如何使用轻易云平台实现泛微OA-Http与金蝶云星空的高效数据集成,通过FD003-非生产性付款申请 泛微=>金蝶其他应付单--443这一具体方案为例,深入解析其技术细节。 #### 背景概述 为了确保从泛微OA获取的数据能够无缝且准确地写入到金蝶云星空,我们需要解决API接口调用、分页处理、限流规避以及数据格式转换等多个技术难点。在本案例中,主要通过以下两个关键API进行操作: 1. **泛微OA-Http获取数据API**: `/api/workflow/paService/getWorkflowRequest` 2. **金蝶云星空写入数据API**: `batchSave` #### 关键步骤和特性应用 1. **定时可靠的数据抓取** 利用轻易云提供的定时任务功能,我们配置了自动定时器来周期性地调用`/api/workflow/paService/getWorkflowRequest`接口,从泛微OA系统中拉取最新的付款申请相关数据。这种方式可以确保不会遗漏任何待处理单据,同时避免手动操作带来的不确定性。 2. **批量快速写入能力** 每次从泛微OA获取的大量非生产性付款申请,需要快速、高效地保存至金蝶云星空。在这里,我们利用轻易云高吞吐量的数据写入能力,将这些记录以批量方式通过`batchSave` API导入到目标系统,有效提升了整体效率和运行速度。 3. **实时监控与异常检测** 为确保整个流程中的各个环节都能正常运作,并及时发现潜在问题或异常情况,本集成方案特别启用了集中监控和告警系统。这样不仅可以实时跟踪每个任务状态,还能对发生错误的请求进行重试,提高整体流程稳定性与可靠性。 4. **自定义转换逻辑** 在实际实施过程中,不可避免地会遇到源系统(泛微)与目标系统(金蝶)的字段名及结构差异。我们灵活运用了轻易云平台提供的数据转换工具,对原始数据进行了必要的清洗和映射,以满足业务需求。例如,当遇到枚举值或关联表ID不同的问题,通过脚本调整完成精准匹配。 5. **分页与限流处理机制** 鉴于泛微接口返回结果可能存在分页限制,并且每次请求数量较大时有触发限流保护措施风险。因此,在 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用泛微OA-Http接口获取并加工数据的技术案例 在数据集成生命周期的第一步,我们需要调用源系统泛微OA-Http接口`/api/workflow/paService/getWorkflowRequest`来获取并加工数据。本文将深入探讨该API接口的技术细节及其在数据集成过程中的应用。 #### API接口调用配置 首先,我们需要了解API接口的基本配置和调用方式。根据提供的元数据配置,以下是该API接口的详细信息: - **API路径**: `/api/workflow/paService/getWorkflowRequest` - **请求方法**: `GET` - **主要参数**: - `workflowId`: e9流程id,值为`443` - `workflowIdList`: 中间方案ID,值为`2356388e-8c49-35b3-bb7e-1eca1a8617d5` #### 请求参数配置 在调用该API时,我们需要传递必要的请求参数。这些参数包括`workflowId`和`workflowIdList`,它们分别代表具体的流程ID和中间方案ID。以下是请求参数的配置示例: ```json { "workflowId": "443", "workflowIdList": "2356388e-8c49-35b3-bb7e-1eca1a8617d5" } ``` 这些参数将在HTTP GET请求中作为查询字符串的一部分发送到服务器。 #### 数据过滤条件 为了确保我们获取的数据符合特定业务需求,我们可以使用条件过滤功能。在元数据配置中,定义了两个条件过滤器: 1. `condition_bk`: 备选条件,用于备用情况。 2. `condition`: 主条件,用于常规情况。 每个条件过滤器包含两个子条件,分别检查字段`workflowMainTableInfo.fklx`是否等于“应付款”或“Account Payable”。这些条件确保我们只处理与应付款相关的数据。 以下是条件过滤器的示例: ```json { "condition": [ [{"field": "workflowMainTableInfo.fklx", "logic": "eqv2", "value": "应付款"}], [{"field": "workflowMainTableInfo.fklx", "logic": "eqv2", "value": "Account Payable"}] ] } ``` #### 自动填充响应数据 元数据配置中还启用了自动填充响应数据功能 (`autoFillResponse: true`)。这意味着当我们从API获取到响应数据后,系统会自动将这些数据填充到相应的数据结构中,以便后续处理。 #### 数据清洗与转换 在获取到原始数据后,我们需要对其进行清洗和转换,以满足目标系统(如金蝶其他应付单)的要求。这个过程可能包括以下步骤: 1. **字段映射**: 将源系统中的字段映射到目标系统中的对应字段。例如,将泛微OA中的`requestId`映射到金蝶系统中的相应字段。 2. **数据格式转换**: 根据目标系统的要求,对日期、金额等字段进行格式转换。 3. **数据校验**: 确保所有必需字段都有有效值,并符合业务规则。 #### 示例代码 以下是一个简单的Python示例代码,用于调用泛微OA API并处理响应数据: ```python import requests import json # API URL url = 'https://example.com/api/workflow/paService/getWorkflowRequest' # 请求参数 params = { 'workflowId': '443', 'workflowIdList': '2356388e-8c49-35b3-bb7e-1eca1a8617d5' } # 发起GET请求 response = requests.get(url, params=params) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗与转换逻辑 for item in data['items']: if item['workflowMainTableInfo']['fklx'] in ['应付款', 'Account Payable']: # 执行字段映射和格式转换 processed_item = { 'id': item['requestId'], # 添加更多字段映射... } # 打印或保存处理后的数据 print(json.dumps(processed_item, ensure_ascii=False)) else: print(f"Error: {response.status_code}") ``` 通过上述步骤和示例代码,我们可以高效地从泛微OA系统中获取所需的数据,并对其进行清洗和转换,以便无缝集成到目标系统中。这种方法不仅提高了业务透明度,还显著提升了整体效率。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式。本文将详细探讨如何通过轻易云数据集成平台,将非生产性付款申请从泛微系统转换为金蝶云星空系统中的其他应付单。 #### 数据请求与清洗 在这一阶段,我们需要从源系统泛微中提取相关数据,并对其进行清洗和预处理。假设我们已经完成了这一步,接下来我们重点关注如何将清洗后的数据转换为金蝶云星空API接口所能接收的格式。 #### 数据转换与写入 为了实现这一目标,我们需要配置元数据,使得数据能够正确地映射到金蝶云星空系统的API接口。以下是一个详细的元数据配置示例: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型\n其他应付单-QTYFD01_SYS\n费用报销其他应付单-QTYFD02 SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "QTYFD01_SYS" }, { "field": "FBillNo", "label": "单据编号", "type": "string", ... } ], ... } ``` #### 元数据配置详解 1. **API调用设置**: - `api`: 指定调用的API接口为`batchSave`。 - `effect`: 设置执行效果为`EXECUTE`。 - `method`: HTTP请求方法为`POST`。 - `idCheck`: 启用ID检查。 2. **操作配置**: - `operation`: 定义批量保存操作,使用`batchArraySave`方法,并指定每次处理一行数据。 3. **字段映射**: - `FBillTypeID`: 单据类型,通过`ConvertObjectParser`解析器将值转换为金蝶系统识别的格式。 - `FBillNo`: 单据编号,直接映射。 - `FDATE`: 业务日期,从源系统字段`workflowMainTableInfo.sqrq`获取并直接映射。 - `FCONTACTUNITTYPE` 和 `FCONTACTUNIT`: 往来单位类型及单位,根据不同情况进行条件判断和映射。 4. **复杂字段处理**: - 对于数组类型字段如明细信息(`FEntity`),需要进一步嵌套子字段配置。例如: ```json { ... { "field": "FEntity", ... { ... { ... { ... { ... { ... { ... } } } } } } } } ``` 5. **自定义解析器和函数**: - 使用自定义解析器如`ConvertObjectParser`来处理特定字段值的转换。 - 使用函数式表达式(如 `_function case ... end`, `_findCollection find ... where ...`, `_mongoQuery ... findField=... where=...`)来实现动态值计算和条件判断。 #### 实际应用案例 假设我们有一条来自泛微系统的数据记录,需要将其转换并写入到金蝶云星空系统中。通过上述元数据配置,我们可以确保每个字段都能准确地映射到目标系统所需的格式。例如: - 源系统中的业务日期字段`workflowMainTableInfo.sqrq`会被直接映射到目标系统中的业务日期字段(`FDATE`)。 - 往来单位类型(如供应商、客户等)会根据具体情况进行条件判断,并映射到相应的目标字段(如 `BD_Supplier`, `BD_Customer`, 等)。 通过这种方式,我们可以实现复杂的数据转换逻辑,并确保最终的数据能够无缝写入到金蝶云星空系统中。 #### 总结 通过轻易云数据集成平台,我们能够高效地完成从源平台到目标平台的数据ETL转换过程。上述元数据配置示例展示了如何利用解析器、条件判断和函数式表达式,实现对复杂数据结构的处理和转换。这种灵活且强大的配置能力,使得我们能够应对各种异构系统间的数据集成需求。 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/T16.png~tplv-syqr462i7n-qeasy.image)