单据流那些事儿之手工生单串讲
一、什么是单据流?
1.1 单据流的定义
在数字化转型浪潮中,业务单据的智能化流转已成为企业提质增效的关键命题。传统模式下,单据间的数据传递往往依赖硬编码实现,不仅造成开发周期冗长、维护成本高等问题,更使得业务系统陷入“牵一发而动全身”的耦合困境。
在采购订单转入库单、采购订单生成发票、销售合同转发货单等典型业务场景中,传统开发模式常面临三大挑战:
1. 字段级数据映射需逐行编写转换逻辑,开发效率低下;
2. 单据关联规则与业务代码深度绑定,变更需全链路回归测试;
3. 上下游单据耦合度过高,难以适应组织架构调整或流程再造。
针对以上问题,iGIX 单据流平台应势而生,它提供了一种开发模式,使系统各业务单据之间的协作,由紧耦合变为灵活可配置,以适应企业管理中业务流转灵活可配置的要求,为企业构建起灵活高效的业务协同网络。
单据流是企业业务流程数字化运行的核心载体,是指各类业务单据(如订单、合同、发票等)基于预设的业务规则进行数据转换、传递,实现业务数据流转的过程。
1.2 单据流的分类
单据流从数据流转方向上来看可以分为生单流程和回写流程两种类型。
生单流程:上游单据经过数据映射,生成下游单据的过程。
回写流程:下游单据生成后,根据生成关系反向更新相应上游单据某些属性的过程。
1.3 单据流的核心价值
单据流的核心价值体现在以下几个方面:
(1)动态流程编排
打破传统硬编码的紧耦合协作模式,以动态化流程编排实现业务流程的灵活调整。
(2)可视化映射配置
通过直观的界面操作,实现字段级智能匹配,支持 GUID、字段映射、常量、表达式、值映射等多种映射类型,有效降低配置难度。
(3)丰富的集成场景
支持基于事件驱动、可自动持久化下游单据的自动生单模式;
支持由业务人员主动触发、手动编辑并保存下游单据的手工生单模式;
支持满足特定触发条件时、自动通知业务人员办理生单任务的“事找人”模式;
支持在审批流程中加入自动生单或者生单子流程节点,在审批过程中自动生成下游单据;
既支持下游单据保存时立即回写上游单据,也支持下游单据满足特定触发条件时异步回写上游单据。
(4)弹性扩展框架
提供硬编码扩展接口,允许通过自定义构件实现特殊转换逻辑;
使用分层扩展架构,标准产品中预置基准流程,确保基础业务稳定运行的同时,项目可根据实际情况进行个性化扩展,兼顾标准化与定制化需求。
二、什么是手工生单?
2.1 生单流程的集成场景
单据流支持多种不同的集成场景,以满足不同的业务需求,其中生单流程总体分为自动生单和手工生单,手工生单又可以分为推式生单和拉式生单。
自动生单场景下生单流程满足触发条件时自动执行,生成的下游单据数据会直接持久化到数据库中。
手工生单是指需要从 UI 界面上发起的由上游单据生成下游单据的过程,生单流程执行后并不会将生成的下游单据数据直接保存至数据库,而是会通过加载至 UI 界面、推送至任务中心、存为草稿等多种形式将生单结果呈现给下游单据端用户,使下游单据端业务人员必须手动执行保存操作才会将数据持久化。
推式生单和拉式生单的区别在于推式生单从上游单据端发起,拉式生单从下游单据端发起。
自动生单与手工生单的最主要区别在于是否需要下游单据端手动执行保存操作,自动生单会直接将下游单据数据持久化至数据库,而手工生单则是需要用户主动执行保存操作后才会存入数据库。

2.2 手工生单的典型操作过程
手工推式生单的典型操作过程如下:

手工拉式生单的典型操作过程如下:

