在这里插入图片描述

每个业务系统都会遇到同一个尴尬:数据是变了,但没人知道。
采购入库了,库存管理员不知道要去核对;日管控该填了,没人提醒;一条异常记录躺在表单里,等第二天早上才被人翻出来。我做的这个零代码平台(ZeroCode)里,表单、数据表、权限都是现成的,唯独"数据变了之后自动发生点什么"这件事,之前一直缺一块。

这一篇就聊聊我把这块补上的全过程:一个可视化自动化工作流(基于 LiteFlow v2),以及最新加进去的「发送通知」节点——让钉钉、企业微信、飞书的群机器人,在记录变化的那一刻,自动把消息推进群里。


一、先看全景:自动化能做什么

在这里插入图片描述

整套自动化围绕一条链路:触发器 → 条件分支 → 动作执行。

触发器盯着一份数据表,支持五种时机:记录创建时、记录更新时、字段变更时、记录删除时、手动触发。还可以配 and / or 过滤条件——比如"金额大于 1 万且状态为待审批"才触发,而不是什么变动都响。

条件分支让流程长出判断力。每个分支有优先级,从上往下依次匹配,命中即走,匹配不到就走默认分支兜底。

动作目前有五种:更新记录、创建记录、发送邮件、调用 Webhook,以及这次新加的发送通知。所有动作的标题、内容、字段值都支持 {{表达式}} 插值,可以直接引用触发记录里的任何字段,甚至触发表子表的每一行。

二、一个真实的例子:入库验收库存同步

光说抽象的没意思,看一个正在生产环境跑着的流程:

在这里插入图片描述

采购入库单创建时,流程启动:

  1. 已有库存记录分支(优先级 1):如果 [库存总账] 里这条商品存在,走「增量更新库存」,把入库数量加到现有库存上;
  2. 默认分支:商品第一次入库,总账里还没有它,走「新建库存记录」建一条。

注意左边分支的描述——“增量更新 3 个字段赋值(目标:跨表条件命中的记录)”。这是零代码自动化里最实用的能力:动作能跨表、能按条件、能用表达式算值,而不是傻乎乎地整条覆盖。

这个画布是所见即所得的:上方触发器卡片,下方垂直流程,点节点上的 “+” 就能插入动作或条件分支。整个画布的布局是 DingTalk 风格的竖版结构,保存在 design_json 里无损回显,同时拍平成节点表供引擎执行。

三、缺的那块:群通知

上面这套流程跑起来之后,数据确实自动同步了——但"同步完成"这个事件本身,还是没 anyone knows。运维群、业务群才是值班同学真正盯着的地方。

所以有了这次的「发送通知」节点。设计器里点 “+”,动作菜单里多了个橙色图标:

在这里插入图片描述
节点的配置刻意做得极简:选一个通知渠道,填标题和内容,完事。
在这里插入图片描述
标题和内容都是模板,右侧「插入变量」可以把触发记录的字段直接塞进去。比如:

日管控填写提醒
记录 {{trigger.record._id}} 已更新,请及时填写日管控内容。

执行时这些占位符会被真实数据替换——用户不需要知道什么模板引擎,他只知道"选中,插入,完事"。

四、通知渠道:一次配置,全公司复用

通知渠道不在流程里配,而是抽成了一个独立资源(应用管理 → 工作流自动化 → Webhook 配置 → 「通知渠道」Tab):

在这里插入图片描述

支持三类群机器人:

  • 钉钉自定义机器人:安全设置推荐「加签」,填 SEC 开头的密钥;
  • 企业微信群机器人(官方现在叫"消息推送"):无需签名,保管好 key 即可;
  • 飞书自定义机器人:推荐开启「签名校验」。

渠道是全局的:建一次「运维告警群机器人」,几十条自动化流程都能引用它。密钥落库后不再回显(前端拿到的永远是空),避免 secrets 在页面间裸奔。每条渠道自带「测试」按钮,不用等到流程触发才知道配置对不对。

在这里插入图片描述

五、它是怎么跑起来的

在这里插入图片描述

实现上分四步:

  1. 设计器画布保存 design_json(无损)并拍平到 z_lf_nodes 节点表;
  2. 触发时 LfCompiler 把节点树编译成 LiteFlow EL 表达式,比如 THEN(lfNotify.tag("节点id")),有分支就生成 WHEN/IF 结构;
  3. 扔到独立线程池(lfExecutor)异步执行,不阻塞记录保存的主事务;
  4. lfNotify 组件渲染模板变量 → 读渠道配置 → 按平台构建 payload → 同步 POST(15 秒超时)。

六、测试运行:亲眼看见钉钉的回复

设计器顶栏有「测试运行」,选一条记录手动触发一次:
在这里插入图片描述

截图里这次运行的状态是 error,错误是 通知渠道投递失败: {"errcode":3000...}——因为我故意用了个假 token。这恰好是最好的证明:请求真的打到了钉钉服务器,钉钉回了"token is not exist"(300005)。换成真实机器人地址,这里就是一条绿色的成功日志。

失败不是静默的:节点日志、实例状态、错误原文都留在执行记录里,排障不用翻服务器日志。

七、写在最后

现在这个平台的自动化,从"数据变了"到"群里收到消息",全程不写一行代码:

  • 值班提醒:日管控表 24 小时没更新 → 钉钉群 @相关人(文案里带记录链接);
  • 库存预警:入库验收后自动增量更新总账,异常时飞书群告警;
  • 审批流转:审批状态变更 → 企业微信群里推一条 markdown 摘要。

接下来还想补几件事:企微 markdown_v2 与 @群成员、通知失败后的自动重试与退避、以及把触发器扩展到定时类。

如果你也在做类似的自动化引擎,或者在给自己的系统接群机器人,欢迎交流。

八、在线体验与私有化部署

在线体验:http://103.236.98.220:28888(登录后进入「应用管理」即可看到本文的自动化设计器与通知渠道)

  • 支持私有化部署:提供 Docker 镜像,内网一键拉起,数据不出内网;
  • 二次开发:源码级开放(前端 Vue 3 + Element Plus,后端 RuoYi-Vue-Plus / Spring Boot),可自由扩展字段类型与业务逻辑。
docker pull registry.cn-zhangjiakou.aliyuncs.com/xuanyuanke/zerocode:latest
Logo

一站式 AI 云服务平台

更多推荐