泛微OA-Http数据集成到金蝶云星空案例分享:FD003-非生产性付款申请
在本技术案例中,我们将深入解析如何通过配置轻易云数据集成平台,实现泛微OA-Http系统与金蝶云星空的无缝对接。具体实施的方案为"FD003:非生产性付款申请 泛微=>金蝶其他应付单--499",重点探讨数据获取、转换及写入过程中的关键技术要素。
一、数据获取与处理机制
首先,针对泛微OA-Http系统的数据获取需求,我们使用了其提供的 /api/workflow/paService/getWorkflowRequest
API 接口。该接口可以定时可靠地抓取所需业务数据,以确保每个付款申请记录都被捕获。在这个过程中,处理分页和限流问题显得尤为重要,因为它决定了我们能否高效且完整地收集所有待处理的数据。
为了解决这一难题,本次项目实现了一套智能分页抓取策略,通过实时监控API请求状态,并结合限流机制,有效避免了因频繁请求而导致的大量失败或超时现象。同时,为了提升整体处理效率,配置高吞吐量的数据写入能力,使大量采集来的信息能够快速进入后续环节。
二、跨系统数据格式差异解决方案
在完成初步的数据抓取之后,下一个挑战是解决泛微OA-Http与金蝶云星空之间的格式差异问题。这部分工作主要依赖于轻易云强大的自定义数据转换逻辑功能,通过编写专用脚本,将各类字段精确映射至目标系统所需形式。这一步骤至关重要,因为只有准确匹配字段才能确保最终支付单据在两大系统中的一致性和可读性。
同时,在实际操作中,还利用到了平台提供的可视化数据流设计工具。通过直观拖拽界面,不仅简化了复杂转换逻辑构建,也方便团队成员随时查阅和调整整个流程,为项目实施带来了极大的便利。
三、高效批量写入实践
最后,将整理好的标准化支付单据批量导入金蝶云星空。这里采用的是 batchSave
API,这一接口支持大规模并行插入操作,从而极大缩短等待时间。同时,集中监控和告警系统也在此发挥关键作用,持续跟踪每一次操作执行情况,一旦出现异常立即触发警报并进行相应错误重试处理,以保证整个集成过程全程无误运行。
以上内容展示了我们如何运用轻易云的平台特性,高效又精准地完成泛微OA-Http系統資料向金盾雲天空
调用泛微OA-Http接口获取并加工数据
在轻易云数据集成平台中,调用源系统泛微OA-Http接口/api/workflow/paService/getWorkflowRequest
是数据集成生命周期的第一步。此步骤至关重要,因为它涉及从源系统获取原始数据,并对其进行初步加工,为后续的数据转换与写入奠定基础。
API接口配置
根据提供的元数据配置,我们需要调用泛微OA的HTTP接口来获取工作流请求数据。具体配置如下:
{
"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": "499"},
{"field": "workflowIdList", "label": "workflowIdList中间方案ID", "type": "string", "value":"2356388e-8c49-35b3-bb7e-1eca1a8617d5"}
],
"autoFillResponse": true,
"condition": [
[{"field":"workflowMainTableInfo.fklx","logic":"eqv2","value":"应付款"}],
[{"field":"workflowMainTableInfo.fklx","logic":"eqv2","value":"Account Payable"}]
]
}
数据请求与清洗
-
API调用:使用GET方法调用
/api/workflow/paService/getWorkflowRequest
接口,传递必要的参数如workflowId
和workflowIdList
。这些参数用于指定特定的工作流请求。 -
参数说明:
workflowId
: 表示e9流程ID,值为"499"。workflowIdList
: 表示中间方案ID,值为"2356388e-8c49-35b3-bb7e-1eca1a8617d5"。
-
条件过滤:在返回的数据中,我们需要根据特定条件进行过滤。这里定义了两个条件:
workflowMainTableInfo.fklx = 应付款
workflowMainTableInfo.fklx = Account Payable
这些条件确保我们只处理与应付款相关的数据。
数据转换与写入准备
在获取并清洗数据后,需要对其进行初步转换,以便后续写入目标系统。在这个阶段,我们主要关注以下几个方面:
-
字段映射:将源系统中的字段映射到目标系统所需的字段。例如,将
requestId
映射为目标系统中的唯一标识符。 -
数据格式转换:根据目标系统的要求,对数据格式进行必要的转换。例如,将日期格式从YYYY-MM-DD转换为DD/MM/YYYY,或者将金额从字符串转换为数值类型。
-
自动填充响应:根据配置中的
autoFillResponse: true
,自动填充响应数据。这意味着我们可以直接使用API返回的数据,而无需手动处理每个字段。
实践案例
假设我们通过API调用获得了以下JSON响应:
{
"requestId": "12345",
"workflowMainTableInfo": {
"fklx": "应付款",
...
},
...
}
在这个响应中,我们首先检查fklx
字段是否符合我们的条件(即“应付款”或“Account Payable”)。如果符合,则继续处理该条记录,否则忽略。
接下来,我们将requestId
映射到目标系统中的唯一标识符,并对其他必要字段进行相应的转换和映射。最终生成一个符合目标系统要求的数据结构,准备进行下一步的数据写入操作。
通过以上步骤,我们完成了从泛微OA获取并加工数据的全过程。这一过程不仅确保了数据的准确性和一致性,也为后续的数据集成操作打下了坚实基础。
使用轻易云数据集成平台实现ETL转换并写入金蝶云星空API接口
在数据集成的生命周期中,将已经集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将泛微系统中的非生产性付款申请数据转换为金蝶云星空API接口所能接受的格式,并最终写入目标平台。
配置元数据
在进行ETL转换之前,需要配置元数据以确保数据能够正确映射到目标系统。以下是我们使用的元数据配置:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型\n其他应付单-QTYFD01_SYS\n费用报销其他应付单-QTYFD02 SYS",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "QTYFD01_SYS"
},
{
...
}
],
...
}
数据请求与清洗
首先,我们从泛微系统中获取非生产性付款申请的数据。假设这些数据已经通过轻易云平台进行了初步的清洗和整理,接下来我们需要对这些数据进行进一步处理,以符合金蝶云星空API的要求。
数据转换
根据元数据配置,我们需要将泛微系统中的字段映射到金蝶云星空API所需的字段。以下是一些关键字段的转换规则:
-
单据类型 (FBillTypeID):
- 将固定值
QTYFD01_SYS
映射到FBillTypeID
。 - 使用
ConvertObjectParser
对象解析器将其转换为目标格式。
- 将固定值
-
往来单位类型 (FCONTACTUNITTYPE):
- 根据泛微系统中的
wldwlx_FV
字段值进行条件判断:_function case '{{detail_0.0.wldwlx_FV}}' when '0' then 'BD_Supplier' when '1' then 'BD_Customer' when '3' then 'ORG_Organizations' when '2' then 'FIN_OTHERS' end
- 根据泛微系统中的
-
往来单位 (FCONTACTUNIT):
- 同样根据
wldwlx_FV
字段值选择相应的单位编号字段:_function case '{{detail_0.0.wldwlx_FV}}' when '0' then '{{detail_0.0.gysbh}}' when '1' then '{{detail_0.0.khbh}}' when '3' then '{{detail_0.0.zzbh}}' when '2' then '{{detail_0.0.qtwlbh}}' end
- 同样根据
-
币别 (FCURRENCYID):
- 从预定义集合中查找对应币别代码:
_findCollection find FNumber from 5740d4e3-ebe8-3548-9635-f35e1fdc983b where FCODE={{workflowMainTableInfo.bberp}}
- 从预定义集合中查找对应币别代码:
-
业务日期 (FDATE):
- 使用流程主表信息中的申请日期字段:
{{workflowMainTableInfo.sqrq}}
- 使用流程主表信息中的申请日期字段:
-
明细信息 (FEntity):
- 对于每条明细记录,分别处理费用项目编码、费用承担部门、发票类型等字段。例如,发票类型根据税率进行判断:
_function IF(('{{detail_0.sl}}'='6%') or ('{{detail_0.sl}}'='13%'),'1','0')
- 对于每条明细记录,分别处理费用项目编码、费用承担部门、发票类型等字段。例如,发票类型根据税率进行判断:
数据写入
完成所有字段的映射和转换后,我们使用配置好的API接口将数据批量写入金蝶云星空系统。具体操作如下:
{
...
{
"field": "FormId",
...
"value": "AP_OtherPayable"
},
{
...
}
}
调用 batchSave
API,通过POST方法提交转换后的数据,并设置必要的操作参数,如自动提交和审核、验证基础资料等。
总结
通过上述步骤,我们成功地将泛微系统中的非生产性付款申请数据进行了ETL转换,并通过轻易云数据集成平台写入到了金蝶云星空系统。这一过程展示了如何利用元数据配置,实现不同系统间的数据无缝对接,提高了业务处理效率和透明度。