ETL转换与写入:轻易云平台集成金蝶API接口详解

  • 轻易云集成顾问-黄宏棵
### 案例分享:泛微OA-Http数据集成到金蝶云星空 在本案例中,我们将详细探讨如何通过FD001-差旅费报销申请 泛微=>金蝶--424方案,实现从泛微OA-Http系统到金蝶云星空的数据集成。此次集成目标是将泛微OA中的差旅费报销申请数据准确、及时地传输并写入到金蝶云星空中,实现业务流程的闭环管理。 为实现这一目标,我们需要解决以下关键技术问题: 1. **高效可靠的数据抽取和加载** 使用API接口`/api/workflow/paService/getWorkflowRequest`定时抓取泛微OA中的差旅费报销申请数据,确保数据不会漏单。同时,通过设计批量任务,把大规模数据快速、安全地写入至金蝶云星空的`batchSave` API,使得整体处理效率得到显著提升。 2. **分页与限流机制** 在调用泛微OA-Http接口时,需妥善应对其分页与限流问题。精确控制每次请求的数据量,并合理规划请求频率,以避免超出服务端限制,同时保证获取所有所需数据。 3. **格式转换与映射** 泛微OA和金蝶云星空的接口返回值和接收参数在结构上存在一定差异。因此,需要自定义复杂的数据转换逻辑,将原始数据重新格式化以符合目标系统要求。通过统一视图及控制台进行API资产管理,有助于实时监控与优化此过程。 4. **异常处理与重试策略** 为保障数据传输过程中的稳定性,需要设计健全的错误处理机制。一旦捕获到通信或解析错误,应记录日志便于后续分析,并根据预设策略重试,从而最大程度降低因偶发异常导致的数据丢失风险。 5. **实时监控和性能跟踪** 集成过程中,通过集中化监控和告警系统,对每个任务节点状态进行实时跟踪。在发生异常情况时,能够迅速响应并采取补救措施,提高了整个系统对突发事件的应变能力。此外,还包括全面掌握API资产使用情况,进一步有效利用资源、优化配置。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image) ### 调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest获取并加工数据 在数据集成的生命周期中,调用源系统API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用泛微OA-Http接口`/api/workflow/paService/getWorkflowRequest`,并对获取的数据进行初步加工。 #### 接口概述 泛微OA提供了丰富的API接口用于数据交互,其中`/api/workflow/paService/getWorkflowRequest`接口用于获取特定工作流的请求数据。该接口采用HTTP GET方法,主要参数包括`workflowId`和`workflowIdList`。 #### 元数据配置解析 根据提供的元数据配置,我们可以看到以下关键字段: - **api**: `/api/workflow/paService/getWorkflowRequest` - **effect**: `QUERY` - **method**: `GET` - **number**: `requestId` - **id**: `requestId` - **name**: `id` - **idCheck**: `true` - **request**: - `workflowId`: e9流程id,类型为字符串,值为`424` - `workflowIdList`: 中间方案ID,类型为字符串,值为`2356388e-8c49-35b3-bb7e-1eca1a8617d5` #### 调用API接口 首先,我们需要在轻易云平台上配置HTTP GET请求以调用该API。具体步骤如下: 1. **配置请求URL和方法**: ```plaintext URL: https://your-weaver-server/api/workflow/paService/getWorkflowRequest Method: GET ``` 2. **设置请求参数**: 根据元数据配置,我们需要传递两个参数:`workflowId`和`workflowIdList`。 ```plaintext Parameters: - workflowId = 424 - workflowIdList = 2356388e-8c49-35b3-bb7e-1eca1a8617d5 ``` 3. **发送请求并接收响应**: 配置完成后,发送HTTP GET请求,并接收返回的JSON格式响应数据。 #### 数据清洗与初步加工 获取到原始数据后,需要对其进行清洗和初步加工,以便后续的数据转换与写入操作。以下是一个简单的数据清洗示例: 1. **检查响应状态码**: 确保HTTP响应状态码为200,以确认请求成功。 2. **解析JSON响应**: 将JSON格式的响应数据解析为结构化的数据对象。例如: ```json { "requestId": "12345", "workflowName": "差旅费报销申请", "applicant": "张三", "amount": 1500, ... } ``` 3. **字段映射与转换**: 根据目标系统(如金蝶)的需求,对字段进行映射和转换。例如,将字段名从`applicant`改为`申请人`, 并将金额单位从元转换为美元(假设汇率为6.5)。 4. **处理缺失或异常值**: 对于可能缺失或异常的字段进行处理,如设置默认值或记录日志以便后续排查。 #### 实际案例应用 假设我们需要将差旅费报销申请的数据从泛微OA系统集成到金蝶系统中。具体操作步骤如下: 1. **调用API获取原始数据**: ```plaintext GET https://your-weaver-server/api/workflow/paService/getWorkflowRequest?workflowId=424&workflowIdList=2356388e-8c49-35b3-bb7e-1eca1a8617d5 ``` 2. **解析并清洗数据**: ```json { "requestId": "12345", "workflowName": "差旅费报销申请", "applicant": "张三", "amount": 1500, ... } 清洗后: { "申请单号": "12345", "流程名称": "差旅费报销申请", "申请人": "张三", "金额(美元)": 230.77, // 1500 / 6.5 ... } ``` 3. **准备写入目标系统(金蝶)** 通过上述步骤,我们实现了从泛微OA系统获取差旅费报销申请数据,并进行了初步加工,为后续的数据转换与写入奠定了基础。这一过程展示了如何利用轻易云平台高效地进行异构系统间的数据集成。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/S6.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键的一步。本文将详细探讨如何利用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终写入金蝶云星空API接口。 #### 元数据配置解析 在实现ETL转换之前,我们需要理解元数据配置。以下是主要的元数据字段及其配置: 1. **FBillTypeID**:单据类型,固定值为“QTYFD01_SYS”。 2. **FBillNo**:单据编号,从源平台直接获取。 3. **FDATE**:业务日期,通过模板变量`{{workflowMainTableInfo.sqrq}}`获取。 4. **FCONTACTUNITTYPE**:往来单位类型,固定值为“BD_Empinfo”。 5. **FCONTACTUNIT**:往来单位,通过复杂的查询和模板变量组合获取。 6. **FCURRENCYID**:币别,通过查询和模板变量组合获取。 7. **FSETTLEORGID、FPURCHASEORGID、FPAYORGID**:结算组织、采购组织、付款组织,通过模板变量`{{workflowMainTableInfo.sqgs}}`获取,并进行映射。 此外,还有一些其他重要字段,如申请部门(FDEPARTMENTID)、采购部门(FPURCHASEDEPTID)、备注(FRemarks)等,都通过类似的方法进行处理。 #### 数据转换与写入 1. **数据提取与清洗** 首先,从源平台提取原始数据。这一步通常包括调用源系统的API接口,获取所需的数据字段。提取的数据可能包含冗余信息或不符合目标系统要求的格式,因此需要进行清洗。 ```json { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型\n其他应付单-QTYFD01_SYS\n费用报销其他应付单-QTYFD02 SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "QTYFD01_SYS" } ``` 以上配置示例中,`FBillTypeID`被指定为固定值“QTYFD01_SYS”,无需额外处理。 2. **数据转换** 数据清洗完成后,进入数据转换阶段。此阶段主要是将清洗后的数据转化为目标系统所需的格式。例如,将日期格式从YYYY-MM-DD转换为金蝶云星空API所需的格式。 ```json { "field": "FDATE", "label": "业务日期", "type": "string", "describe": "业务日期", "value": "{{workflowMainTableInfo.sqrq}}" } ``` 上述配置中,业务日期通过模板变量直接映射,无需额外处理。但对于复杂字段,如币别(FCURRENCYID),则需要通过查询和模板变量组合进行转换: ```json { "field": "FCURRENCYID", "label": "币别", "type": "string", "describe": "币别", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "_findCollection find FNumber from 5740d4e3-ebe8-3548-9635-f35e1fdc983b where FCODE={{workflowMainTableInfo.bb1}}" } ``` 3. **数据加载** 最后一步是将转换后的数据写入目标系统。在本案例中,我们使用金蝶云星空API接口的批量保存功能(batchSave)。以下是请求示例: ```json { "api":"batchSave", ... ... } ``` 具体请求体包含多个字段,每个字段都根据前述步骤进行了相应的处理和转换。最终通过POST方法将这些数据发送到金蝶云星空API接口,实现数据的加载。 #### 实际应用中的注意事项 1. **字段映射与验证** 在实际应用中,需要确保每个字段都正确映射,并且所有必填字段都已提供有效值。例如,单据类型、业务日期等都是必填项,必须确保其值有效且符合目标系统要求。 2. **异常处理** 在整个ETL过程中,需要考虑各种可能出现的异常情况,例如网络问题、API调用失败等。可以通过设置重试机制和错误日志记录来提高系统的健壮性。 3. **性能优化** 对于大规模的数据集成任务,可以考虑批量处理和并行处理技术,以提高整体性能。例如,在批量保存时,可以将大批量的数据分成若干小批次进行处理,以减少单次请求的数据量,提高成功率。 通过上述步骤,我们可以高效地完成从源平台到金蝶云星空API接口的数据集成任务,实现不同系统间的数据无缝对接。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/T21.png~tplv-syqr462i7n-qeasy.image)