NocoBase 工作流实战:用触发器、条件判断与更新数据节点让系统自动干活

NocoBase 工作流实战:用触发器、条件判断与更新数据节点让系统自动干活 NocoBase 工作流实战用触发器、条件判断与更新数据节点让系统自动干活【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobaseNocoBase 工作流Workflow是内置的可视化自动化引擎允许不写代码即可编排如果……那么……式的业务规则。本文以工单系统为例完整演示数据表事件与自定义操作事件两类触发器的配置方法以及通知、条件判断、更新数据节点的组合用法帮你快速掌握自动化流程的搭建、测试、版本管理与排障。工作流是什么触发器 节点的自动化规则工作流就是一套自动化的如果……那么……规则与手机闹钟的原理一致——条件满足到了 8 点就自动执行响铃。在 NocoBase 中一个工作流由一个触发器与若干节点编排而成触发器工作流的入口代表系统中的事件例如有人创建了一条新工单或某条数据被更新了条件判断可选的过滤步骤例如只有处理人不为空时才继续执行动作真正干活的节点例如发送通知或更新某个字段。工作流的执行动作可以串联多个节点常用节点类型包括流程控制条件判断、并行分支、循环、延时数据操作新增数据、更新数据、查询数据、删除数据通知与外部通知、HTTP 请求、运算。从项目文档来看工作流在 NocoBase 应用中主要解决四类问题自动处理重复性任务订单审核、库存同步、评分计算等、支持人机协同关键节点安排审批或复核、连接外部系统HTTP 请求、接收外部推送、快速适应业务变化调整流程或节点配置无需发版即可上线。工作流是内置插件无需额外安装或配置开箱即用。触发器类型一览NocoBase 提供了多种触发器类型在创建工作流时选择触发器说明典型场景数据表事件数据新增、更新或删除时触发新工单通知、状态变更记录定时任务按 Cron 表达式或固定时间触发每天生成日报、定期清理过期数据操作后事件用户在界面执行操作后触发表单提交后发送通知、记录操作日志审批发起审批流程支持多级审批请假审批、采购审批自定义操作绑定到自定义按钮点击触发一键归档、批量操作操作前事件拦截用户操作同步执行后再放行提交前校验、自动补全字段AI 员工将工作流作为工具提供给 AI 员工调用AI 自动执行业务操作后续两个实战场景分别使用数据表事件和自定义操作事件两种触发器其他类型用法类似学会后即可举一反三。数据表事件监听数据增删改查数据表事件触发器会监听指定数据表的增删改查事件当发生数据操作且满足配置的条件时触发工作流。触发时机有四种新增数据后、更新数据后、新增或更新数据后、删除数据后。当变动情况包含更新时还可以限定发生变动的字段——只有选中字段发生变动才触发也可以对数据行各字段配置条件规则满足条件才触发。触发后产生事件的数据行会作为触发上下文数据注入执行计划供后续节点以变量方式调用若后续节点需要使用关系字段需在触发器中配置预加载关系数据。需要特别注意它的限制暂不支持批量数据操作触发如新增文章时同时新增多个标签仅文章新增触发非应用内的数据操作不会触发——直接通过数据库或 SQL 操作节点改数据无法触发数据表事件外部数据源只要在应用内完成的数据操作用户新增、更新和工作流数据操作等即可触发。自定义操作事件按钮驱动的自动化自定义操作事件触发器对应插件nocobase/plugin-workflow-custom-action-trigger用于内置增删改查无法满足复杂业务需求时的场景将事件绑定到页面区块的触发工作流按钮上用户点击后触发工作流。其上下文类型v1.6.0决定可绑定的区块范围无上下文全局事件可绑定操作面板、数据区块按钮、单行数据表格行、表单、详情等数据区块按钮、多行数据表格批量操作按钮需先勾选数据行才触发。当上下文类型为单行或多行时需要选择绑定的数据表并可预加载待使用的关系数据。自定义操作事件还支持通过 HTTP API 调用触发所有数据表操作都新增了trigger操作类型例如无上下文工作流调用POST /api/workflows:trigger?triggerWorkflowsworkflowKey单行记录调用POST /api/samples:trigger/:id?triggerWorkflowsworkflowKey多行记录则传入filterByTk[]参数调用时需携带Authorization、X-Role等认证信息。triggerWorkflows参数为工作流 key可在画布顶部工作流名称处悬浮获取多个 key 用逗号分隔。场景一新工单自动通知处理人需求当有人创建了一条新工单并指定处理人系统自动给处理人发一条站内消息让他知道有活儿来了。第一步创建工作流打开右上角插件配置菜单进入工作流管理点击新建在弹出的对话框中填写名称新工单通知处理人触发器类型选择数据表事件。提交后点击列表中的配置链接进入流程编辑界面。第二步配置触发器点击顶部的触发器卡片打开配置抽屉数据表选择 主数据源 / 「工单」触发时机选择「新增或更新数据后」发生变动的字段勾选「处理人Assignee」——只有处理人字段变了才触发避免其他字段的修改产生不必要的通知新增数据时所有字段都被视为发生变动所以新建工单也会触发满足以下条件才触发模式选「满足组内任意条件」添加两个条件assignee_id不为空Assignee / ID不为空为什么要配两个条件因为触发时表单里可能只有外键assignee_id而没有查出关联对象也可能有了关联对象但外键字段为空。两个条件用 OR 关系确保只要指定了处理人就一定触发。预加载关联数据勾选「Assignee」——后续通知节点需要用到处理人的信息必须在触发器里提前加载。保存后触发器本身就完成了条件判断——只有处理人不为空时才触发不需要额外添加条件判断节点。第三步添加通知节点点击触发器下方的选择通知节点。打开配置后第一项是选择通知渠道——由于尚未创建过渠道下拉列表是空的需要先去创建一个。第四步创建通知渠道NocoBase 的通知管理是集成多渠道通知方式的中心化服务对应插件nocobase/plugin-notification-manager提供统一的渠道配置、发送管理和日志记录目前支持站内信In-App Message内置渠道与电子邮件Email内置 SMTP 传输方式也可扩展短信、钉钉、飞书等渠道。渠道类型说明站内信浏览器内通知实时推送到用户的通知中心邮件通过 SMTP 发送邮件需要配置邮件服务器本教程使用最简单的站内信渠道打开右上角插件设置进入通知管理点击新建渠道渠道类型选择站内信填写渠道名称如系统站内信保存。第五步配置通知节点回到工作流编辑页面打开通知节点的配置通知渠道选择刚才创建的「系统站内信」接收人点击选择 查询用户 → 「id 触发器变量/触发数据/责任人/ID」标题填写通知标题如你有一条新工单待处理支持插入变量比如加上工单标题新工单{{触发数据 / 标题}}内容填写通知正文同样可插入变量引用工单的优先级、描述等字段桌面端详情页填写工单详情页的 URL 路径。获取方式在前端打开任意一条工单的详情弹窗复制浏览器地址栏中的路径格式类似/admin/camcwbox2uc/view/d8f8e122d37/filterbytk/353072988225540。将路径粘贴到配置框中其中filterbytk/后面的数字就是工单 ID——把这部分替换为触发数据的 ID 变量即可点击变量选择器 → 触发数据 → ID。配置后用户在通知列表中点击该通知就能直接跳转到对应工单的详情页同时自动标记为已读发送失败时继续可选勾选后即使通知发送失败工作流也不会中断。通知发出后处理人可以在页面右上角的通知中心里看到这条消息未读的还会有红点提示。点击通知即可跳转到工单详情页查看完整信息。第六步测试并启用场景一的完整流程只有两个节点触发器含条件过滤→ 通知。先别急着启用——工作流提供了手动执行功能可以用指定数据测试流程是否正确点击右上角的执行按钮不是启用开关选择一条已有的工单数据作为触发数据。如果工单选择栏中展示的是 id在 数据源 数据表 工单 中将标题列设置为标题字段即可点击执行工作流会执行并自动切换到复制的新版本点击右上角的三个点选择执行历史即可看到刚才的执行记录点击查看能看到触发情况和每个节点的执行细节、参数如果刚才那条工单是给 Alice 的切换到 Alice 的账号登录可以看到通知已成功送达点击可跳转到目标工单页通知自动标记为已读。确认流程没问题后点击右上角的启用/停用开关将工作流切换为启用状态。注意工作流一旦被执行过包括手动执行就会变成只读状态灰色不能再编辑。如果需要修改点击右上角的「复制到新版本」在新版本上继续编辑旧版本会自动停用。最后回到工单页面创建一条新工单并指定处理人切换到处理人账号检查通知中心即可看到新通知。第一个自动化流程就跑起来了。场景二状态变更自动记录完成时间需求当工单状态变为已完成时系统自动在完成时间字段填入当前时间不需要手动记录也不会忘。如果工单表中还没有完成时间字段请先到数据表管理 → 工单中添加一个日期类型的字段命名为完成时间。第一步新建工作流回到工作流管理页面点击新建名称填写工单完成自动记录时间触发器类型选择自定义操作事件用户点击绑定了该工作流的按钮时触发执行模式同步。关于同步与异步异步模式下操作之后可以继续做其他事情工作流自动执行后通知结果同步模式下界面会处于等待状态等工作流执行完毕之后才能进行其他操作。如果操作流程需要比较及时的反馈可以选择同步模式注意同步模式下不能使用人工处理等异步类型的节点。第二步配置触发器打开触发器配置数据表选择「工单」执行模式选择单行模式每次只处理当前点击的那一条工单。第三步添加条件判断不同于数据表事件触发器自身包含判断条件这里需要自己添加条件判断节点。推荐选择「是和否分别继续」模式以便于后续扩展。条件设置为触发数据 → 状态不等于已完成——即只有未完成的工单才会通过是分支已完成的不再重复处理。从节点实现来看条件判断节点类似于编程语言中的if语句创建时有‘是则继续和‘是和‘否分别继续两种模式且创建后不可修改。前者在条件为否时流程以失败状态提前终止适合库存不足则终止下单这类场景后者产生两条分支分别配置后续节点执行完毕后自动汇合到上级分支继续。其运算引擎支持三种基础双目计算 与/或分组、Math.jsMath.js 表达式、Formula.jsFormula.js 表达式均可使用流程上下文变量作为参数。第四步添加更新数据节点在条件判断的是分支上点击选择更新数据节点数据表选择「工单」筛选条件ID 等于 触发数据 → ID确保只更新当前这条工单字段值状态 已完成完成时间 系统变量 / 系统时间这样一个节点就同时完成了改状态和记时间两件事不需要在按钮上单独配置字段值。关于更新数据节点的底层行为文档说明它与新增节点的区别是增加了筛选条件、需要选择更新模式批量更新不会再触发每条更新数据的数据表事件性能较好适合大数据量更新逐条更新会触发每条更新数据的数据表事件大数据量下有性能问题需谨慎使用。根据主键更新单条数据的建议用逐条更新根据条件更新多条数据的建议用批量更新。另外更新节点的结果更新成功的行数只在执行历史里可查看不可作为变量供后续节点使用且更新数据不会自动处理最后修改人字段需要时须自行配置。第五步创建完成操作按钮工作流配好了但自定义操作事件需要绑定到具体的操作按钮上才会触发。在工单列表的操作列中创建一个专用的完成按钮进入 UI 编辑器模式在工单表格的操作列中点击「」选择「触发工作流」操作按钮点击按钮的配置项将标题修改为「完成」并选择一个完成相关的小图标如对勾图标给按钮配置联动规则当工单状态已经是已完成时隐藏这个按钮已完成的工单不需要再点完成——条件当前数据 → 状态 等于 已完成动作隐藏打开按钮配置项中的「绑定工作流」选择刚创建的「工单完成自动记录时间」工作流。第六步配置事件流刷新按钮创建好了但点击后表格不会自动刷新——用户看不到状态变化。需要配置按钮的事件流让它在工作流执行完毕后自动刷新表格点击按钮配置项中的第二个闪电符号⚡打开事件流配置配置触发事件触发事件选择点击执行时机选择所有流之后点击「追加步骤」选择「刷新目标区块」找到当前页面的工单表格打开它的配置菜单选择最下面的「复制 UID」将 UID 粘贴到刷新步骤的目标区块中。这样点击完成按钮后工作流执行完毕表格会自动刷新用户立即就能看到状态和完成时间的变化。第七步启用并测试回到工作流管理页面启用「工单完成自动记录时间」工作流。然后打开一条状态为处理中的工单在操作列中点击「完成」按钮可以看到工单的完成时间字段自动填上了当前时间表格自动刷新完成按钮在这条工单上已经消失联动规则生效。这就是工作流的第二种常见用法——自动更新数据。通过自定义操作事件 绑定按钮的方式实现了精确的触发机制只有点击特定按钮才会执行工作流。查看执行历史调试工作流最重要的工具工作流跑了几次有没有出错在工作流管理列表中每个工作流后面都有一个执行次数的数字链接点击可看到每次执行的详细记录执行状态成功绿色还是失败红色一目了然触发时间什么时候触发的节点详情点进去可以看到每个节点的执行结果。如果某次执行失败了点进详情可以看到是哪个节点出了问题以及具体的错误信息。从执行计划文档可知每个工作流触发后都会创建对应的执行计划即执行历史以跟踪执行过程。执行计划的状态如下表状态对应主流程最后执行的节点状态含义队列中-流程已触发并生成执行计划排队等待调度器安排执行进行中等待节点要求暂停等待进一步输入或回调再继续完成完成未遇到任何问题所有节点按预期逐个执行完成失败失败由于未满足节点配置导致失败出错出错节点遇到未捕获的程序错误提前结束取消取消等待中的节点被流程管理者从外部取消执行提前结束拒绝拒绝在人工处理的节点中被人工拒绝不再继续后续流程节点执行后也会产生对应状态等待、完成、失败、出错、取消、拒绝其中除等待外其他状态都是终态只有终态为完成才会继续执行后续节点否则提前终止整个流程。例如使用‘是则继续模式的条件节点时结果为否会以失败状态提前退出。所有非完成的终止状态都可视为失败但失败原因不同可查看节点执行结果进一步分析。另外需要注意工作流可以被并发触发但执行是逐个排队执行的不会并行执行出现队列中表示有其他工作流正在执行需要等待。小结这一章创建了两个简单但实用的工作流新工单通知数据表事件触发新建或变更处理人后自动通知不用再人工喊话自动记录完成时间自定义操作事件触发点击完成按钮后自动填写时间杜绝人为遗漏。两个工作流分别演示了两种不同的触发方式加起来不到 10 分钟的配置量系统就已经能自动干活了。NocoBase 还支持更多节点类型HTTP 请求、运算、循环、审批等但对于入门来说掌握数据表事件 条件判断 更新数据 通知这套组合就足以应对大多数场景。相关资源工作流概述 — 工作流核心概念与使用场景工作流快速开始 — 第一个工作流的完整配置流程数据表事件触发器 — 数据变更触发配置与示例自定义操作事件触发器 — 按钮触发与 HTTP API 外部调用条件判断节点 — 流程分支与运算引擎更新数据节点 — 自动更新数据的筛选、模式与字段赋值执行计划历史记录 — 执行状态、节点状态与排障通知管理 — 站内信、邮件等通知渠道配置【免费下载链接】nocobaseNocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven infrastructure and a WYSIWYG no-code interface, so you get both speed and reliability.项目地址: https://gitcode.com/GitHub_Trending/no/nocobase创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考