三、手工生单实战
单据流平台为开发者提供了一个名为“单据流入门示例”的 Demo 工程,完全基于 inbuilder 低代码平台实现,带领大家体验从系统设计到系统上线的开发全过程,涉及到业务对象定义、业务实体定义、通用构件定义、单据流定义和发布、表单开发、菜单发布、补丁制作与安装等 inbuilder 平台的多种功能。开发者可以参考系列文档一步一步实现自己的单据流功能,希望开发者通过系列文章不仅仅能学会单据流开发技术,还能够对 inbuilder 低代码有更深刻的理解。
下面我们就以单据流入门示例中的推式生单场景为例,开始手工生单开发实战。
3.1 业务场景介绍
单据流入门示例工程为开发者提供了一个简化的业务系统,该系统中有销售订单和发票两种业务单据,麻雀虽小五脏俱全,除了基本的增删改查操作外,还实现了三种方式的销售订单到发票的单据转换(自动生单、推式生单、拉式生单),发票回写销售订单的开票状态字段,以及单据追踪功能。
其中推式生单流转逻辑如下:
(1)订单列表菜单中选择一条订单,点击【下推】按钮,弹出可使用的生单流程列表,选择生单流程后执行下推自动打开发票卡片表单。
(2)打开发票卡片后,通过生单流程生成的编号、金额等映射数据会自动加载至表单,用户点击【保存】按钮完成推式生单。
3.2 新建生单流程
(1)打开单据流定义
在【企业数字化云平台】中,打开我的应用,找到【流程平台】-【业务流平台】-【单据流定义】,建立销售订单同步生成发票的生单流程。
(2)点击【新建】按钮,打开【新建单据流】弹窗
流程类型选择【生单】,上游单据选择【销售订单(bifsobe.be)】,下游单据选择【发票(bifinvbe.be)】,点击【确定】。
(3)填写【基本信息】面板
【编号】填写 cp_BifSo2InvVue,【名称】填写销售订单生成发票 Vue,【调用方式】选择【同步】,【集成场景】勾选【人工推式生单】。
(4)配置【转换规则】页签
【目标对象】选择【发票】,【源对象】选择【销售订单】。
【映射列表】中,勾选要映射的字段,其中【主键(ID)】一行【映射类型】选择【GUID】。
如果生单流程所使用的视图对象字段发生变化,需要在映射规则组件中手动点击【获取模型变更】来同步最新的视图对象结构。
(5)点击【保存】后再点击【发布】。
以下是生单流程的配置截图。

3.3 推式生单开发
3.3.1 上游端:销售订单列表
表单设计器切换至【模型】页签下,添加方法,控制器使用【手工生单上游单据端控制器】,方法使用【根据上游单据(BE/VO)选择生单流程并下推(pushBySourceCmId)】。
(1)表单设计器切换至【模型】页签下,选中【根据上游单据(BE/VO)选择生单流程并下推 1(rootPushBySourceCmId1)】,填写方法参数。

(2)表单设计器切换至【页面】页签下,工具栏点击【新增按钮】,右侧属性框内【属性】-【标签】设置为下推,【交互】-【新建交互事件】-【点击事件】-【已有方法】,选中【根据上游单据(BE/VO)选择生单流程并下推】后点击【确定】。

(3)点击顶层工具栏的【发布】按钮,编译部署销售订单业务对象下的元数据。同时点击表单的【运行】按钮,编译表单。
3.3.2 下游端:发票卡片
表单设计器切换至【模型】页签下,添加方法,控制器使用【手工生单下游单据端控制器】,方法使用【单据流加载(bifLoad)】。
(1)表单设计器切换至【模型】页签下,选中【单据流加载 1(rootBifLoad1)】,填写方法参数,确认【当前表单绑定的视图对象(VO)Id】参数值是否正确,当前表单绑定的视图对象(VO)Id 使用创建表单生成的视图对象(VO)。

(2)点击顶层工具栏的【发布】按钮,编译部署发票业务对象下的元数据。同时点击表单的【运行】按钮,编译表单。
3.3.3 修改生单流程
在【企业数字化云平台】中,打开我的应用,找到【流程平台】-【业务流平台】-【单据流定义】,编辑编号为 cp_BifSo2InvVue 名称为销售订单生成发票 Vue 的生单流程。
(1)配置【单据配置】页签
【推式生单配置】面板,选择【直接打开】,配置【菜单】选择办理菜单发票卡片 Vue(BifInvCardVue),【参数】填写编号 action 值 rootBifLoad1。

(2)点击【保存】后再点击【发布】。
至此,推式生单功能开发完成。在销售订单列表中选中一行数据,点击【下推】按钮,弹出生单流程弹窗,选中生单流程后点击【确定】会打开发票卡片并加载生成的数据,在发票卡片中点击【保存】完成操作。
3.4 运行效果演示
(1)打开【销售订单列表 Vue】功能菜单,选中任意单据,点击【下推】按钮。

(2)选择生单流程,点击【确定】,等待界面跳转。如果只有一个生单流程则直接生单,不弹出下方界面。

(3)输入框内信息保持默认值,也可以任意修改,点击【保存】按钮,等待保存完成。

(4)查看下推结果,打开【发票列表】功能菜单检查发票是否生成,可以看到生成了一条发票数据。

四、结语
iGIX 单据流平台通过其松耦合架构设计使企业能够快速响应市场变化,按需搭建"乐高式"业务组合;图形化配置界面将业务专家从 IT 依赖中解放,真正实现"业务主导数字化"的转型范式。在产业互联网纵深发展的今天,这种敏捷、智能、可持续的单据流管理能力,正成为企业构建数字化竞争力的关键基础设施。
欢迎大家来使用和体验,并为我们提出宝贵的意见和建议,共同推动产品的进步与发展。
相关链接:
欢迎大家积极留言共建,期待与各位技术大咖的深入交流!
此外,欢迎大家下载我们的inBuilder低代码社区版,可免费下载使用,加入我们,开启开发体验之旅!
评论