案例分享:泛微OA-Http数据集成到金蝶云星空
在实际项目中,实现不同系统之间的数据对接和集成,始终是企业信息化建设中的一个重要环节。在这里,我们以“SD001-生产订单审批 泛微=>金蝶采购订单--429”为例,展示如何通过API接口实现泛微OA与金蝶云星空的无缝连接。
数据获取与处理
首先,通过调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest
来抓取生产订单审批数据。为了确保数据传输的可靠性和准确性,我们设计了定时任务,以便定时从泛微OA后端稳定地拉取最新的待同步数据。
实施过程中遇到的一大挑战是如何处理分页和限流问题。由于批量拉取的数据可能非常大,一次性请求会导致网络压力过大甚至失败。因此,在每次请求中采用分页机制,每页获取一定数量的数据,并根据API返回的限流提示,自适应调整抓取频率。这种方式有效保证了高吞吐量数据环境下的持续稳定运行。
数据转换与写入
在拿到泛微OA的数据后,还需要根据业务需求进行相应的数据转换。例如,将复杂JSON结构解析并映射为符合金蝶云星空需求格式。一些特定字段可能存在名称或类型上的差异,这就需要我们自定义转换逻辑,确保最终写入到金蝶云的是正确且完整的信息。
我们使用了轻易云平台提供的可视化数据流设计工具,使得整个数据处理过程更加直观易管理。从源头提取、转换、再到目标系统写入,都能以图形界面的形式展现出来,大幅降低出错概率并提高开发效率。
最终,通过调用金蝶云星空的batchSave
API,实现大量审批单据快速、高效地批量写入目标数据库。这一步尤其考验系统兼容性和响应速度,因此我们也特别注重异常处理与错误重试机制,以防止因网络波动等原因造成部分记录丢失或重复导入。
实时监控与日志记录
为进一步提升透明度及便于运维,整个流程还加入了实时监控功能。在任何一个步骤出现问题时,可以通过集中式监控告警系统立即捕获并通知相关维护人员。同时详细记录每一条操作日志,从而做到有迹可循,为后续排查问题提供关键依据。
调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将详细探讨如何通过轻易云数据集成平台调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest
来获取并加工数据。
接口概述
该接口用于从泛微OA系统中获取工作流请求的数据。根据元数据配置,我们需要使用GET方法进行调用,并传递特定的参数以获取所需的数据。
元数据配置解析
元数据配置如下:
{
"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": "429"},
{"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"}]
]
}
数据请求与清洗
-
API调用参数设置:
workflowId
: 固定值为429
,表示特定的工作流ID。workflowIdList
: 固定值为8183a586-bdfb-3e93-8573-d5e81803c5ff
,表示中间方案ID。
-
条件过滤:
- 主条件:
detail_0.xm like 'wafer'
- 备用条件:
currentNodeName like '归档' AND detail_0.xm like '1.wafer'
- 主条件:
这些条件确保我们只获取符合特定业务需求的数据。
实现步骤
-
构建请求URL: 根据元数据配置,我们需要构建如下URL:
/api/workflow/paService/getWorkflowRequest?workflowId=429&workflowIdList=8183a586-bdfb-3e93-8573-d5e81803c5ff
-
发送HTTP GET请求: 使用轻易云平台提供的HTTP模块发送GET请求,并附带必要的认证信息(如有)。
-
处理响应数据: 响应数据将自动填充(autoFillResponse: true),我们可以直接对返回的数据进行处理和清洗。
-
应用条件过滤: 根据主条件和备用条件对返回的数据进行过滤,以确保最终结果符合业务需求。
技术案例
以下是一个具体的技术案例,展示了如何通过轻易云平台实现上述步骤:
import requests
# 构建请求URL
base_url = 'http://oa.example.com/api/workflow/paService/getWorkflowRequest'
params = {
'workflowId': '429',
'workflowIdList': '8183a586-bdfb-3e93-8573-d5e81803c5ff'
}
# 发起GET请求
response = requests.get(base_url, params=params)
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 应用主条件过滤
filtered_data = [item for item in data if 'wafer' in item['detail_0']['xm']]
# 如果主条件无匹配结果,应用备用条件过滤
if not filtered_data:
filtered_data = [item for item in data if '归档' in item['currentNodeName'] and '1.wafer' in item['detail_0']['xm']]
# 输出处理后的数据
print(filtered_data)
else:
print(f"Error: {response.status_code}")
通过上述代码,我们可以实现从泛微OA系统中获取并加工特定工作流请求的数据。这个过程不仅展示了如何调用API,还演示了如何根据业务需求对返回的数据进行清洗和过滤。
总结来说,通过轻易云平台调用泛微OA接口并处理返回的数据,可以极大地提升业务流程的自动化程度和效率。
轻易云数据集成平台ETL转换及数据写入金蝶云星空API接口
在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将深入探讨如何利用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终通过金蝶云星空API接口写入目标平台。
数据请求与清洗
首先,我们从源系统泛微中获取生产订单审批数据。该阶段主要包括数据的提取和初步清洗,以确保数据的准确性和完整性。这一步骤虽然重要,但本文重点在于下一阶段,即数据转换与写入。
数据转换与写入
在完成初步的数据提取和清洗后,接下来我们需要将这些数据转换为金蝶云星空API接口所能接受的格式,并通过API接口将其写入目标平台。以下是详细步骤:
-
配置API请求参数
根据元数据配置,我们需要设置一系列参数来构建API请求。以下是主要字段及其配置:
{ "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型\n标准采购订单:CGDD01 SYS\n标准委外订单:CGDD02 SYS\n直运采购订单:CGDD03 SYS\n资产采购订单:CGDD04 SYS\n费用采购订单:CGDD05 SYS\n补料采购订单:CGDD06 SYS\nVMI采购订单:CGDD07 SYS\n现购订单:CGDD08 SYS\n分销购销采购订单:CGDD09 SYS", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "CGDD01_SYS" }, ... ], ... }
-
字段映射与解析
每个字段都需要进行映射和解析。例如,
FBillTypeID
字段表示单据类型,其值为CGDD01_SYS
,这是标准采购订单。在此过程中,我们使用ConvertObjectParser
解析器来处理特定字段。 -
处理复杂对象
对于复杂对象如明细信息(FPOOrderEntry),我们需要逐一处理其子字段:
{ "field": "FPOOrderEntry", "label": "明细信息", "type": "array", ... "children": [ { "field": "FMaterialId", ... "value": "{{detail_0.wlbh}}" }, ... ] }
在这里,每个子字段如物料编码(FMaterialId)都需要映射到相应的数据源字段,并进行适当的解析。
-
构建完整的请求体
将所有配置好的字段整合到一个完整的JSON请求体中,以便通过POST方法发送到金蝶云星空API接口:
{ ... "otherRequest": [ { ... {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"PUR_PurchaseOrder"}, {"field":"Operation","label":"执行的操作","type":"string","describe":"执行的操作","value":"BatchSave"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"true"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"} ] ], ... }
-
发送请求并处理响应
最后,通过HTTP POST方法将构建好的请求体发送到金蝶云星空API接口,并处理返回的响应结果:
import requests url = 'https://api.kingdee.com/batchSave' headers = {'Content-Type': 'application/json'} response = requests.post(url, json=request_body, headers=headers) if response.status_code == 200: print("Data successfully written to Kingdee Cloud") else: print("Failed to write data:", response.text)
通过以上步骤,我们可以实现从泛微系统到金蝶云星空系统的数据无缝对接。轻易云数据集成平台提供了强大的元数据配置功能,使得整个过程更加高效和透明。