SD004-新增供应商资料申请驳回撤销:泛微OA与金蝶云星空之间的数据集成案例分析
在这一技术分享中,我们将详细探讨如何通过轻易云数据集成平台实现泛微OA-Http与金蝶云星空系统的高效对接。具体场景是“SD004-新增供应商资料申请驳回撤销”,主旨在于确保数据从泛微OA精确传输到金蝶云星空,并能实时处理每个环节,特别关注API接口调用过程中的一些关键问题和应对策略。
首先,需要抓取泛微OA提供的数据API,即/api/workflow/paService/getWorkflowRequest
。为了有效管理大量数据,同时满足业务需求,我们采用定时可靠的方式定期抓取该接口的数据,确保不会漏单。在此过程中,引入了分页和限流机制,以应对可能的大量请求并保障系统稳定性及性能。
随后,为了解决范畴内的数据格式差异问题,自定义了数据转换逻辑,将获取到的原始数据适配为符合金蝶云星空要求的格式。与此同时,针对批量写入的需要,通过优化配置,实现高吞吐量的数据导入,使得供应商资料能够被快速处理和更新到金蝶云星空。
而在核心操作方面,我们使用CancelAssign
API进行实际的数据写入。在这一阶段,对每条记录实行集中监控实时跟踪,借助告警系统检测并及时响应可能出现的问题,从而减少错误发生几率,提高整体流程可靠性。此外,还具备高级异常处理和错误重试机制,为意外情况提供安全网,保障事务一致性及运行连续性。
总体来说,此次集成不仅注重抛弃过多冗余步骤,而是灵活利用可视化设计工具来提升效率,使整个集成过程更加直观、易于管理。同时,通过上述一系列细致调优,从根本上提高了企业内部不同应用系统之间互操作能力,也为后续扩展升级奠定扎实基础。
调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest获取并加工数据
在数据集成的生命周期中,调用源系统API是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用泛微OA-Http接口/api/workflow/paService/getWorkflowRequest
来获取并加工数据。
接口元数据配置解析
首先,我们来看一下元数据配置:
{
"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": "764"
}
]
]
}
配置细节
-
API路径:
/api/workflow/paService/getWorkflowRequest
- 此路径指向泛微OA系统中的一个工作流请求查询服务。
-
请求方法:
GET
- 使用HTTP GET方法来请求数据。
-
关键字段:
number
,id
,name
均为requestId
,表示该字段在请求和响应中的重要性。idCheck: true
,表示需要对ID进行校验。
-
请求参数:
workflowId
: 固定值为129
,代表特定的工作流ID。workflowIdList
: 固定值为8183a586-bdfb-3e93-8573-d5e81803c5ff
,代表中间方案ID。
-
自动填充响应:
autoFillResponse: true
- 表示系统会自动处理并填充响应数据。
-
条件过滤:
- 条件为当前节点ID (
currentNodeId
) 等于 (eqv2
)764
。
- 条件为当前节点ID (
实际操作步骤
-
配置API调用 在轻易云平台上创建一个新的集成任务,并配置上述API元数据。确保所有字段和条件都正确填写。
-
发送请求 根据配置,平台会自动生成HTTP GET请求,并附带必要的参数:
GET /api/workflow/paService/getWorkflowRequest?workflowId=129&workflowIdList=8183a586-bdfb-3e93-8573-d5e81803c5ff
-
处理响应 平台会根据配置自动处理响应,并填充到相应的数据结构中。假设返回的数据如下:
{ "requestId": 12345, ... // 更多字段 }
-
条件过滤 平台会根据条件过滤器检查返回的数据是否符合条件(即
currentNodeId == 764
)。如果符合,则继续处理;否则,丢弃该条记录。
数据清洗与转换
在获取到符合条件的数据后,需要进行进一步的清洗与转换,以便后续写入目标系统(如金蝶)。这一步通常包括:
- 字段映射:将源系统的字段映射到目标系统所需的字段。
- 数据格式转换:如日期格式、数值单位等转换。
- 业务逻辑处理:根据业务需求进行特定的逻辑处理,如状态码转换、计算新字段等。
例如,将返回的JSON对象中的某些字段提取并转换为目标系统所需格式:
{
// 源系统返回的数据
...
}
经过清洗与转换后:
{
// 转换后的目标系统所需的数据格式
}
总结
通过轻易云数据集成平台,我们可以高效地调用泛微OA-Http接口获取工作流请求数据,并通过自动化的方式进行清洗与转换。这不仅简化了复杂的数据集成过程,还提高了整体业务流程的透明度和效率。
使用轻易云数据集成平台进行ETL转换:将数据写入金蝶云星空API接口
在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。
API接口元数据配置解析
在本案例中,我们使用的API接口为CancelAssign
,其主要功能是执行撤销操作。以下是该接口的元数据配置:
{
"api": "CancelAssign",
"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转换过程中,我们首先需要定义请求参数。根据元数据配置,可以看到需要传递以下几个字段:
FormId
: 表单ID,这里指定为BD_Supplier
。Numbers
: 源平台中的供应商编号,需要动态替换为实际值。InterationFlags
: 可选字段,用于指定交互标志。IgnoreInterationFlag
,NetworkCtrl
,IsVerifyProcInst
: 布尔类型,可选字段,用于控制特定行为。
-
构建请求体
根据上述定义的参数,我们构建请求体。假设我们从源平台获取了供应商编号为
SUP12345
的数据,那么请求体应如下所示:{ "FormId": "BD_Supplier", "Numbers": ["SUP12345"], "InterationFlags": ["STK_InvCheckResult"], "IgnoreInterationFlag": true, "NetworkCtrl": false, "IsVerifyProcInst": false }
-
发送HTTP请求
使用轻易云的数据集成平台,可以通过配置HTTP节点来发送POST请求。具体步骤如下:
- 配置HTTP节点URL为金蝶云星空API的地址,例如:https://api.kingdee.com/CancelAssign。
- 设置HTTP方法为POST。
- 将构建好的请求体作为HTTP请求的Body。
-
处理响应
在发送请求后,需要处理响应结果。通常情况下,API会返回一个JSON格式的响应,其中包含操作结果和状态码。我们可以根据状态码判断操作是否成功,并记录相关日志以便后续追踪。
实践案例
假设我们有一个实际场景,需要撤销一个供应商资料申请驳回撤销操作。具体步骤如下:
-
从泛微系统获取待撤销的供应商编号:
{ // 假设获取到的数据 "_id": 123456, "_name": SUP12345, "_status": pending }
-
进行ETL转换:
将上述数据转换为金蝶云星空API可接受的格式:
{ // 构建请求体 FormId: BD_Supplier, Numbers: [SUP12345], InterationFlags: [STK_InvCheckResult], IgnoreInterationFlag: true, NetworkCtrl: false, IsVerifyProcInst: false }
-
发送POST请求并处理响应:
{ // 假设收到的响应 statusCode: 200, message: Success, data: { result: success, details: null } }
通过以上步骤,我们完成了从泛微系统到金蝶云星空系统的数据ETL转换和写入过程。这不仅实现了不同系统间的数据无缝对接,也确保了业务流程的高效运作。