从金蝶到泛微:轻易云平台的ETL最佳实践

  • 轻易云集成顾问-谢楷斌
### SD004 案例分享:金蝶云星空数据集成到泛微OA-Http 在数据驱动的业务环境中,高效的数据集成对企业的信息流畅通至关重要。本文将以具体项目"SD004-新增供应商资料申请新增 金蝶=>泛微 (逐单查询)"为切入点,深入探讨如何通过轻易云数据集成平台实现金蝶云星空和泛微OA之间的无缝对接。 在这个案例中,我们需要从金蝶云星空系统获取供应商资料,并将其准确地写入到泛微OA 系统。为了实现这一目标,我们主要运用了以下技术手段: 1. **定时可靠抓取与高吞吐量写入**: - 通过调用金蝶云星空的`ExecuteBillQuery` API接口,以定时任务的方式批量抓取最新供应商数据。 - 使用并行处理机制,确保能够快速、高效地将大量数据写入到泛微OA 的`/api/workflow/paService/doCreateRequest` API接口。 2. **实时监控和异常处理**: - 为了确保每条记录都能被成功传输与处理,我们设置了详细的数据质量监控措施。结合集中化的监控和告警系统,实时跟踪每个数据集成任务,从而及时发现并解决潜在问题。 - 对于API调用过程中的分页、限流问题以及网络波动引发的数据传输失败等状况,引入错误重试机制,通过日志记录功能来审核并手动补偿未成功的数据条目。 3. **自定义转换逻辑与格式匹配**: - 数据结构差异是跨系统集成中的常见难题。在本次方案中,根据业务需求自定义适配了多个字段映射规则,实现两套系统间格式的不一致性转换。同时,利用可视化的数据流设计工具,使整个配置过程直观简洁,并减少出错几率。 4. **安全性及性能优化**: - 针对实际运用场景,对API资产管理进行了统一视图控制,实现资源合理调度。此外,为保障大规模高频率调用下系统仍能稳定运行,对相关接口做了性能优化,包括压缩传输内容、提升响应速度等措施。 以上步骤不仅有效解决了实际操作中面临的一系列技术难题,还显著提升了整体工作效率,为企业提供更及时、更准确的信息服务奠定了基础。在接下来的部分,将详细剖析具体技术细节及流程实施策略。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口ExecuteBillQuery获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是数据处理的第一步。本文将详细探讨如何通过调用金蝶云星空的ExecuteBillQuery接口获取供应商资料,并对数据进行初步加工。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用金蝶云星空的ExecuteBillQuery接口。以下是元数据配置的关键参数: - **api**: "ExecuteBillQuery" - **effect**: "QUERY" - **method**: "POST" - **number**: "FNumber" - **id**: "FId" - **idCheck**: true 这些参数定义了我们将使用POST方法来查询金蝶云星空的数据,并确保每次查询都能唯一标识记录。 #### 请求参数设置 请求参数是接口调用的核心部分,决定了我们能获取到什么样的数据。以下是请求参数的详细配置: 1. **Limit**: 设置为500,表示每次查询最多返回500条记录。 2. **StartRow**: 用于分页查询,指定从哪一行开始读取数据。 3. **TopRowCount**: 设置为整数类型,用于控制返回结果的行数。 4. **FilterString**: 过滤条件,用于筛选特定的数据。例如: ```plaintext FModifyDate>='{{LAST_SYNC_TIME|datetime}}' and FCreateOrgId.FNumber='000' and FDocumentStatus='B' and FGroup.FName not in ('实验用品供应商','其他供应商') ``` 这个过滤条件确保我们只获取最近修改过且状态为“B”的供应商资料,同时排除特定组别的供应商。 5. **FieldKeys**: 指定要返回的字段。例如: ```plaintext {MAIN_REQUEST} ``` 6. **FormId**: 必须填写表单ID,这里使用"BD_Supplier"来表示供应商表单。 #### 数据请求与清洗 在配置好请求参数后,我们通过轻易云平台发送POST请求至金蝶云星空API。响应的数据将包含多个字段,需要进行清洗和转换,以便后续处理和写入目标系统。 例如,假设我们收到以下响应数据: ```json { "Result": [ { "FNumber": "VEN00010", "FName": "供应商A", "FModifyDate": "2023-09-15T08:00:00Z", "FCreateOrgId": {"FNumber": "000"}, "FDocumentStatus": "B", "FGroup": {"FName": "主要供应商"} }, ... ] } ``` 我们需要对这些数据进行清洗,例如将日期格式转换为目标系统所需格式、过滤掉不必要的字段等。 #### 数据转换与写入 经过清洗后的数据需要进一步转换,以符合目标系统(如泛微)的要求。这一步通常包括字段映射、值转换等操作。最终,我们将处理好的数据通过轻易云平台写入目标系统,实现无缝对接。 #### 实时监控与调试 在整个过程中,轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。这有助于快速发现并解决问题,提高业务透明度和效率。 通过以上步骤,我们成功实现了从金蝶云星空获取并加工供应商资料,为后续的数据集成打下坚实基础。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/S4.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行泛微OA-HttpAPI接口的数据转换与写入 在数据集成的生命周期中,ETL(提取、转换、加载)过程是关键的一环。本文将详细介绍如何使用轻易云数据集成平台将来自金蝶系统的数据转换为泛微OA-HttpAPI接口所能接收的格式,并最终写入目标平台。 #### 配置元数据解析 首先,我们需要理解元数据配置中的各个字段及其含义。以下是元数据配置的详细解析: ```json { "api": "/api/workflow/paService/doCreateRequest", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "workflowId", "label": "workflowId流程信息", "type": "string", "describe": "打开泛微表单后可以在URL中获取该参数", "value": "129" }, { "field": "requestName", "label": "请求名称", "type": "string", "describe": "流程标题名称", "value": "{Number}" }, { ... } ], ... } ``` #### 数据请求与清洗 在进行数据转换之前,我们需要从源系统(如金蝶)中提取数据,并对其进行清洗。假设我们已经完成了这一步,接下来我们将重点放在如何将这些清洗后的数据转换为目标系统所需的格式。 #### 数据转换与写入 1. **设置API基本信息** 根据元数据配置,我们需要向`/api/workflow/paService/doCreateRequest`这个API发送POST请求。请求体中的字段需要根据具体业务需求进行填充。 2. **构建请求体** 请求体中的字段包括`workflowId`, `requestName`, `requestLevel`, `user_id`等。以下是部分字段的详细说明及其值的来源: - `workflowId`: 固定值,代表特定流程的信息。 - `requestName`: 流程标题名称,从源系统中提取并映射到目标字段。 - `user_id`: 创建者ID,通过MongoDB查询获取。 3. **主表信息(mainData)的处理** 主表信息包含多个子字段,如申请人(sqr)、申请公司(sqgs)、申请日期(sqrq)等。这些字段需要根据源系统中的对应字段进行映射和转换。例如: - `sqr`: 从MongoDB查询创建者ID。 - `sqgs`: 从源系统中提取并直接映射。 - `sqrq`: 使用模板语言进行日期格式化。 4. **复杂字段处理** 对于一些复杂字段,如供应商类别(gyslb1),需要通过函数进行条件判断和转换: ```json { "field": "gyslb1", "label": "供应商类别", "type": "int", "value": "_function case '{FGroup_Number}' when 'A' then 0 when 'B' then 1 when 'C' then 2 when 'H' then 3 when 'L' then 4 when 'M' then 5 when 'P' then 6 when 'Q' then 7 end" } ``` 5. **最终生成请求体** 根据以上步骤,最终生成的请求体可能如下所示: ```json { "workflowId": "129", ... // 主表信息 "mainData": { ... // 子字段 ... } } ``` 6. **发送请求并处理响应** 最后,将构建好的请求体通过HTTP POST方法发送到目标API,并处理响应结果。确保在每个步骤中捕获和处理可能出现的错误,以保证数据集成过程的可靠性和稳定性。 通过以上步骤,我们实现了从金蝶系统到泛微OA-HttpAPI接口的数据转换与写入。这不仅提高了业务流程的自动化程度,也确保了不同系统之间的数据一致性和准确性。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/T20.png~tplv-syqr462i7n-qeasy.image)