找回密码
 立即注册
搜索
查看: 37|回复: 0

单据引擎(设计原理、应用场景、产品架构、流程)一文讲清楚

[复制链接]

11

主题

0

回帖

33

积分

新手上路

积分
33
发表于 2025-5-27 00:07:09 | 显示全部楼层 |阅读模式
1.webp


01 单据引擎概念
单据引擎是企业信息化系统中用于自动化处理业务单据的核心组件,通过规则配置实现单据的生成、流转、转换及关联管理。其核心目标是通过灵活的策略配置,减少人工干预,提升业务流程效率和数据一致性。
2.webp

在市面常见的中大型ERP系统都有此功能,比如金蝶云星空的BOTP(单据转换平台,详见:简略剖析会计引擎BOTP(单据转换平台)及原理),用友的TOP与流程引擎在一块;而SAP则是通过SAP S/4 HANA API实现单据的生成、转换,如下图(图源于SAP官网):
3.webp


02 单据引擎应用场景
单据引擎的应用主要集中在供应链与财务这两大模块中,主要有:
1、供应链模块转换2、财务模块包括其他模块往财务模块流转,比如:
要注意的是,有些企业是根据销售出库单→应收单,因为销售发票会定期、汇总开具,而不像销售出库单必须确认收当月或合并、或一对一流转至应收单。

03 单据引擎设计原理
单据引擎本质是单据与单据的转换,实现转换规则的灵活配置、过程透明、可追溯,将复杂的业务逻辑解耦
核心能力:支持单据的组合(Join)、合并(Merge)、拆分(Split)、分组(Group)等操作,适应复杂业务场景。
技术本质:基于主从结构(单头+明细)的数据处理系统,通过规则引擎驱动自动化流程,实现业务单据与业务单据的映射与转换(单据与凭证的转换见拆解会计引擎(核心部分),不属单据引擎范围)。
单据引擎的设计原理以规则动态化、配置可视化、流程自动化为核心,通过分层架构和元数据驱动实现业务灵活适配。金蝶BOTP更侧重单据间转换(如下推生成各种单据),而中兴新云FOL聚焦单据模板自定义与合规控制,两者均体现了“低代码/无代码”的设计理念,以降低技术门槛并快速响应业务变化。
4.webp


04 单据引擎产品架构
单据引擎通常采用分层架构,分为输入层、规则引擎层、执行层、输出层:
1.输入层输入层包括数据源配置、元数据管理、解析规则等,通过对接业务系统的原始单据(如采购订单、销售出库单等),通过元数据解析获取单据字段、类型及关联关系。
比如:费控系统的《费用报销单》(广告费用),对接到ERP的《应付单》,再生成《付款凭证》;同时采购平台的《采购入库单》,也对接ERP的《应付单》,则是生成《暂估应付凭证》;
5.webp

这一层里,元数据是关键点,因为业务永远是动态变化的,为适应这种动态变化,低成本、动态可配、低代码的元数据才是解决问题的方向。比如下面这种元数据管理:
6.webp

2.规则引擎层核心模块,包括转换规则、校验规则、计算规则的配置。例如:
金蝶BOTP通过KScript脚本定义字段映射、分组策略、选单策略等;
7.webp

字段映射示例:
8.webp

中兴新云FOL通过可视化界面配置字段类型、校验条件(如敏感词检测、金额合规性)及计算逻辑(如差旅补贴自动计算)。
架构流程(概)图:
9.webp

其中:
源单据:即元数据,是上游系统传来后对应(单据引擎)本系统的表及字段,与上游数据结构一模一样,比如上游费控系统的《费用报销单》有哪些字段,对到单据引擎也会有一个一模一样的《费用报销单》,就是通过元数据配置,起着承接与记录的作用。
单据规则:设置单据生成的具体规则,比如单据每一个字段是怎么来的,是从源单据的某个字段还是有特定规则;以及是否要冲销,冲销的规则又是什么?是按单号冲销一对一冲销还是按供应商&单据类型整冲整提?示例:
10.webp

拆分合并:源单据与目标单据的生成规则,是1:1还是多个合并生成一个,或一个拆分成多个,但禁止多对多!如果是合并生成,合并规则又是什么?以金蝶示例:
11.webp

12.webp

输出策略,即目标单据是哪个,以及生成目标单据后是直接保存到数据库,还是要调用接口往下游推送?
模型构建:将上述规则组装成一个协议或集合,即给一组规则保存一个特定标识或名称,同样条件的规则在同一时间只有只有一个生效,比如前面提到的,《费用报销单》与《采购入库单》都是生成《应付单》,但二者的后续处理规则是不一样的,《费用报销单》生成《应付单》的单据类型是“费用单”,下一步是生成《付款单》;而《采购入库单》生成《应付单》的单据类型是“暂估单”,是没有下一步策略的;对比如下:
另外,如果想做得更完美的同学,可把单据关系设计成可拖拽式的画布,可以一图将单据整个链条设计概全,一目了然,清晰全面,比如下面这种:
13.webp

3.执行层调用脚本解析引擎或规则引擎执行转换/校验操作,例如金蝶BOTP通过KScript引擎解析脚本并生成目标单据。包括:
预处理:预处理有可能在接收源单调用,也可能是在生成目标单据时调用,目的是将单据转换生成所需信息补充完整,确保后续的单据转换步骤能顺利执行。包括数据清洗与标准化(比如前述中定义“【费用类型】”规则)、规则预校验(比如字段非空性验证、数据类型匹配(如金额是否为数值型))、上下文环境加载等。
单据生成:根据定义的单据规则生成目标单据,包括模板动态填充、自动化赋值逻辑、分组等。有些场景目标单据不止1个,可能会有多个;比如《物流费用计提单》,从BMS(仓储物流费用平台)传来后,单据引擎根据规则,不仅要生成《计提应付单》,还要生成《暂估(冲销)应付单》。
校验:包括系统自动化校验和人工复核与修正;

  • 自动化校验有完整性校验(如检查必填字段)、逻辑一致性校验(验证业务规则,比如单据总金额=sum(每行【价税全额)之和)、合规性检验(匹配税务法规(如发票税率合规)及企业内控标准);
  • 人工复核,提供可视化界面标注异常项(如红色高亮字段),支持审核人添加批注;支持“驳回-修正”流程:若检测到单价与合同不一致,可退回至预处理阶段重新匹配数据。
14.webp

4.输出层功能模块如下:

  • 单据保存:输出层专注生成并保存目标单据(如应付单、出库单、审批单)记录转换前后的单据关联关系,支持追溯。
  • 单据流转:有些场景还会根据规则触发下推动作,将生成好的单据通过调用接口或RabbitMQ/Kafka实现任务分发,推送给下游消费方。
  • 操作审计(日志):记录单据接收、转换、生成、下推过程的操作时间、操作用户、数据版本等相关信息,异常信息实时预警。记录单据转换过程中的上下游关系图谱,便于后期追溯排查。
在结构设计上,输出层与执行层既可各自独立也可合并一个模块,视业务场景和规则复杂度而定。
在实际业务场景中,单据引擎的落地实施可先简后繁,以对接财务系统为试点,比如费用报销单,以MVP的形式小规模开发、快速迭代,满足需求再推广、升级,巩固研发成果。
作者:业财老曾,公众号:业财老曾谈,专注财务信息化20年
本文由 @业财老曾 原创发布于人人都是产品经理,未经许可,禁止转载。
题图来自 Pexels,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|ARC

GMT+8, 2025-6-6 07:30 , Processed in 0.085942 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表