泛微OA与金蝶云星空对接方案:从获取数据到系统写入

  • 轻易云集成顾问-曾平安
### 系统对接集成案例分享:泛微OA-Http数据集成到金蝶云星空 在企业的日常运营中,高效的数据传输和准确的业务处理是至关重要的。在本篇技术案例中,我们将探讨如何通过轻易云数据集成平台,将泛微OA系统中的非生产性付款申请数据高效、稳定地传输到金蝶云星空,具体方案名称为FD003-非生产性付款申请 泛微=>金蝶付款单-393。 本次对接主要思路如下: **一、高吞吐量的数据写入能力** 为了满足高频率业务需求,本方案支持大量数据快速写入。通过调优数据库连接池、并发请求数和批量处理策略来实现,并有效监控每个写入操作,以确保其成功率。 **二、实时监控与告警系统** 利用平台提供的集中式监控和告警功能,对整个数据流动过程进行追踪,及时捕获异常状态。用户可自定义告警规则,当出现错误或性能瓶颈时,立即通知相关人员进行干预,从而保证关键任务顺利完成。 **三、自定义转换逻辑与分页限流处理** 针对泛微OA-Http接口(/api/workflow/paService/getWorkflowRequest)的获取数据需求,根据实际场景定制了特定转换逻辑,以兼容不同业务字段格式。同时,为解决接口返回结果过多带来的压力,通过分页和限流机制合理调配请求频率及数量,避免系统资源耗尽导致服务不稳定。 **四、API资产管理与使用优化** 在对接过程中,通过轻易云平台统一视图控制台全面掌握泛微OA-Http与金蝶云星空API调用情况,实现资源有效利用。例如,在调用金蝶云星空batchSave API时,根据最佳实践配置参数以提高效率,同时设置日志记录详细跟踪各步骤执行状况。 最终,通过以上技术手段,实现了从泛微OA向金蝶云星空的数据迁移不仅可靠且高效。本案例亦涵盖了故障恢复机制、API响应时间优化等高级主题,更深入解析请参见后续内容部分。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/D25.png~tplv-syqr462i7n-qeasy.image) ### 调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据。本文将深入探讨如何通过轻易云数据集成平台调用泛微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": "393" }, { "field": "workflowIdList", "label": "workflowIdList中间方案ID", "type": "string", "value": "2356388e-8c49-35b3-bb7e-1eca1a8617d5" } ], "autoFillResponse": true, "condition_bk": [ [ { "field": "workflowMainTableInfo.fklx", "logic": "eqv2", "value": "预付款" } ] ], "condition": [ [ { "field": "workflowMainTableInfo.fklx", "logic": "eqv2", "value": "预付款" }, { "field": "workflowMainTableInfo.fklx", "logic": "eqv2", "value": "Prepayment" } ] ] } ``` #### 元数据解析 1. **API路径**:`/api/workflow/paService/getWorkflowRequest` - 指定了我们要调用的泛微OA接口路径。 2. **请求方式**:`GET` - 使用HTTP GET方法来请求数据。 3. **参数配置**: - `workflowId`: e9流程ID,固定值为`393`。 - `workflowIdList`: 中间方案ID,固定值为`2356388e-8c49-35b3-bb7e-1eca1a8617d5`。 4. **条件过滤**: - `condition_bk`和`condition`字段用于指定过滤条件,这里我们设置了两个条件: - `workflowMainTableInfo.fklx = '预付款'` - `workflowMainTableInfo.fklx = 'Prepayment'` #### 数据请求与清洗 在完成元数据配置后,我们可以开始进行实际的数据请求和清洗工作。以下是具体步骤: 1. **发送请求**: 根据配置好的元数据,通过HTTP GET方法向泛微OA接口发送请求,获取符合条件的数据。 2. **响应处理**: 接收到响应后,平台会自动填充响应内容(autoFillResponse: true),确保返回的数据格式化并可供后续处理使用。 3. **数据清洗**: 根据业务需求,对返回的数据进行清洗和转换。例如,可以对字段进行重命名、类型转换、去除无效数据等操作。 #### 实际案例 假设我们从泛微OA接口获取到以下JSON响应: ```json { “data”: [ { “requestId”: “12345”, “workflowMainTableInfo”: { “fklx”: “预付款”, “amount”: “1000” } }, { “requestId”: “67890”, “workflowMainTableInfo”: { “fklx”: “Prepayment”, “amount”: “2000” } } ] } ``` 根据我们的过滤条件,系统会自动筛选出符合条件的数据条目。在这个例子中,两条记录都符合条件,因此会被保留下来。 #### 数据转换与写入 在完成数据清洗后,我们可以将处理后的数据转换为目标系统所需的格式,并写入目标系统。在本案例中,目标系统是金蝶付款单。具体的转换和写入过程包括: 1. **字段映射**: 将源系统中的字段映射到目标系统中的相应字段。例如,将`requestId`映射到金蝶付款单中的唯一标识字段。 2. **格式转换**: 根据目标系统的要求,对数据格式进行必要的转换。例如,将金额字段从字符串类型转换为数值类型。 3. **写入操作**: 使用轻易云平台提供的写入功能,将处理后的数据批量写入金蝶付款单系统中。 通过以上步骤,我们实现了从泛微OA到金蝶付款单的数据集成。这一过程不仅保证了数据的一致性和准确性,还极大地提升了业务处理效率。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,使其符合目标平台金蝶云星空API接口所能接收的格式,并最终写入目标平台。本文将详细介绍如何使用轻易云数据集成平台配置元数据,实现这一过程。 #### 配置元数据 首先,我们需要配置元数据,以便将源平台的数据转换为目标平台所需的格式。以下是关键的元数据配置: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型\n采购业务付款单-FKDLX01_SYS\n其他业务付款单-FKDLX02_SYS\n工资发放付款单-FKDLX03_SYS\n费用报销付款单-FKDLX04 SYS\n资金上划付款单-FKDLX05 SYS\n内部利息付款单-FKDLX06 SYS\n资金调拨付款单-FKDLX07_SYS\n保证金付款单-FKDLX08 SYS","parser":{"name":"ConvertObjectParser","params":"FNUMBER"},"value":"FKDLX02_SYS"}, {"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FNumber from 5740d4e3-ebe8-3548-9635-f35e1fdc983b where FCODE={{workflowMainTableInfo.bberp}}"}, {"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{workflowMainTableInfo.sqrq}}"}, {"field":"FSETTLEORGID","label":"结算组织","type":"string","describe":"结算组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FNumber from 4d9cb35a-56f5-36c7-b34a-f64db755b1f1 where FName={{workflowMainTableInfo.sqgs}}"}, {"field":"FPAYORGID","label":"付款组织","type":"string","describe":"付款组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FNumber from 4d9cb35a-56f5-36c7-b34a-f64db755b1f1 where FName={{workflowMainTableInfo.sqgs}}"}, {"field":"FCONTACTUNITTYPE","label":"往来单位类型","type":"string","describe":"","value":"'{{detail_0.0.wldwlx_FV}}'=='0'?'BD_Supplier':'{{detail_0.0.wldwlx_FV}}'=='1'?'BD_Customer':'{{detail_0.0.wldwlx_FV}}'=='3'?'ORG_Organizations':'FIN_OTHERS'"}, {"field":"FCONTACTUNIT", "label": "往来单位", "type": "string", "describe": "", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value":"'{{detail_0.0.wldwlx_FV}}'=='0'? '{{detail_0.0.gysbh}}':'{{detail_0.0.wldwlx_FV}}'=='1'? '{{detail_0.0.khbh}}':'{{detail_0.0.wldwlx_FV}}'=='3'? '{{detail_0.0.zzbh}}':'{{detail_0.0.qtwlbh}}'" }, {"field": "FPAYBILLENTRY", "label": "付款单明细", "type": "array", "describe": "", "value": "{{ detail }}", ... // 此处省略其他字段 ... } ], ... } ``` #### 数据提取与清洗 在这一阶段,我们从源系统中提取原始数据,并进行必要的清洗和预处理。通过上述元数据配置中的`request`字段,我们可以定义每个字段的数据来源和转换规则。例如,`FBillNo`表示从源系统中提取的单据编号,而`FBillTypeID`则通过固定值`FKDLX02_SYS`指定为“其他业务付款单”。 #### 数据转换 在数据转换过程中,使用了多个解析器(如`ConvertObjectParser`)和函数(如`case`语句)来将源数据转换为目标系统所需的格式。例如: ```json {"field": "FCURRENCYID", "label": "币别", "type": "string", "describe": "", "parser":{"name": "ConvertObjectParser", "params": ["FNumber"]}, "value":"'{{workflowMainTableInfo.bberp}}'"} ``` 这里,使用了一个名为`ConvertObjectParser`的解析器,将币别代码从源系统格式转换为金蝶云星空所需的格式。 #### 数据加载 最后一步是将转换后的数据通过API接口写入到金蝶云星空。我们使用POST方法调用批量保存接口: ```json { ... "method": "POST", ... } ``` 在这个过程中,确保所有字段都已正确映射并且符合目标系统的要求。特别要注意的是,某些字段可能需要进行额外的验证或处理,例如基础资料验证(IsVerifyBaseDataField)。 #### 实际案例 假设我们有一条来自泛微系统的数据记录,需要将其转化并写入到金蝶云星空中。具体步骤如下: 1. **提取原始数据**:从泛微系统中获取申请信息,包括申请日期、申请公司等。 2. **清洗与预处理**:根据业务需求,对原始数据进行清洗,例如去除无效字符、标准化日期格式等。 3. **字段映射与转换**:使用配置好的元数据,将每个字段映射到金蝶云星空所需的格式。例如,将“申请公司”映射为“结算组织”。 4. **调用API接口**:通过HTTP POST请求,将处理好的数据发送到金蝶云星空。 通过以上步骤,我们可以实现从泛微系统到金蝶云星空的数据无缝对接,有效提升了业务流程的自动化程度和效率。 以上内容展示了如何利用轻易云数据集成平台进行ETL转换,并将处理后的数据写入到金蝶云星空API接口。这一过程不仅简化了复杂的数据处理任务,还确保了各个环节的数据准确性和一致性。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/T24.png~tplv-syqr462i7n-qeasy.image)