技术背景:为什么报销是验证低代码引擎协同的理想场景
报销业务天然具备高频提交、多角色参与、强规则约束(如金额阈值、部门归属、附件类型)和高用户感知等特征。对技术人员而言,它恰好覆盖结构化数据采集、状态驱动流转、异步自动化处理三类典型技术需求——这正是JVS表单引擎(JVS-form)、流程引擎(JVS-flow)、逻辑引擎(JVS-logic)协同设计的验证场域。
引擎职责与接口契约:松耦合下的能力编排
JVS三大引擎通过标准化上下文传递实现联动,不依赖硬编码集成:
- 表单引擎:作为数据入口,提供拖拽式控件(数字输入框、富文本、多文件上传),支持前端校验规则(如
amount > 0、正则匹配发票号)。提交后输出标准JSON Schema结构化数据;
- 流程引擎:接收表单ID及数据快照,基于预设条件(如
data.amount > 5000)动态路由至不同审批节点;支持抄送、加签、退回等状态变更,并将审批结果写入流程上下文;
- 逻辑引擎:监听四大触发源(表单提交、流程节点完成、定时器、外部API调用),通过画布节点编排服务链路;可读取表单原始数据或流程上下文(如
flowContext.approver.userId),执行数据更新、Webhook推送等动作。
三者间通过统一的数据上下文(Context)传递关键字段,例如:表单提交后自动携带formId与formData触发流程;流程节点完成后,自动注入flowInstanceId与approvalStatus供逻辑引擎消费。
实战步骤:三步完成可运行报销应用(含关键配置点)
所有操作均在浏览器内完成,无需重启服务、无需部署代码,保存即实时生效。
第一步:构建结构化表单(JVS-form)
- 拖入「数字输入框」控件,字段名设为
amount,开启「必填」并配置校验表达式:value > 0 && value % 1 === 0.01(确保两位小数);
- 添加「多行文本」控件,字段名
reason,启用富文本;
- 插入「文件上传」控件,限制类型为
image/jpeg,image/png,application/pdf,最大数量3;
- 在表单设置中启用「提交前校验」,失败时阻断提交并提示错误位置。
第二步:配置条件分支审批流(JVS-flow)
- 新建流程,关联上一步表单;
- 首节点设为「部门负责人审批」,审批人按组织架构自动匹配
deptLeader角色;
- 添加「条件网关」节点,判断
$form.amount > 5000:
- 成立 → 追加「财务复核」节点,审批人固定为
role:finance_auditor;
- 不成立 → 直接进入「管理层终审」节点,启用「手写签名强制验证」开关;
- 所有审批节点启用「超时自动提醒」,周期设为
PT2H(2小时)。
第三步:编排自动化逻辑(JVS-logic)
- 创建逻辑,触发类型选「表单提交后」,绑定对应表单ID;
- 第一节点使用「公式计算」:
```
'BX' + formatDateTime(now(), 'yyyyMMdd') + padLeft(sequence('reimburse_seq', 5), '0')
```
输出字段映射至reimburseNo;
- 第二节点使用「网络请求」:
- 方法:POST;
- URL:钉钉机器人Webhook地址(需提前在逻辑变量中配置为
dd_webhook_url);
- Body(JSON):
```json
{
"msgtype": "text",
"text": {
"content": "【报销待审】${formData.reason}(${formData.amount}元),审批链接:${flowContext.approvalUrl}"
}
}
```
- 保存逻辑并启用。
发布为轻应用:从配置态到运行态的关键跃迁
配置完成后,需通过JVS-AppM模块打包发布,才能被终端用户访问:
- 进入「应用管理」→「新建轻应用」,勾选已配置的表单、流程、逻辑及关联数据模型;
- 设置权限范围:支持按组织架构(如
/公司/销售部)、角色(budget_admin)或具体用户ID列表授权;
- 发布后生成独立访问路径(如
/app/reimburse-v1),PC端菜单直达,移动端扫码即开;
- 权限策略与流程节点审批人规则自动对齐——例如流程中指定
role:deptLeader,则发布时该角色成员自动获得审批入口。
提示:所有引擎均提供调试模式。可在表单提交后查看完整上下文日志(含formData、flowContext、logicContext),快速定位字段缺失或表达式错误。