企业系统数据集成:从泛微OA到金蝶云星空的最佳实践

  • 轻易云集成顾问-陈洁琳
### 案例分享:泛微OA-webservice数据集成到金蝶云星空 在企业信息化系统间进行数据集成时,如何确保数据的高效、准确流转成为关键。本文将重点分享“泛微CC02-收货通知验收流程 审批通过 => 金蝶收料通知单审核”这一系统对接案例,通过详细解析各环节的技术实现与注意事项,为类似需求提供解决思路。 轻易云数据集成平台具备高吞吐量的数据写入能力,使得大量审批通过后的收货通知能够快速、安全地传输至金蝶云星空中。在这个过程中,我们利用了集中监控和告警系统来及时跟踪并反馈每个集成任务的执行状态,对出现的问题能迅速反应和处理,以保障业务操作的可靠性和稳定性。 我们主要通过调用泛微OA-webservice接口`getWorkflowRequest`获取已批准的流程记录,并使用金蝶云星空API `Audit`完成对应的数据写入。这一过程不仅涉及到两个不同系统之间的数据转换,还需考虑分页及限流问题,确保不会因为请求量过大而导致接口异常。此外,自定义的数据转换逻辑也是此方案中的核心部分,针对特定业务需求调整映射规则,从而满足复杂多变的实际应用场景。 下一步,将详细介绍具体实现步骤与代码示例,包括如何调用泛微OA-webservice, 如何处理其返回结果,以及如何构建符合金蝶云星空要求的数据结构等。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image) ### 调用泛微OA-webservice接口getWorkflowRequest获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用泛微OA-webservice接口`getWorkflowRequest`,并对获取的数据进行加工处理。 #### 接口配置与调用 首先,我们需要根据元数据配置来设置接口调用参数。以下是元数据配置的详细信息: ```json { "api": "getWorkflowRequest", "effect": "QUERY", "method": "POST", "number": "requestName", "id": "requestId", "idCheck": true, "request": [ { "field": "workflowId", "label": "表单id", "type": "string", "describe": "111", "value": "282" }, { "field": "workflowIdList", "label": "中间表方案id", "type": "string", "value": "d2cb5f10-d1f0-3247-afa5-d8887dfb0d6c" } ], "autoFillResponse": true } ``` 根据上述配置,我们可以看到该接口的主要参数包括`workflowId`和`workflowIdList`,分别对应表单ID和中间表方案ID。这些参数将通过POST请求发送到泛微OA系统,以获取相应的工作流请求数据。 #### 数据请求与清洗 在实际操作中,我们需要确保请求参数的正确性,并对返回的数据进行清洗和预处理。以下是一个示例代码片段,用于发起HTTP POST请求并处理响应: ```python import requests import json # 定义请求URL和头信息 url = 'https://oa.example.com/webservice/getWorkflowRequest' headers = {'Content-Type': 'application/json'} # 定义请求体 payload = { 'workflowId': '282', 'workflowIdList': 'd2cb5f10-d1f0-3247-afa5-d8887dfb0d6c' } # 发起POST请求 response = requests.post(url, headers=headers, data=json.dumps(payload)) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗逻辑,例如去除无效字段、格式化日期等 cleaned_data = clean_data(data) else: print(f"Error: {response.status_code}") def clean_data(data): # 实现具体的数据清洗逻辑 # 示例:去除无效字段 cleaned_data = {k: v for k, v in data.items() if v is not None} return cleaned_data ``` 在这个示例中,我们首先定义了请求URL和头信息,然后构建了包含必要参数的请求体。通过发起POST请求,我们可以获取工作流请求数据,并对其进行初步清洗。 #### 数据转换与写入 在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标系统。在本案例中,目标系统为金蝶收料通知单审核系统。我们可以利用轻易云平台提供的数据转换功能,将清洗后的数据映射到目标系统所需的字段格式。 以下是一个示例代码片段,用于将清洗后的数据转换并写入目标系统: ```python def transform_and_write(data): # 数据转换逻辑,例如字段映射、格式转换等 transformed_data = transform_data(data) # 写入目标系统(例如金蝶) write_to_kingdee(transformed_data) def transform_data(data): # 实现具体的数据转换逻辑 transformed_data = { 'KingdeeField1': data['OAField1'], 'KingdeeField2': data['OAField2'], # 更多字段映射... } return transformed_data def write_to_kingdee(data): # 实现具体的数据写入逻辑,例如通过API调用金蝶系统接口 url = 'https://kingdee.example.com/api/receive' headers = {'Content-Type': 'application/json'} response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print("Data written successfully") else: print(f"Error: {response.status_code}") # 调用函数进行数据转换和写入 transform_and_write(cleaned_data) ``` 在这个示例中,我们定义了一个`transform_and_write`函数,该函数首先调用`transform_data`函数进行数据转换,然后调用`write_to_kingdee`函数将转换后的数据写入金蝶系统。 #### 总结 通过以上步骤,我们实现了从泛微OA系统获取工作流请求数据,并对其进行清洗、转换和写入目标系统的全过程。这一过程展示了如何利用轻易云平台高效地进行异构系统间的数据集成,为企业业务流程的自动化和优化提供了有力支持。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/S11.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源平台数据转换并写入金蝶云星空API接口 在数据集成的生命周期中,第二步至关重要,即将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式。本文将深入探讨如何使用轻易云数据集成平台,将泛微CC02-收货通知验收流程审批通过的数据转换为金蝶云星空API接口所需的格式,并最终写入目标平台。 #### 元数据配置解析 在本案例中,我们需要配置金蝶云星空的API接口元数据,以确保数据能够正确地写入目标系统。以下是具体的元数据配置: ```json { "api": "Audit", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field": "FormId", "label": "FormId", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "PUR_ReceiveBill"}, {"field": "Numbers", "label": "Numbers", "type": "array", "describe": "111"}, {"field": "Ids", "label": "Ids", "type": "string", "describe": "111", "value":"{{workflowMainTableInfo.zbzj}}"}, {"field": "InterationFlags", "label": "InterationFlags", "type":"string","describe":"字符串类型,分号分隔,格式:\"flag1;flag2;...\"(非必录) 例如(允许负库存标识:STK_InvCheckResult)","value":"STK_InvCheckResult"}, {"field":"IgnoreInterationFlag","label":"IgnoreInterationFlag","type":"string","describe":"布尔类型,默认true(非必录)","value":"true"}, {"field":"NetworkCtrl","label":"NetworkCtrl","type":"string","describe":"布尔类型,默认false(非必录)","value":"false"}, {"field":"IsVerifyProcInst","label":"IsVerifyProcInst","type":"string","describe":"是否检验单据关联运行中的工作流实例,布尔类型,默认false(非必录)","value":"false"} ] } ``` #### 数据请求与清洗 首先,我们从源平台获取需要的数据。在泛微CC02-收货通知验收流程中,当审批通过后,会产生一系列相关的数据。这些数据需要经过清洗和整理,以便符合目标系统的要求。 ```json { // 示例源数据 "workflowMainTableInfo": { // 主表信息 // ... // 主键字段 zbzj zbzj: '123456' } } ``` #### 数据转换与写入 接下来,我们使用ETL工具对上述源数据进行转换,以匹配金蝶云星空API接口所需的格式。具体步骤如下: 1. **设置表单ID**:根据元数据配置,将`FormId`字段设置为`PUR_ReceiveBill`。 2. **设置主键字段**:将`Ids`字段设置为源数据中的主键字段`zbzj`。 3. **设置其他可选参数**:根据需求,可以设置或忽略其他可选参数,如`InterationFlags`, `IgnoreInterationFlag`, `NetworkCtrl`, 和 `IsVerifyProcInst`。 最终生成的请求体如下: ```json { // 转换后的请求体 { FormId: 'PUR_ReceiveBill', Numbers: [], // 此处可根据实际需求填充 Ids: '123456', InterationFlags: 'STK_InvCheckResult', IgnoreInterationFlag: true, NetworkCtrl: false, IsVerifyProcInst: false } } ``` #### API调用 最后,我们通过HTTP POST方法将上述请求体发送到金蝶云星空的API接口。确保在调用前进行必要的身份验证和权限检查。 ```javascript const axios = require('axios'); const config = { method: 'post', url: 'https://api.kingdee.com/k3cloud/api/Audit', // 金蝶云星空API地址 headers: { 'Content-Type': 'application/json' }, data : { FormId: 'PUR_ReceiveBill', Numbers: [], Ids: '123456', InterationFlags: 'STK_InvCheckResult', IgnoreInterationFlag: true, NetworkCtrl: false, IsVerifyProcInst: false } }; axios(config) .then(function (response) { console.log(JSON.stringify(response.data)); }) .catch(function (error) { console.log(error); }); ``` 以上代码展示了如何使用Axios库来调用金蝶云星空的API接口,将处理后的数据写入目标系统。 通过这种方式,我们实现了从泛微CC02到金蝶云星空的数据无缝对接,确保了业务流程的顺畅运行。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/T18.png~tplv-syqr462i7n-qeasy.image)