使用轻易云平台进行ETL转换并写入金蝶云星空

  • 轻易云集成顾问-林峰
### SD001-生产订单审批 泛微=>金蝶采购订单--432 案例分享 在此次项目中,我们面临的挑战是将泛微OA系统中的生产订单审批数据高效集成到金蝶云星空的采购订单模块。为实现这一目标,选择使用轻易云数据集成平台,并通过其支持的数据处理能力和丰富的API接口管理功能,来确保对接过程顺利进行。 为了获取泛微OA系统中的生产订单审批数据,我们调用了`/api/workflow/paService/getWorkflowRequest` API接口,该接口能够提供精准的数据捕获。而在数据写入方面,则利用了金蝶云星空的`batchSave` API,以实现批量数据写入,从而满足高吞吐量需求。 首先,需要解决的是如何确保从泛微OA抓取的数据不漏单。通过定时任务可靠地调用上述API,结合分页和限流策略,可以持续稳定地获取最新审批结果。同时,为适应两套系统之间的数据格式差异,我们设计并实施了一整套自定义转换逻辑,将泛微OA返回的数据字段映射为金蝶云星空所需格式。 在监控与告警环节上,通过集中化控制台实时跟踪每一次数据传输状态,一旦出现异常状况即刻触发告警,并记录详细日志以便后续分析与重试。这些措施有效提高了整个流程的可视性和可靠性,也使得潜在问题得以及早发现并处理。 此外,通过轻易云提供的可视化设计工具,对于整个集成过程进行了明确规划,使各步骤直观明了、易于管理。在实际运行过程中,这一方案表现出了极高效率,不但显著提升了业务操作便利度,同时也保证了数据准确且无遗漏传递到目标系统。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/D6.png~tplv-syqr462i7n-qeasy.image) ### 调用泛微OA-Http接口获取并加工数据的技术案例 在数据集成生命周期的第一步,调用源系统接口获取数据是至关重要的。本文将详细探讨如何通过轻易云数据集成平台调用泛微OA-Http接口 `/api/workflow/paService/getWorkflowRequest` 获取并加工数据。 #### 接口调用配置 首先,我们需要配置元数据以便正确调用泛微OA的API接口。以下是元数据配置的关键部分: ```json { "api": "/api/workflow/paService/getWorkflowRequest", "effect": "QUERY", "method": "GET", "number": "requestId", "id": "requestId", "name": "id", "idCheck": true, "request": [ {"field": "workflowId", "label": "e9流程id", "type": "string", "value": "432"}, {"field": "workflowIdList", "label": "workflowIdList中间方案ID", "type": "string", "value": "8183a586-bdfb-3e93-8573-d5e81803c5ff"} ], "autoFillResponse": true, "condition_bk": [ [{"field": "currentNodeName", "logic": "like", "value": "归档"}, {"field":"detail_0.xm","logic":"like","value":"1.wafer"}] ], "condition":[ [{"field":"detail_0.xm","logic":"like","value":"wafer"}] ] } ``` #### 配置解析 1. **API路径和请求方法**: - `api`: `/api/workflow/paService/getWorkflowRequest` - `method`: `GET` 我们使用GET方法来请求泛微OA系统中的工作流信息。 2. **请求参数**: - `workflowId`: 固定值为`432`,表示特定的工作流ID。 - `workflowIdList`: 固定值为`8183a586-bdfb-3e93-8573-d5e81803c5ff`,表示中间方案ID。 3. **条件过滤**: - `condition_bk`: 用于备选条件过滤,例如当前节点名称包含“归档”且细节字段`xm`包含“1.wafer”。 - `condition`: 主条件过滤,例如细节字段`xm`包含“wafer”。 4. **自动填充响应**: - `autoFillResponse`: 设置为`true`,表示自动填充响应数据。 #### 实际调用与处理 在实际操作中,我们通过轻易云平台配置上述元数据后,可以进行如下步骤: 1. **发送请求**: 平台根据配置自动生成并发送HTTP GET请求到指定API路径,并附带必要的查询参数。 2. **接收响应**: 平台接收到泛微OA系统返回的数据后,会根据配置进行初步处理。例如,自动填充响应内容到相应的数据结构中。 3. **数据清洗与转换**: 根据条件过滤器(如`condition_bk`和`condition`),对接收到的数据进行清洗和筛选。确保仅保留符合业务逻辑的数据记录。 4. **后续处理**: 清洗后的数据可以进一步转换或直接写入目标系统,如金蝶采购订单系统。这一步通常涉及到映射字段、格式转换等操作。 #### 技术要点 - **异步处理**:轻易云平台支持全异步处理,确保在高并发情况下依然能够高效地完成数据集成任务。 - **多系统兼容性**:平台能够无缝对接不同类型的异构系统,实现跨平台的数据集成。 - **实时监控与透明化操作**:整个过程具有实时监控功能,每个环节都可视化展示,提升了业务透明度和效率。 通过上述步骤和技术要点,我们可以高效地实现从泛微OA系统获取工作流数据,并进行必要的清洗和加工,为后续的数据转换与写入奠定基础。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/S16.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成的生命周期中,将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,是至关重要的一步。本文将详细探讨这一过程,重点关注API接口的技术实现。 #### 1. 数据请求与清洗 首先,我们需要从源平台(如泛微)获取数据。这些数据通常包含生产订单审批的信息。通过轻易云的数据请求功能,我们可以获取到这些信息,并进行初步清洗,以确保数据的准确性和一致性。 #### 2. 数据转换与写入 在完成数据请求与清洗后,接下来就是将这些数据转换为金蝶云星空API能够接受的格式,并最终写入目标平台。以下是具体步骤和技术细节: ##### 配置元数据 根据提供的元数据配置,我们需要将各字段映射到金蝶云星空API所需的格式。以下是一些关键字段及其配置方式: - **单据类型(FBillTypeID)**: ```json { "field": "FBillTypeID", "label": "单据类型", "type": "string", "value": "CGDD01_SYS" } ``` 此字段表示标准采购订单,值为`CGDD01_SYS`。 - **单据编号(FBillNo)**: ```json { "field": "FBillNo", "label": "单据编号", "type": "string", "value": "{{workflowMainTableInfo.lcbh}}" } ``` 此字段从源平台的数据中提取,使用`{{workflowMainTableInfo.lcbh}}`作为动态变量。 - **采购日期(FDate)**: ```json { "field": "FDate", "label": "采购日期", "type": "string", "value": "{{workflowMainTableInfo.sqrq}}" } ``` 此字段同样从源平台的数据中提取,使用`{{workflowMainTableInfo.sqrq}}`作为动态变量。 - **采购组织(FPurchaseOrgId)**: ```json { "field": "FPurchaseOrgId", "label": "采购组织", "type": "string", "parser": {"name":"ConvertObjectParser","params":"FNumber"}, "value":"{{workflowMainTableInfo.wszt}}" } ``` 此字段需要通过`ConvertObjectParser`解析器,将采购组织编码转换为目标平台所需的格式。 - **供应商(FSupplierId)**: ```json { "field": "FSupplierId", "label": "供应商", "type": "string", "parser":{"name":"ConvertObjectParser","params":"FNumber"}, "value":"{{workflowMainTableInfo.gysbh}}" } ``` 同样,通过解析器将供应商编码转换为目标平台所需格式。 ##### 明细信息配置 对于明细信息(FPOOrderEntry),我们需要处理多个子字段,如物料编码、采购数量、单价等: ```json { "field":"FPOOrderEntry", ... } ``` 每个子字段都需要从源平台的数据中提取并进行相应的转换。例如: - **物料编码(FMaterialId)**: ```json { "field":"FMaterialId", ... "value":"{{detail_0.wlbh}}" } ``` - **采购数量(FQty)**: ```json { ... "value":"{{detail_0.sl}}" } ``` ##### 财务信息配置 财务信息(FPOOrderFinance)的配置同样重要,需要处理结算币别、定价时点、汇率类型等字段: ```json { "field":"FPOOrderFinance", ... } ``` 例如: - **结算币别(FSettleCurrId)**: ```json { ... "value":"_findCollection find FNumber from ... where FCODE={{detail_0.0.bzerp}}" ... } ``` ##### 批量保存操作 最后,我们通过批量保存操作将所有配置好的数据写入金蝶云星空: ```json { "api":"batchSave", "method":"POST", ... } ``` 其中,关键参数包括业务对象表单ID(FormId)、执行操作(Operation)、是否提交并审核(IsAutoSubmitAndAudit)等: ```json { "field":"FormId", "value":"PUR_PurchaseOrder" }, { "field":"Operation", "value":"BatchSave" }, { "field":"IsAutoSubmitAndAudit", "value":"true" } ``` #### 总结 通过上述步骤,我们成功地将源平台的数据经过ETL转换,转化为金蝶云星空API能够接受的格式,并最终写入目标平台。这一过程不仅提高了数据处理效率,还保证了数据的一致性和准确性。在实际应用中,根据具体需求调整元数据配置,可以灵活应对各种复杂的数据集成场景。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)