SD003-(委外类)生产订单新增驳回 泛微=>金蝶撤销案例分享
在现代企业的业务系统中,数据集成是确保信息流畅和高效运作的重要环节。本次案例聚焦于如何通过泛微OA-Http与金蝶云星空的数据对接,实现生产订单新增后的驳回处理,由泛微传输至金蝶进行撤销操作。
具体方案编码为SD003,在实际应用过程中,我们使用了API接口 /api/workflow/paService/getWorkflowRequest
从泛微OA获取数据,并调用金蝶云星空的 CancelAssign
接口完成数据写入。为了确保集成的可靠性,我们需要处理一些关键技术点,包括但不限于:
-
定时可靠抓取与批量数据传输:我们设计了一个定时任务,通过调用泛微OA-Http API接口,周期性地抓取新的生产订单请求。这不仅保证了即时同步,还提高了整体效率。
-
分页和限流控制:由于业务需求下的数据量较大,需要特别关注接口请求中的分页和限流问题,以避免因超出接口限制而导致的数据漏单或性能瓶颈。
-
自定义数据转换逻辑:两套系统间的数据格式存在差异,为此我们设置了一系列自定义转换规则,确保所有字段能正确映射并符合目标系统要求,实现无缝对接。
-
实时监控与错误重试机制:通过集中化监控平台,对每个步骤进行细致跟踪,一旦发现异常将自动触发告警并尝试重试,最大程度上保障集成过程平稳运行,而不影响正常业务流程。
-
高吞吐量支持及性能优化:考虑到大量生产订单在高峰期产生,本实施方案特别注重提升写入速度和吞吐能力。在实际运行中,即便面对突发的大规模数据,也能快速、稳定地将其批量导入到金蝶云星空中去。
下一步,将深入展示具体实现方式以及相关代码示例,让大家更直观地了解整个对接流程中的技术要点及应对策略。
调用泛微OA-Http接口获取并加工数据的技术案例
在数据集成过程中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何使用轻易云数据集成平台调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest
,并对获取的数据进行初步加工处理。
接口概述
泛微OA-Http接口/api/workflow/paService/getWorkflowRequest
主要用于查询特定工作流请求的信息。该接口采用GET方法,通过传递特定的参数来获取所需的数据。
元数据配置解析
根据提供的元数据配置,我们可以了解到以下关键点:
- API路径:
/api/workflow/paService/getWorkflowRequest
- 请求方法:GET
- 请求参数:
workflowId
:e9流程id,值为"406"workflowIdList
:中间方案ID,值为"8183a586-bdfb-3e93-8573-d5e81803c5ff"
- 条件过滤:仅当
currentNodeId
等于"3123"时,才会返回结果。
请求参数配置
在实际操作中,我们需要按照元数据配置中的要求构造HTTP GET请求。以下是一个示例请求URL:
https://example.com/api/workflow/paService/getWorkflowRequest?workflowId=406&workflowIdList=8183a586-bdfb-3e93-8573-d5e81803c5ff
数据过滤与条件判断
根据元数据配置中的条件过滤部分,我们需要确保只有当返回的数据中字段currentNodeId
等于"3123"时,才会进一步处理。这一步骤可以通过轻易云平台内置的条件判断功能实现。
{
"condition": [
[
{
"field": "currentNodeId",
"logic": "eqv2",
"value": "3123"
}
]
]
}
自动填充响应
元数据配置中的autoFillResponse: true
表示平台会自动将响应结果填充到后续处理流程中。这一特性极大简化了开发者的工作,使得数据处理更加高效和透明。
数据加工与清洗
在获取到符合条件的数据后,需要对其进行初步加工和清洗,以便后续的数据转换与写入。例如,可以提取关键字段、格式化日期、去除无用信息等。以下是一个简单的数据清洗示例:
{
"requestId": "12345",
"workflowId": "406",
"currentNodeId": "3123",
// 其他字段...
}
通过轻易云平台的可视化界面,可以方便地对上述JSON结构进行字段提取和转换操作。
实践案例
假设我们需要将符合条件的生产订单驳回信息从泛微OA系统同步到金蝶系统。在此过程中,我们首先调用上述接口获取生产订单信息,并通过轻易云平台进行初步清洗和加工,然后再将处理后的数据写入金蝶系统。
- 调用接口:构造GET请求并发送。
- 条件判断:检查返回结果中的
currentNodeId
是否为"3123"。 - 数据清洗:提取并格式化必要字段。
- 写入目标系统:将清洗后的数据通过轻易云平台写入金蝶系统。
这种方式不仅提高了数据集成的效率,还确保了每个环节的透明度和可追溯性。
通过以上步骤,我们实现了从泛微OA系统到金蝶系统的数据无缝对接,为企业业务流程自动化提供了有力支持。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和实现方法。
元数据配置解析
首先,我们需要理解元数据配置中的各个字段及其作用。以下是元数据配置的详细解析:
{
"api": "CancelAssign",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"FormId","label":"FormId","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"PUR_PurchaseOrder"},
{"field":"Numbers","label":"Numbers","type":"string","describe":"111","value":"_function SUBSTRING_INDEX('{requestName}', '-', 1)"},
{"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"}
]
}
数据请求与清洗
在数据请求阶段,我们从源系统获取原始数据。这些数据可能包含冗余信息或格式不符合目标系统要求,因此需要进行清洗和预处理。例如,从泛微系统获取生产订单驳回信息时,需要提取出关键信息如订单编号、驳回原因等。
数据转换与写入
接下来,我们进入数据转换阶段,将清洗后的数据按照目标系统API接口的要求进行重新组织和格式化。以下是如何将这些字段映射到金蝶云星空API接口所需格式的具体步骤:
- FormId: 固定值为
PUR_PurchaseOrder
,表示这是一个采购订单。 - Numbers: 使用
SUBSTRING_INDEX
函数从请求名称中提取订单编号。例如,如果请求名称为12345-67890
,则提取结果为12345
。 - InterationFlags: 固定值为
STK_InvCheckResult
,表示允许负库存标识。 - IgnoreInterationFlag: 布尔类型,默认值为
true
。 - NetworkCtrl: 布尔类型,默认值为
false
。 - IsVerifyProcInst: 布尔类型,默认值为
false
。
通过轻易云的数据集成平台,可以利用其强大的ETL功能,将上述字段进行相应的转换和映射。以下是一个示例代码片段,用于展示如何通过API接口将转换后的数据写入金蝶云星空:
import requests
import json
def transform_and_write_data(request_name):
# 提取订单编号
order_number = request_name.split('-')[0]
# 构建请求体
payload = {
"FormId": "PUR_PurchaseOrder",
"Numbers": order_number,
"InterationFlags": "STK_InvCheckResult",
"IgnoreInterationFlag": True,
"NetworkCtrl": False,
"IsVerifyProcInst": False
}
# API URL
api_url = 'https://api.kingdee.com/CancelAssign'
# 发起POST请求
response = requests.post(api_url, data=json.dumps(payload), headers={'Content-Type': 'application/json'})
if response.status_code == 200:
print("Data successfully written to Kingdee Cloud.")
else:
print(f"Failed to write data to Kingdee Cloud. Status code: {response.status_code}")
# 示例调用
transform_and_write_data('12345-67890')
实时监控与错误处理
在实际操作中,我们还需要实时监控数据流动和处理状态,以确保每个环节都能顺利执行。如果出现错误,例如网络故障或API调用失败,需要有相应的错误处理机制来捕获并记录这些异常,以便后续排查和修复。
通过上述步骤,我们可以高效地将源平台的数据经过ETL转换后写入到金蝶云星空API接口,实现不同系统间的数据无缝对接。这不仅提升了业务流程的透明度和效率,也确保了数据的一致性和准确性。