金蝶云星空API接口数据转化:轻易云平台的ETL实践案例

  • 轻易云集成顾问-孙传友
### 泛微OA-Http到金蝶云星空数据集成案例分享:FD003非生产性付款申请 在企业级应用系统中,高效的数据对接和集成是确保业务流程顺畅运行的关键。在本技术案例中,我们将详细介绍如何使用轻易云数据集成平台,实现泛微OA-Http系统中的非生产性付款申请数据(API接口为:/api/workflow/paService/getWorkflowRequest),与金蝶云星空进行高效、可靠的数据对接及写入操作(API接口为:batchSave)。 本次集成解决方案命名为“FD003-非生产性付款申请 泛微 => 金蝶付款单-481”,其核心目标是实现数据从泛微OA-Http系统的准确提取,并无缝快速地批量写入至金蝶云星空。我们重点关注以下几个技术要点: 1. **大规模数据处理**: - 支持高吞吐量的数据写入能力,使得大量来自泛微OA-Http的审批请求能迅速被传输并录入到金蝶云星空,极大提升了整体流程效率。 2. **实时监控与告警机制**: - 集成过程中,通过集中式监控和告警系统,实时跟踪每个任务的状态和性能,以确保所有步骤都如预期般执行。这在大型跨平台项目中尤为重要,有助于及时发现并解决潜在问题。 3. **自定义数据转换逻辑**: - 为适应不同系统间的数据格式要求,配置了灵活的自定义转换逻辑,从而保证由泛微OA-Http获取的数据能够正确映射到金蝶云星空所需结构中,这是顺利对接的重要前提。 4. **异常处理及重试机制**: - 针对可能出现的网络波动或资源限制等异常情况,设计了完善的错误检测和自动重试机制,以确保不漏单、不重单,提高整体稳定性。 5. **分页及限流管理**: - 为优化从泛微OA-Http获取大量历史记录时服务器压力,同时规避频繁调用带来的限流风险,我们采用了有效分页策略,从而平衡性能与功能需求。 6. **可视化操作界面及日志记录**: - 使用轻易云提供的可视化工具设计整个工作流,各环节一目了然;同时启用全面日志记录,对各类操作进行追溯分析,这对于调试和维护同样意义重大。 通过上述方法,我们不仅实现了两个异构系统间无缝的数据交互,更提升了整个支付审批业务线上的透明度和自动化程度。接下来我们将进入具体实现细节,其中包括 ![如何开发用友BIP接口](https://pic.qeasy.cloud/D17.png~tplv-syqr462i7n-qeasy.image) ### 调用泛微OA-Http接口获取并加工数据的技术案例 在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的第一步。本文将深入探讨如何通过调用泛微OA-Http接口`/api/workflow/paService/getWorkflowRequest`来获取并加工数据,以实现非生产性付款申请的集成方案。 #### 接口调用配置 首先,我们需要配置元数据,以便正确调用泛微OA-Http接口。以下是关键配置项: ```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": "481"}, {"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调用**:通过GET方法请求`/api/workflow/paService/getWorkflowRequest`接口,传递必要的参数如`workflowId`和`workflowIdList`。这些参数用于指定特定的工作流和方案ID。 2. **条件过滤**:在请求过程中,我们使用条件过滤来确保只获取符合特定条件的数据。例如,过滤字段`workflowMainTableInfo.fklx`等于“预付款”或“Prepayment”。 3. **自动填充响应**:配置中的`autoFillResponse: true`表示系统会自动处理并填充响应数据,这一步骤极大简化了后续的数据处理工作。 #### 数据转换与写入 在获取并清洗数据后,下一步是进行数据转换和写入。这部分操作通常包括: 1. **数据映射**:将从泛微OA获取的数据映射到目标系统(如金蝶付款单)的字段。这一步需要确保字段类型和格式的一致性。 2. **数据转换**:根据业务需求,对某些字段进行必要的转换。例如,将日期格式从YYYY-MM-DD转换为目标系统所需的格式。 3. **写入目标系统**:最终,将处理好的数据写入目标系统。在本案例中,是将非生产性付款申请的数据写入金蝶付款单。 #### 技术细节与注意事项 1. **接口安全性**:确保API调用过程中的安全性,使用HTTPS协议,并在请求头中添加必要的认证信息(如Token)。 2. **错误处理**:在API调用和数据处理过程中,必须加入完善的错误处理机制。例如,当API返回错误码时,应记录日志并通知相关人员进行人工干预。 3. **性能优化**:对于大批量数据请求,可以考虑分页查询或批量处理,以减少单次请求的数据量,提高整体性能。 4. **实时监控**:利用轻易云平台提供的实时监控功能,随时跟踪数据流动和处理状态,及时发现并解决潜在问题。 通过上述步骤,我们可以高效地调用泛微OA-Http接口获取并加工非生产性付款申请的数据,实现不同系统间的数据无缝对接。这不仅提升了业务透明度和效率,也为后续的数据集成奠定了坚实基础。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台进行金蝶云星空API接口的ETL转换 在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何配置和实现这一过程。 #### 数据请求与清洗 首先,我们需要从源平台获取原始数据,并对其进行初步清洗和处理。这一步骤通常包括数据的格式化、去重、校验等操作,以确保后续步骤的数据质量。 #### 数据转换与写入 接下来,我们重点关注如何利用轻易云数据集成平台,将清洗后的数据转换为金蝶云星空API接口所能接受的格式,并最终写入目标系统。以下是具体的配置和实现细节。 ##### 配置元数据 根据提供的元数据配置,我们需要将不同字段映射到金蝶云星空API接口相应的字段。以下是关键字段及其配置说明: 1. **单据编号(FBillNo)** ```json {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号"} ``` 该字段直接从源数据中获取,无需额外处理。 2. **单据类型(FBillTypeID)** ```json {"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"} ``` 这里使用了`ConvertObjectParser`解析器,将固定值`FKDLX02_SYS`转换为金蝶系统可识别的格式。 3. **币别(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.bberp}}"} ``` 使用动态查询方式,根据源数据中的`bberp`字段值,在指定集合中查找对应的`FNumber`。 4. **业务日期(FDATE)** ```json {"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{workflowMainTableInfo.sqrq}}"} ``` 直接映射源数据中的`申请日期(sqrq)`字段。 5. **结算组织(FSETTLEORGID)** ```json {"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}}"} ``` 根据申请公司名称,在指定集合中查找对应的结算组织编码。 6. **付款组织(FPAYORGID)** ```json {"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}}"} ``` 与结算组织类似,使用相同的方法查找对应的付款组织编码。 7. **往来单位类型和往来单位** - 往来单位类型: ```json {"field":"FCONTACTUNITTYPE","label":"往来单位类型","type": "string", "describe": "往来单位类型\n部门-BD_Department\n员工-BD_Empinfo\n其他往来单位-FIN-OTHERS\n供应商-BD-Supplier\n客户-BD-Customer", "value": "_function case '{{detail_0.0.wldwlx_FV}}' when '0' then 'BD_Supplier' when '1' then 'BD_Customer' when '3' then 'ORG_Organizations' when '2' then 'FIN_OTHERS' end"} ``` - 往来单位: ```json {"field": "FCONTACTUNIT", "label": "往来单位", "type": "string", "describe": "往来单位", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "_function case '{{detail_0.0.wldwlx_FV}}' when '0' then '{{detail_0.0.gysbh}}' when '1' then '{{detail_0.0.khbh}}' when '3' then '{{detail_0.0.zzbh}}' when '2' then '{{detail_0.0.qtwlbh}}' end"} ``` 根据不同的往来单位类型,选择对应的数据字段进行映射和转换。 8. **收款单位类型和收款单位** - 收款单位类型: ```json {"field": "FRECTUNITTYPE", "label": "收款单位类型", "type": "string", "describe": "收款单位类型", "value": "_function case '{{detail_0.0.wldwlx_FV}}' when '0' then 'BD_Supplier' when '1' then 'BD_Customer' when '3' then 'ORG_Organizations' when '2' then 'FIN_OTHERS' end"} ``` - 收款单位: ```json {"field": "FRECTUNIT", "label": "收款单位", "type": "string", "describe": "收款单位", parser: { name: ConvertObjectParser, params: FNumber }, value: _function case {{ detail_0 . 0 . wldwlx_FV }}when 0 then {{ detail_0 . 0 . gysbh }}when 1 then {{ detail_0 . 0 . khbh }}when 3 then {{ detail_0 . 0 . zzbh }}when 2 then {{ detail_0 . 0 . qtwlbh }}end} ``` 同样地,根据不同的收款单位类型,选择对应的数据字段进行映射和转换。 9. **业务类型(FBUSINESSTYPE)** ```json { field: FBUSINESSTYPE, label: 业务类型, type: string, describe: 销售业务 -1 \n采购业务 -2 \n其他业务 -3 \n工资发放 -4 \n费用报销 -5 \n内部利息 -6 , value:3 } ``` 10. **备注(FREMARK)** ```json { field: FREMARK, label:备注, type:string, describe:备注, value:{{ workflowMainTableInfo.nrsm }} } ``` 11. **自定义单号(F_XDW_OANO)** ```json { field:F_XDW_OANO, label:自定义单号, type:string, value:{{ workflowMainTableInfo.lcbh }} } ``` 12. **应付金额(FPAYTOTALAMOUNTFOR_H)** 和 **实付金额(FREALPAYAMOUNTFOR_H)** ```json { field: FPAYTOTALAMOUNTFOR_H, label: 应付金额, type:string,value :{{ workflowMainTableInfo.jehj } }} { field:FREALPAYAMOUNTFOR_H,label :实付金额,type : string,value :{{ workflowMainTableInfo.ytbce } }} ``` 13. **预付款(F_XDW_PAYMENT)** ```json { field:F_XDW_PAYMENT,label :预付款,type : string,value :{{ workflowMainTableInfo.yfk } }} ``` 14. **付款单明细 (FPAYBILLENTRY)** 包含多个子字段,如结算方式、费用承担部门、应付金额等。 ```json { field:"FPAYBILLENTRY", label:"付款单明细", type:"array", describe:"付款单明细", value:"detail_0", children:[ { field:"FSETTLETYPEID", label:"结算方式", type:"string", describe:"结算方式", parser:{ name:"ConvertObjectParser", params:"FNumber" }, value:"JSFS04_SYS" }, ... ] } ``` #### API调用与写入 在完成上述配置后,我们通过轻易云平台调用金蝶云星空API接口,将转换后的数据批量保存到目标系统中。具体调用如下: ```javascript const requestData = { FormId: AP_PAYBILL, Operation: BatchSave, IsAutoSubmitAndAudit:false, IsVerifyBaseDataField:true, Model:{ FBillNo:data.FBillNo, ... FPAYBILLENTRY:[...] ... // Other fields as configured above. } }; axios.post('https://api.kingdee.com/batchSave', requestData) .then(response => { console.log('Data saved successfully:', response.data); }) .catch(error => { console.error('Error saving data:', error); }); ``` 通过以上步骤,我们成功实现了从源平台到金蝶云星空API接口的数据ETL转换,并将处理后的数据写入目标系统。这一过程充分利用了轻易云数据集成平台强大的元数据配置功能,实现了高效、透明的数据集成。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/T14.png~tplv-syqr462i7n-qeasy.image)