SD004-新增供应商资料申请审核 泛微=>金蝶技术案例分享
本篇文章聚焦于一个具体的系统对接集成案例,即将泛微OA-Http数据集成到金蝶云星空。我们实际运行的方案名称为SD004-新增供应商资料申请审核 泛微=>金蝶
,旨在实现数据的高效流动与管理,为企业提供更加便捷和透明的数据处理方式。
技术背景与需求分析
在这个集成过程中,我们需要应对以下主要挑战:
- 如何定时可靠地抓取泛微OA-Http接口数据。
- 确保大量数据快速而稳妥地写入到金蝶云星空系统中,避免漏单。
- 处理泛微OA-Http接口分页和限流问题,以确保API请求的效率和稳定性。
- 实现两个不同系统之间的数据格式转换及异常处理机制。
为了满足上述需求,我们选择使用轻易云数据集成平台,其具备强大的高吞吐量数据写入能力、实时监控与告警以及灵活的数据质量监控等特性,可以很好地支持我们完成这次复杂的数据对接任务。
接口调用与配置说明
首先,从泛微OA获取所需信息。这一步骤是通过调用接口 /api/workflow/paService/getWorkflowRequest
来实现,该接口提供了详细且可定制化的请求参数,使得我们能够准确抓取所需的供应商资料。为保证无缝对接并提高效率,我们设置了自动定时任务来批量拉取这些数据信息,通过自定义脚本来解决分页处理及限流控制问题。
其次,将从泛微OA-Http获取到的数据进行转换,并通过适配逻辑映射至金蝶云星空所接受的格式。例如,针对 Audit
API 的字段要求,将对应的信息逐一匹配,并考虑各种异常情况,如字段缺失或类型不一致。对于这些潜在的问题,我们设计了一套完善的错误重试机制,以减少因网络波动或输入数据错误引起的不必要失败。
最后,一个成功且高效运行的重要标志即数据可靠传输后的验证。这包括及时检测并纠正任何可能出现的数据不一致情况,以及保持一整套日志记录以供追溯查找。因此,我们还额外加入了实时监控工具,不仅确保每条记录都能顺利进入目标数据库,还能动态调整策略以应付突发状况,提高整体流程运行稳定性和健壮性。
调用泛微OA-Http接口获取并加工数据
在数据集成生命周期的第一步中,调用源系统的API接口是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest
来获取并加工数据。
接口配置与调用
首先,我们需要配置元数据以便正确调用泛微OA-Http接口。根据提供的元数据配置,我们可以看到以下关键参数:
- API路径:
/api/workflow/paService/getWorkflowRequest
- 请求方法:GET
- 请求参数:
workflowId
:e9流程id,值为129
workflowIdList
:中间方案ID,值为8183a586-bdfb-3e93-8573-d5e81803c5ff
这些参数将用于构建HTTP请求,以获取所需的数据。
元数据配置解析
元数据配置中的各个字段和属性如下:
{
"api": "/api/workflow/paService/getWorkflowRequest",
"effect": "QUERY",
"method": "GET",
"number": "requestId",
"id": "requestId",
"name": "requestId",
"idCheck": true,
"request": [
{"field": "workflowId", "label": "e9流程id", "type": "string", "describe": "e9流程id", "value": "129"},
{"field": "workflowIdList", "label": "workflowIdList中间方案ID", "type": "string", "describe": "workflowIdList中间方案ID", "value": "8183a586-bdfb-3e93-8573-d5e81803c5ff"}
],
"autoFillResponse": true,
"condition": [
[{"field": "currentNodeId", "logic":"eqv2", "value":"769"}]
]
}
-
API路径和方法:
api
:/api/workflow/paService/getWorkflowRequest
method
:GET
-
请求参数:
workflowId
: e9流程id,类型为字符串,值为129
workflowIdList
: 中间方案ID,类型为字符串,值为8183a586-bdfb-3e93-8573-d5e81803c5ff
-
响应处理:
autoFillResponse
: 自动填充响应结果condition
: 条件过滤,仅当currentNodeId
等于769
时处理该请求
数据请求与清洗
在实际操作中,我们通过GET方法向指定的API路径发送请求,并附带必要的查询参数。以下是一个示例HTTP请求:
GET /api/workflow/paService/getWorkflowRequest?workflowId=129&workflowIdList=8183a586-bdfb-3e93-8573-d5e81803c5ff HTTP/1.1
Host: [泛微OA服务器地址]
成功发送请求后,系统将返回包含所需数据的响应。此时,我们需要对返回的数据进行清洗和处理,以确保其符合后续处理步骤的要求。
数据转换与写入
在完成数据请求与清洗后,下一步是将清洗后的数据进行转换,并写入目标系统。在本案例中,目标系统为金蝶ERP系统。具体的数据转换逻辑和写入操作将在生命周期的第二阶段详细讨论。
条件过滤与自动填充
在元数据配置中,我们还设置了条件过滤和自动填充响应结果:
- 条件过滤:仅当返回的数据中字段
currentNodeId
等于769
时,才会处理该条记录。
"condition":[[{"field":"currentNodeId","logic":"eqv2","value":"769"}]]
- 自动填充响应结果:设置了
autoFillResponse: true
,意味着系统会自动解析并填充响应结果到预定义的数据结构中。
通过以上配置和操作,我们能够高效地从泛微OA系统获取所需的数据,并进行初步清洗和处理,为后续的数据转换与写入打下坚实基础。这种全透明可视化的操作界面不仅提升了业务透明度,还显著提高了工作效率。
使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将泛微系统中的新增供应商资料申请审核数据转换并写入金蝶云星空API接口。
元数据配置解析
在进行ETL转换之前,我们需要了解目标平台API接口的元数据配置。以下是金蝶云星空API接口的元数据配置:
{
"api": "Audit",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"FormId","label":"FormId","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BD_Supplier"},
{"field":"Numbers","label":"Numbers","type":"string","describe":"111","value":"{requestName}"},
{"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"}
]
}
数据请求与清洗
在ETL过程中,首先需要从泛微系统中提取新增供应商资料申请审核的数据。假设我们已经通过轻易云平台完成了这一阶段,并获得了原始数据。接下来,我们需要对这些原始数据进行清洗和预处理,以确保其符合目标平台的要求。
数据转换与写入
根据元数据配置,我们需要将清洗后的数据转换为金蝶云星空API接口能够接受的格式。具体步骤如下:
- 设置表单ID:字段
FormId
必须填写金蝶的表单ID,在本例中为BD_Supplier
。 - 设置请求名称:字段
Numbers
代表供应商编号或名称,这里使用占位符{requestName}
来动态填充实际值。 - 设置交互标志:字段
InterationFlags
用于指定交互标志,例如允许负库存标识。在本例中,我们使用默认值STK_InvCheckResult
。 - 忽略交互标志:字段
IgnoreInterationFlag
为布尔类型,默认为true。 - 网络控制:字段
NetworkCtrl
也是布尔类型,默认为false。 - 验证工作流实例:字段
IsVerifyProcInst
用于指定是否检验单据关联运行中的工作流实例,同样为布尔类型,默认为false。
通过上述步骤,我们可以构建出一个符合金蝶云星空API接口要求的数据结构。例如:
{
"FormId": "BD_Supplier",
"Numbers": "供应商编号123",
"InterationFlags": "STK_InvCheckResult",
"IgnoreInterationFlag": true,
"NetworkCtrl": false,
"IsVerifyProcInst": false
}
调用API接口
最后一步是通过HTTP POST方法将转换后的数据发送到金蝶云星空API接口。以下是一个示例代码片段,用于演示如何实现这一过程:
import requests
import json
url = 'https://api.kingdee.com/Audit'
headers = {'Content-Type': 'application/json'}
data = {
"FormId": "BD_Supplier",
"Numbers": "供应商编号123",
"InterationFlags": "STK_InvCheckResult",
"IgnoreInterationFlag": True,
"NetworkCtrl": False,
"IsVerifyProcInst": False
}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code == 200:
print("Data successfully written to Kingdee Cloud.")
else:
print(f"Failed to write data: {response.status_code}")
通过上述代码,我们可以将处理后的供应商资料成功写入到金蝶云星空系统中,从而完成整个ETL转换和写入过程。
以上内容详细介绍了如何利用轻易云数据集成平台,将泛微系统中的新增供应商资料申请审核数据进行ETL转换,并最终写入到金蝶云星空API接口。这一过程不仅提高了业务流程的自动化程度,也确保了不同系统之间的数据无缝对接。