FD003-非生产性付款申请 泛微=>金蝶其他应付单--481:系统对接集成案例分享
在企业的日常运营中,跨系统的数据流动与整合是确保业务顺畅运转的关键环节。本篇文章将聚焦于一个具体案例:如何高效地实现泛微OA-Http数据到金蝶云星空的集成,通过方案FD003-非生产性付款申请 泛微=>金蝶其他应付单--481,探讨技术细节与解决思路。
本次集成任务涉及从泛微OA获取数据,并通过API接口实时写入至金蝶云星空。整个过程利用了轻易云平台的数据处理能力和可视化操作界面,实现端到端的无缝衔接。以下为该案例中的几个关键技术点:
-
高吞吐量数据写入:为了提升数据处理时效性,我们采用了轻易云支持的大规模、高吞吐量的数据写入功能。这意味着大量来自泛微OA-Http系统中的付款申请数据可以迅速被捕获并传输至金蝶云星空。
-
集中监控与告警机制:使用轻易云平台提供的监控和告警系统,对各个节点进行实时跟踪。例如,该项目中我们对每次调用泛微OA-Http接口
/api/workflow/paService/getWorkflowRequest
进行了性能优化监测,以确保抓取速度及准确率。同时在向金蝶云星空APIbatchSave
写入过程中,也配置了相应的异常重试机制,以保证稳定运行。 -
自定义转换逻辑:由于两套系统之间存在数据格式差异,我们借助轻易云的平台优势,自定义了适配双方要求的数据转换逻辑。这包括字段映射、值替换等一系列复杂操作,为最终上传至
batchSave
API做充分准备。 -
分页处理与限流控制:在调用泛微OA APIs时,我们特别关注分页机制和限流问题。在实际执行过程中,通过调优批量请求大小及设定合理延迟参数,有效避免了因频繁访问导致接口超载的问题。
-
质量监控和异常检测:整个流程始终受到严格的数据质量监控。当有异常情况或错误发生,相关记录会即时生成日志,并触发预设告警,从而快速定位并修复问题,如重新提交失败请求等措施确保不漏单、不错单。
通过以上步骤,本项目成功实现了一条可靠、高效且透明的全生命周期管理路径。从源头采集到目的地存储,每一个环节都得到了精细化控制,这不仅提升了工作效率,更为后续类似需求提供了一份宝
调用泛微OA-Http接口获取并加工数据的技术实现
在数据集成生命周期的第一步,我们需要调用源系统泛微OA的Http接口/api/workflow/paService/getWorkflowRequest
来获取数据,并进行初步加工。以下将详细介绍如何通过轻易云数据集成平台配置元数据,完成这一过程。
接口调用与元数据配置
首先,我们需要理解接口的基本信息和元数据配置。根据提供的元数据配置,接口路径为/api/workflow/paService/getWorkflowRequest
,请求方法为GET。我们需要传递两个参数:workflowId
和workflowIdList
。
{
"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": "481"},
{"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"}]
]
}
配置请求参数
在轻易云平台上,我们首先需要配置请求参数。根据元数据配置,参数包括:
workflowId
: 固定值为"481"workflowIdList
: 固定值为"2356388e-8c49-35b3-bb7e-1eca1a8617d5"
这些参数将在调用接口时自动填充。
数据过滤条件
为了确保我们获取的数据符合业务需求,需要设置过滤条件。根据元数据配置,过滤条件如下:
[
[{"field":"workflowMainTableInfo.fklx","logic":"eqv2","value":"应付款"}],
[{"field":"workflowMainTableInfo.fklx","logic":"eqv2","value":"Account Payable"}]
]
这意味着我们只需要获取fklx
字段值为“应付款”或“Account Payable”的记录。
实现API调用
在轻易云平台中,通过可视化界面配置上述参数和条件后,可以直接进行API调用。以下是一个伪代码示例,展示了如何通过HTTP GET请求获取数据:
import requests
url = 'https://your-domain.com/api/workflow/paService/getWorkflowRequest'
params = {
'workflowId': '481',
'workflowIdList': '2356388e-8c49-35b3-bb7e-1eca1a8617d5'
}
response = requests.get(url, params=params)
data = response.json()
# 根据条件过滤数据
filtered_data = [item for item in data if item['workflowMainTableInfo']['fklx'] in ['应付款', 'Account Payable']]
数据加工与处理
获取并过滤到所需的数据后,可以进行进一步的数据清洗和转换。例如,将字段名转换为目标系统所需的格式,或者对某些字段进行计算和转换。
假设我们需要将字段名从中文转换为英文,并计算某个金额字段的汇总值:
processed_data = []
total_amount = 0
for item in filtered_data:
processed_item = {
'request_id': item['requestId'],
'amount': item['workflowMainTableInfo']['金额'],
'payee': item['workflowMainTableInfo']['收款人']
}
total_amount += float(item['workflowMainTableInfo']['金额'])
processed_data.append(processed_item)
print(f"Total Amount: {total_amount}")
写入目标系统
最后,将处理后的数据写入目标系统(如金蝶其他应付单)。这一步通常涉及到另一个API调用或数据库操作。在轻易云平台中,可以通过拖拽组件实现这一过程,无需编写复杂代码。
总结以上步骤,通过轻易云平台调用泛微OA的Http接口,并结合元数据配置,实现了从源系统获取、过滤、清洗和转换数据的全过程。这不仅简化了集成工作,还提高了效率和透明度。
轻易云数据集成平台:将源数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能接收的格式。本文将深入探讨如何利用轻易云数据集成平台,将源数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
元数据配置解析
在本案例中,我们需要将泛微系统中的非生产性付款申请数据转换并写入金蝶云星空的其他应付单。以下是元数据配置的详细解析:
{
"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"
},
{
// ... (省略部分字段)
},
{
"field": "FEntity",
"label": "明细信息",
"type": "array",
// ... (省略部分字段)
}
],
// ... (省略部分字段)
}
数据转换与写入过程
-
API接口调用配置:
api
字段指定了调用的API接口名称为batchSave
。method
字段指定了HTTP请求方法为POST
。idCheck
字段设置为true
,表示需要进行ID检查。
-
操作配置:
operation
对象定义了批量保存操作,使用了键值对数组形式,其中每行包含一个对象。
-
请求参数配置:
request
数组中包含了一系列字段,每个字段对应金蝶云星空API中的一个参数。例如,FBillTypeID
表示单据类型,其值通过转换对象解析器(ConvertObjectParser)解析为金蝶系统中的编码。
-
复杂字段处理:
- 对于复杂字段如
FEntity
(明细信息),其类型为数组,包含多个子字段。这些子字段可能需要进一步解析和转换,例如费用项目编码(FCOSTID)通过查找集合(findCollection)进行映射。
- 对于复杂字段如
示例代码实现
以下是一个示例代码片段,用于将源数据转换并发送到金蝶云星空API:
import requests
import json
# 定义元数据配置
metadata_config = {
# ... (元数据配置内容)
}
# 准备请求体
request_body = {
# 根据元数据配置生成请求体
}
# 转换和填充请求体
def prepare_request_body(metadata, source_data):
request_body = {}
for field in metadata['request']:
field_name = field['field']
value_expression = field['value']
# 使用source_data填充value_expression中的占位符
value = evaluate_expression(value_expression, source_data)
request_body[field_name] = value
return request_body
# 调用API接口
def call_kingdee_api(api_url, request_body):
headers = {'Content-Type': 'application/json'}
response = requests.post(api_url, headers=headers, data=json.dumps(request_body))
return response.json()
# 示例调用
source_data = get_source_data() # 获取源数据
api_url = 'https://api.kingdee.com/batchSave'
request_body = prepare_request_body(metadata_config, source_data)
response = call_kingdee_api(api_url, request_body)
print(response)
技术要点总结
- 元数据配置:通过详细定义每个字段及其解析方式,实现从源系统到目标系统的数据映射。
- 复杂字段处理:对于嵌套数组和复杂对象,需要使用特定的解析器和映射规则。
- API调用:使用标准HTTP POST方法,将构造好的请求体发送到目标系统的API接口。
通过上述步骤,我们可以高效地将泛微系统中的非生产性付款申请数据转换并写入到金蝶云星空,实现不同系统间的数据无缝对接。