案例分享:泛微OA-Http数据集成到金蝶云星空
在本技术案例中,我们将探讨如何实现从泛微OA系统到金蝶云星空的高效数据集成,实现自动化处理费用报销单据。具体方案命名为“FD004-对个费用报销 泛微=>金蝶其他应付单--写入配置待检查”。
通过轻易云数据集成平台,我们成功地构建了一条跨系统的数据流,支持批量抓取和快速写入,同时确保数据质量和一致性。在这个案例中,关键步骤包括:
-
API接口调用与分页处理: 使用泛微OA-Http的获取数据API
/api/workflow/paService/getWorkflowRequest
来抓取需要同步的费用报销单据。由于接口存在分页限制,我们设计了可靠的分页机制,以确保所有有效记录均被完整提取。 -
自定义转换逻辑: 为适配金蝶云星空的数据格式要求,本方案根据业务需求进行了特定的数据字段映射和转换。比如,将泛微中的表单字段转变为符合金蝶云“batchSave” API 的结构。
-
高吞吐量与实时监控: 采用轻易云平台提供的大容量、高吞吐能力,使得每次批量导出的数据能够稳定、快速地写入到金蝶云星空。同时,通过集中监控和告警功能,对每一个任务环节进行实时追踪,保障整个集成过程的透明可视。
-
异常处理和重试机制: 在实际操作中,不可避免会遇到网络波动或服务暂时不可用等情况。因此,我们引入了稳健的错误检测与重试机制。当出现问题时,会立即终止当前操作并记录日志,并在下一周期自动重新尝试,大大减少因偶发故障导致的数据遗漏风险。
综上所述,这一全流程自动化解决方案不仅提升了繁杂手工操作效率,还保证了数据传输过程中的准确性和及时响应,为企业财务管理注入新的动力。在后续内容中我们将详细描述各个实施步骤及技术细节。
调用泛微OA-Http接口获取并加工数据
在数据集成生命周期的第一步,我们需要调用源系统泛微OA的Http接口/api/workflow/paService/getWorkflowRequest
来获取数据,并对其进行初步加工。本文将详细探讨这一过程中的技术细节和元数据配置。
接口调用与元数据配置
首先,我们需要理解如何通过HTTP GET请求调用泛微OA的API接口。根据提供的元数据配置,接口路径为/api/workflow/paService/getWorkflowRequest
,请求方法为GET。以下是关键的元数据字段:
- api:
/api/workflow/paService/getWorkflowRequest
- method:
GET
- number:
requestId
- id:
requestId
- name:
id
- idCheck:
true
这些字段定义了API调用的基本信息,其中requestId
是我们需要获取的数据的唯一标识符。
请求参数配置
根据元数据配置,我们需要传递两个请求参数:
- workflowId: 固定值为
391
- workflowIdList: 固定值为
2356388e-8c49-35b3-bb7e-1eca1a8617d5
请求参数的配置如下所示:
"request": [
{"field": "workflowId", "label": "e9流程id", "type": "string", "value": "391"},
{"field": "workflowIdList", "label": "workflowIdList中间方案ID", "type": "string", "value": "2356388e-8c49-35b3-bb7e-1eca1a8617d5"}
]
这些参数将在HTTP GET请求中作为查询字符串传递。
条件过滤
为了确保我们只获取到符合条件的数据,需要设置条件过滤器。根据元数据配置,我们有两个条件:
workflowMainTableInfo.bxlx
等于实报实销
workflowMainTableInfo.bxlx
等于Actual Expense
条件过滤器的配置如下所示:
"condition": [
[{"field": "workflowMainTableInfo.bxlx", "logic": "eqv2", "value": "实报实销"}],
[{"field": "workflowMainTableInfo.bxlx", "logic": "eqv2", "value": "Actual Expense"}]
]
这些条件将用于筛选返回的数据,确保我们只处理符合要求的记录。
自动填充响应
在接收到API响应后,我们需要对数据进行初步加工。根据元数据配置,自动填充响应功能已启用:
"autoFillResponse": true
这意味着平台会自动解析API响应,并将其转换为内部可处理的数据格式。
实际操作步骤
- 构建HTTP GET请求:使用上述请求参数和条件过滤器构建GET请求。
- 发送请求并接收响应:向泛微OA API发送GET请求,并接收JSON格式的响应。
- 解析响应数据:利用自动填充功能,将响应中的数据解析并转换为内部格式。
- 初步加工数据:根据业务需求,对解析后的数据进行初步清洗和转换,为后续的数据写入阶段做好准备。
以下是一个简化的Python代码示例,展示了如何实现上述步骤:
import requests
# 构建查询字符串
params = {
'workflowId': '391',
'workflowIdList': '2356388e-8c49-35b3-bb7e-1eca1a8617d5'
}
# 发送HTTP GET请求
response = requests.get('https://example.com/api/workflow/paService/getWorkflowRequest', params=params)
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 过滤符合条件的数据
filtered_data = [item for item in data if item['workflowMainTableInfo']['bxlx'] in ['实报实销', 'Actual Expense']]
# 初步加工数据(示例)
processed_data = []
for item in filtered_data:
processed_item = {
'requestId': item['requestId'],
'expenseType': item['workflowMainTableInfo']['bxlx'],
# 添加其他必要字段
}
processed_data.append(processed_item)
# 输出或进一步处理processed_data
else:
print(f"Error: {response.status_code}")
通过以上步骤和代码示例,我们可以高效地从泛微OA系统中获取并加工所需的数据,为后续的数据转换与写入阶段打下坚实基础。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在轻易云数据集成平台中,将源平台的数据转换为目标平台金蝶云星空API接口所能接收的格式是一个关键步骤。本文将详细探讨如何通过元数据配置实现这一过程,并确保数据准确无误地写入金蝶云星空。
元数据配置解析
元数据配置是ETL转换的核心,定义了如何将源数据映射到目标系统的字段中。以下是关键字段的配置解析:
-
单据类型 (FBillTypeID):
- 类型:字符串
- 描述:指定单据类型,例如“QTYFD01_SYS”表示其他应付单。
- 解析器:
ConvertObjectParser
,参数为FNumber
。
-
单据编号 (FBillNo):
- 类型:字符串
- 描述:唯一标识单据的编号。
-
业务日期 (FDATE):
- 类型:字符串
- 描述:业务发生日期,取自
workflowMainTableInfo.sqrq
。
-
往来单位类型 (FCONTACTUNITTYPE):
- 类型:字符串
- 描述:例如部门、员工等,默认值为“BD_Empinfo”。
-
往来单位 (FCONTACTUNIT):
- 类型:字符串
- 描述:通过工作代码查找对应的往来单位。
- 解析器:
ConvertObjectParser
,参数为FNumber
。
-
币别 (FCURRENCYID):
- 类型:字符串
- 描述:货币类型,通过货币编码查找对应的币别。
- 解析器:
ConvertObjectParser
,参数为FNumber
。
-
结算组织、采购组织、付款组织:
- 字段分别为
FSETTLEORGID
,FPURCHASEORGID
,FPAYORGID
- 类型:字符串
- 描述:通过申请公司字段映射到相应的组织编号。
- 解析器:
ConvertObjectParser
,参数为FNumber
- 字段分别为
-
申请部门 (FDEPARTMENTID) 和 采购部门 (FPURCHASEDEPTID):
- 类型:字符串
- 描述:通过申请部门字段映射到相应的部门编号。
- 解析器:
ConvertObjectParser
,参数为FNumber
-
备注 (FRemarks):
- 类型:字符串
- 描述:备注信息,取自
workflowMainTableInfo.bzsm
-
本位币 (FMAINBOOKSTDCURRID):
- 类型: 字符串
- 描述: 本位币,通过申请公司字段映射。
- 解析器:
ConvertObjectParser
, 参数为FNumber
-
汇率类型 (FEXCHANGETYPE):
- 类型: 字符串
- 描述: 汇率类型, 默认值为 “HLTX01_SYS”
- 解析器:
ConvertObjectParser
, 参数为FNumber
-
到期日计算日期 (FACCNTTIMEJUDGETIME):
- 类型: 字符串
- 描述: 到期日计算日期, 取自
workflowMainTableInfo.sqrq
-
业务类型 (FBUSINESSTYPE):
- 类型: 字符串
- 描述: 默认值为 “OTHER”
-
自定义单号 (F_WDW_OANO):
- 类型: 字符串
- 描述: 自定义单号, 取自
workflowMainTableInfo.lcbh
-
预付款 (F_XDW_PAYMENT):
- 类型: 字符串
- 描述: 预付款金额, 取自
workflowMainTableInfo.cjzk
-
明细信息(数组)(FEntity): 明细信息包含多个子字段,每个子字段都需要进行详细配置和转换。例如:
a) 费用项目编码 (FCOSTID)
- 类型: 字符串
- 描述: 通过费用项目名称查找对应编码。
- 解析器:
ConvertObjectParser
, 参数为FNumber
b) 发票类型 (FINVOICETYPE)
- 类型: 字符串
- 描述: 根据发票类型名称进行条件转换。
c) 不含税金额 (FNOTAXAMOUNTFOR)
- 类型: 字符串
- 描述: 根据公式计算不含税金额。
数据写入操作
在完成元数据配置后,需要将处理后的数据通过API接口写入金蝶云星空。以下是关键步骤:
- 定义请求体结构,根据元数据配置生成相应的数据格式。
- 使用POST方法调用金蝶云星空的batchSave API接口,将转换后的数据批量保存到目标系统中。
- 确保请求体中的每个字段都符合金蝶云星空API接口要求,包括正确的数据类型和格式。
示例代码片段
{
"FormId": "AP_OtherPayable",
"Operation": "BatchSave",
"IsAutoSubmitAndAudit": false,
"IsVerifyBaseDataField": true,
"Model": {
"FBillTypeID": {"FNumber": "QTYFD01_SYS"},
"FBillNo": "{{workflowMainTableInfo.djb}}",
"FDATE": "{{workflowMainTableInfo.sqrq}}",
"FCONTACTUNITTYPE": "BD_Empinfo",
"FCONTACTUNIT": {"_findCollection find workcode from c0198816-9822-38f3-b995-fc700a9925e7 where id={{workflowMainTableInfo.skmc_FV}}"},
...
"FEntity": [
{
"FCOSTID": {"_findCollection find FNumber from a3c8a497-8be0-36b3-956c-94619b971636 where FName={{detail_0.fyxmzl}}"},
...
}
]
}
}
以上示例展示了如何根据元数据配置生成请求体,并调用金蝶云星空API接口进行数据写入。在实际应用中,需要根据具体业务需求调整和扩展此配置,以确保所有必要的数据都能正确传输和存储。