ToolJet Workflows 实战指南:用可视化节点编排数据自动化流程
ToolJet Workflows 实战指南用可视化节点编排数据自动化流程【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJetToolJet Workflows 是 ToolJet 内置的可视化、节点式自动化编排引擎让开发者和业务人员无需编写大量代码就能把数据库查询、数据转换、条件分支、循环处理和第三方服务调用组合成可复用的自动化流程。本文基于官方文档 docs/docs/workflows/overview.md带你从零搭建一个员工数据筛选 Twilio 短信通知的完整工作流并深入讲解节点类型、触发方式与底层源码实现读完即可在自己的 ToolJet 实例中落地第一套数据自动化。什么是 ToolJet WorkflowsToolJet 通常被用于快速构建内部工具与仪表盘而Workflows把它的能力从界面搭建延伸到了后端流程编排。它使用一种基于节点的可视化画布node-based interface让用户把离散的步骤——查库、过滤、发消息、判断成败——串联成一条可执行的自动化链路。从官方文档的定位看Workflows 主要解决三类问题后台流程处理把耗时、重复的数据处理逻辑从应用前端剥离出来集中到工作流中执行数据转换与集成连接多个数据源数据库、REST API、邮件/SMS 服务等在其间搬运和加工数据复杂自动化通过条件分支、循环等逻辑节点实现如果……就……式的业务规则。在架构上每个工作流由一张画布上的多个节点Node组成节点是流程中每个处理步骤的图形化表示。每个节点都能访问其之前已执行节点产生的结果数据从而形成数据的链式流动。工作流本身独立于应用存在但可以被应用以查询的形式调用也可以被外部系统通过 Webhook 触发这让 ToolJet 成为一个更完整的内部工具与自动化平台。工作流的节点类型要理解工作流首先要认识画布上的几类核心节点详见 docs/docs/workflows/nodes.md。Start Trigger 节点Start Trigger节点是工作流的入口画布上新建工作流时会自动存在。它可以通过两种方式被触发在 ToolJet 应用中以类似查询的方式手动触发由外部系统通过 Webhook 触发。通过触发参数传入 Start 节点的数据在整个工作流中都可以访问例如 Webhook 场景下可通过startTrigger.params读取。JavaScript 节点JavaScript节点用于编写自定义服务端代码典型用途包括转换数据、执行复杂计算、生成自定义消息、承载业务逻辑。需要注意代码必须包含return语句才能把结果传递给后续节点。If Condition 节点If condition节点实现分支逻辑支持一条或两条输入流输出两条路径true/false。当条件表达式求值为true时执行连接到绿色箭头上的节点求值为false时执行连接到红色箭头上的节点。Loop 节点Loop节点用于遍历数据集支持迭代数组、顺序处理每一项、对每个元素执行操作、汇总处理结果。典型场景是对筛选出的每条记录循环发送通知。数据源节点数据源节点连接已配置的数据源可执行数据库查询、发起 API 调用、发送邮件/短信、与外部服务交互。每种数据源节点的配置字段各不相同例如PostgreSQLSQL 查询字段REST APIHTTP 方法、端点、请求头Twilio短信发送相关配置字段。Response 节点Response节点定义工作流的最终输出可通过 JavaScript 代码配置返回内容每个工作流可以配置多个 Response 节点以返回多个执行结果。实战创建第一个工作流接下来我们完整走一遍官方文档的入门案例构建一个名为sendEventNotification的工作流它从 ToolJetDB 读取员工数据筛选出加利福尼亚州的员工并通过 Twilio 循环发送短信通知最后根据发送成败返回结构化响应。进入 Workflow Builder登录 ToolJet 账户在主仪表盘的左侧边栏点击Workflows图标点击Create New Workflow按钮新建工作流并将其重命名为sendEventNotification。创建完成后画布上会自带一个Start节点它就是工作流的入口点。Step 1添加数据库查询节点第一步从 ToolJetDB 中名为employees的表获取员工数据从Start节点拖出新的连线在弹出的节点选择中选ToolJetDB节点命名为getEmployees配置 Table name 为employeesOperation 选择List view。Step 2用 RunJS 节点转换数据接着过滤员工数据只保留来自加利福尼亚州的员工从Start节点拖出新的连线选择RunJS节点命名为filterEmployeeList在代码编辑器中输入以下代码getEmployees.data即前一个节点的输出return getEmployees.data.filter(employee employee.location California)Step 3用 Loop 节点发送通知现在实现一个循环向筛选出的员工逐个发送短信通知。Loop节点负责遍历数组并对每个元素执行指定的操作从filterEmployeeList节点拖出连线选择Loop节点命名为sendSMS在Looped function下选择Twilio作为数据源Operation 选择Send SMS在To Number字段填入{{value.number}}——这里的value代表当前遍历到的数组元素在Body字段输入如下消息同样使用双花括号模板引用当前元素的字段Hey {{value.name}}, Heres the link with all the details for todays ToolJet conference in California. https://tooljet.com/events/{{value.location}}Step 4配置 Response 节点最后设置条件来处理短信发送的成败从sendSMS节点拖出新的连线选择If condition节点在输入框中填写条件表达式sendSMS.status ok ? true : false从绿色箭头拖出Response节点配置条件为 true发送成功时的输出return ({output: success})从红色箭头拖出另一个Response节点配置条件为 false发送失败时的输出return ({output: failure})关于 Response 节点docs/docs/workflows/results.md 还提供了更丰富的用法可以用return ({generateCSVData})之类的语句返回单个节点的完整数据也可以从多个节点组合输出——既返回完整数据集也可以只返回指定字段。每个工作流可配置多个 Response 节点返回多个执行结果。Step 5执行工作流并查看日志点击右上角的Run按钮执行工作流日志面板会展开展示本次执行中所有节点的运行概况日志面板中Input区域展示进入某个节点的全部数据Output区域展示传递给下一个节点的数据Logs区域则展示执行顺序以及成功/错误信息。至此你完成了第一个工作流它获取数据、转换数据、发送短信通知并处理了成功与失败两种结果。工作流的三种触发方式工作流创建后需要通过触发条件才会执行。ToolJet 支持三类触发器详见 docs/docs/workflows/triggers.mdWebhook、定时调度Scheduler和手动触发Manual。Webhook 触发在左侧面板打开Triggers选项卡选择Webhooks。默认情况下 Webhook 触发是关闭的需要先切换开关启用。启用后Environment选择环境如 Production获取对应环境的 Webhook 端点Endpoint显示 API 端点 URL可点击Copy按钮复制也可从下拉菜单中选择Copy URL或Copy as cURL后者会把 API token 和环境信息一并打包进 cURL 命令API Token用于认证请求的令牌。端点 URL 的格式为http://{TOOLJET_HOST}/api/v2/webhooks/workflows/:id/trigger在源码中这一路由由 server/src/modules/workflows/controllers/workflow-webhooks.controller.ts 声明控制器挂载在版本 2 的webhooks路径下Post(workflows/:id/trigger)对应同步触发接口此外还提供了trigger-async异步触发、status/:executionId查询执行状态与 SSE 流式接口execution/:executionId/stream可见 Webhook 既支持简单的一发一收也支持异步任务的状态追踪。当前版本要求 Webhook 必须认证在Authorization头中携带 Bearer tokenAuthorization: Bearer secret_token Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...参数通过Parameters字段以key: type形式声明例如name: string, age: numberTest JSON parameters字段用于测试 Webhook填入实际参数值并点击Run工作流即以这些参数执行{ name: John Doe, age: 30 }这些参数可在工作流内通过startTrigger.params访问。Webhook 的使用限制Webhook 触发器存在可配置的限制实例级和 workspace 级均可按许可证配置每月执行次数、每日执行次数、并行执行数、单工作流执行时长。其中限制并行执行可借助两个环境变量环境变量值说明WEBHOOK_THROTTLE_TTL60000Webhook 请求存活的毫秒数WEBHOOK_THROTTLE_LIMIT100TTL 内将被限流的最大请求数对于部署在 VPC 中的实例建议只放行{TOOLJET_HOST}/api/v2/workflows/*端点。定时调度触发Scheduler让工作流按固定间隔自动执行提供两种模式Interval 模式适合简单场景以分钟、小时、天、周、月为单位指定间隔例如每 10 分钟、每小时、每周执行一次Cron 模式使用 cron 语法做精细控制例如0 9 * * 1表示每周一上午 9 点执行。可额外指定时区让调度与本地时间对齐。在服务端调度能力由 server/src/modules/workflows/processors/workflow-schedule.processor.ts 与 server/src/modules/workflows/services/workflow-scheduler.service.ts 等模块承载配合 server/src/entities/workflow_schedule.entity.ts 持久化调度配置。手动触发手动触发与数据源查询的工作方式类似适合在 ToolJet 应用内部按需运行。在应用的查询面板中点击 Add选择Run Workflow从下拉框选定目标工作流重命名查询可选后点击Run即可执行也可以把该查询挂到某个事件处理器event handler上在特定事件发生时自动触发。参数通过查询的Params字段以key: value形式传入name: John Doe, age: 30前端查询编辑器的实现位于 frontend/src/AppBuilder/QueryManager/QueryEditors/Workflows.jsx它会通过appsService.getWorkflows(appId)拉取当前应用可用的工作流列表加载所选工作流的版本并支持通过params传入参数、通过syncExecution控制同步/异步执行。手动触发非常适合一次编写、多处复用的场景例如多个应用都要查询同一数据库获取特定数据时只需把这段逻辑封装成工作流再在各应用中通过 Run Workflow 查询引用避免重复实现。详细步骤可参考 docs/docs/workflows/how-to/trigger-from-app.md。从源码理解工作流执行链路从仓库源码可以进一步确认工作流模块的完整骨架实体层工作流的持久化涉及 server/src/entities/workflow_bundle.entity.ts工作流包、server/src/entities/workflow_execution.entity.ts执行记录、server/src/entities/workflow_execution_node.entity.ts节点级执行记录、server/src/entities/workflow_execution_edge.entity.ts连线级执行记录以及workflow_schedule.entity.ts调度配置。这说明一次工作流执行不仅记录整体状态还细分到每个节点和每条连线的执行情况与画布日志面板展示的逐节点 Input/Output 一一对应控制层除了上面提到的 workflow-webhooks.controller.ts模块还包含 workflows.controller.ts工作流 CRUD、workflow-executions.controller.ts执行查询、workflow-schedules.controller.ts调度管理和 workflow-bundles.controller.ts执行层工作流任务通过 workflow-execution-queue.service.ts 进入队列由 workflow-execution.processor.ts 异步消费执行——这意味着工作流天然支持排队与异步运行适合处理耗时任务鉴权与许可server/src/modules/auth/guards/workflow-auth.guard.ts 负责 Webhook 的 token 认证server/src/modules/licensing/guards/workflow.guard.ts 与 workflowcount.guard.ts 则落实付费功能与数量限制——这与文档中标注的 Paid feature 及 Webhook 使用限制相印证。小结通过本文你已经掌握了 ToolJet Workflows 的完整使用路径理解节点式编排的核心概念从零构建查询 → 转换 → 循环发送 → 条件响应的自动化工作流并掌握了 Webhook、定时调度、手动触发三种执行方式及其参数传递方法。官方文档中还提供了触发工作流的更多细节docs/docs/workflows/triggers.md、节点类型的完整说明docs/docs/workflows/nodes.md、日志查看docs/docs/workflows/logs.md、响应配置docs/docs/workflows/results.md与权限管理docs/docs/workflows/permissions.md等专题文档可以按需深入。这个示例工作流虽然简单却覆盖了自动化流程的典型骨架取数 → 清洗 → 逐条处理 → 分支兜底 → 结构化返回。把这套骨架迁移到你的业务场景——例如订单超时提醒、报表定时分发、工单自动流转——就是 ToolJet Workflows 发挥价值的地方。【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考