数据源与字典元数据:系统的血管
表单里的下拉选项是谁定的?外部 ERP 的数据怎么进来?审批通过以后,怎么通知另一个系统?答案都藏在表单背后的那层地基里——数据源与字典元数据。我把它叫做系统的血管。
先看没有这座桥会怎样
想做下拉框、想取 ERP 的数据、想在审批通过后通知外部系统,最笨的办法是各处各写各的:请假表单自己去连,报销表单自己去连,客户单据、流程事件,全都自己硬编码——十二条线交叉纠缠。
代价就一句话:换个接口,每处都要改一遍,改一处漏三处。
有了数据源之后,所有的线先汇聚到中间这一个桥上。上层只认四类接口,换对接方式只改这一处配置。这就是数据源的第一价值——把杂乱的点对点,收敛成一个可配置的桥。
数据源是什么
一句话:面向业务应用的统一数据组件,是应用与外部系统之间的桥梁。
单据、实体、流程、大屏,都不直接对接第三方系统。它们通过数据源来完成下拉展示、结果集查询、和业务过程调用。三层结构:
- 最上面是应用层:流程、表单、大屏、低代码;
- 中间是数据源:对外提供枚举、字典、查询、过程四类能力,外加一个扩展能力叫数据同步;
- 最下面是外部系统:本机库、关系数据库、WebApi。
上层是引用式消费,不做硬编码;下层是统一管理连接,不重复写。
三类数据源:桥的那头管连接
- 本机数据源:平台自己的默认数据库,内置编号就叫 local。枚举、系统字典、平台内的表数据都走它;
- 关系数据库数据源:通过连接串去访问外部的关系型数据库。SQL 该怎么写还怎么写,只是连接被统一管起来了。典型:ERP、历史库、报表库;
- WebApi 数据源:通过 HTTP 协议带参数去取数据。对方是 SaaS 也好、微服务也好,对上层没有区别。
连接这一层解决的是"到得了"——取回来怎么用,是四类能力的事。
四类能力:桥的这头管语义
上层从来不关心底层是 SQL 还是 HTTP,它只认这四类接口。
枚举:用户定义的命名常量集合,键值成对。0=女、1=男;政治面貌 0 群众、1 团员、2 党员。支持 Int / String,可配颜色,列表和状态流程里能直接按颜色区分。它只挂在本机数据源上;删除前系统会检查表单字段的引用,防止把已上线表单的下拉框改坏。
字典:下拉框、级联、树形选择都靠它。分两种结构:编码字典=编号+名称,城市、产品类型这类平铺选项;树字典=编号+名称+父节点,部门、菜单、分类这类有层级的。字典还可以带参数:在 SQL 里放一个占位符,拿上一个框的值做过滤条件,省 → 市 → 区的级联就做出来了。流程里的接收人规则可以引用字典,按部门或角色解析下一步处理人。
查询:给参数,返回一个结果集。要做三件配置——参数定义、返回列定义、映射方案。分两种:实体查询(单行),按客户编号取详情、按工号查年假余额;集合查询(多行),人员列表、车辆台账、客户关系表。最常见的用法是 Pop 弹窗选择、装载填充(选完客户自动带出地址联系人)、从表填充。多行集合查询还能直接驱动图表——它就是大屏和报表的数据源。
过程:也是给参数,但执行的不是读取,而是一个动作,返回结果只是顺带的。**查询是读数据,过程是做事情。**过程强调副作用与事务性,用在四个地方:流程节点事件(审批通过了去调 ERP 的过账接口)、流程结束事件(触发库存扣减、积分变更)、表单按钮(保存前校验、作废、修改密码)、与外部系统的写操作(创建第三方工单)。
判断很简单:要读一组数据用查询,要改别人系统里的东西用过程。
一个请假流程,四种一次用齐
真实的系统从来不是只用一种:
- 枚举 → 请假类型:事假 / 病假 / 年假,固定不变;
- 字典 → 申请人部门:树结构字典,取自本机 SQL;
- 查询 → 年假余额:实体查询,按工号返回这个人还剩几天;
- 过程 → 同步考勤系统:WebApi POST,在流程结束时调用——请假一生效,考勤那边同步更新。
四种各管一段:枚举管固定选项,字典管组织架构,查询管实时数据,过程管写到别处。
落到产品上:连接与定义分离
数据源在产品里是一个树表联动的界面——左边一棵树、右边一张表。一级节点是数据源实例(本机 local、各条 SQL 连接、各条 WebApi 连接);二级节点是能力分类(枚举 / 字典 / 查询 / 过程);右侧列表是具体配置项。
重点在这里:**一条 ERP 连接下面,可以配几十个字典和查询——连接信息只维护一次。**连接由数据源实例统一管理,字典、查询、过程只管业务语义。这就是"连接与定义分离"的好处。
这套设计好在哪
- 统一抽象:上层只认四类接口,不用管底下是 SQL 还是 HTTP。换对接方式,多数情况只改配置;
- 连接与定义分离:连接信息只维护一次,业务语义独立配置;
- 上下文能注入:支持 @WebUser.No、@Token、@WorkID 这类占位符,让级联、权限过滤、流程上下文传递在配置层就完成,大大减少定制代码。
上手提醒:SQL、API 路径、POST 体、参数别名要同时掌握,曲线不算平坦——多用编辑页里的"测试"按钮,别等到运行时才把问题暴露出来。
小结
表单里的每一个下拉框、每一次积分扣减、每一张外部报表,往上追都会追到这座桥——这就是系统的血管。
417



被折叠的 条评论
为什么被折叠?



