ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ToolJet Workflows 节点类型完全指南:从 Start Trigger 到 Response 的可视化编排实战

ToolJet Workflows 节点类型完全指南:从 Start Trigger 到 Response 的可视化编排实战 ToolJet Workflows 节点类型完全指南从 Start Trigger 到 Response 的可视化编排实战【免费下载链接】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导读Workflows工作流是 ToolJet 中负责后端自动化与数据编排的核心模块它以可视化节点画布替代了传统胶水代码开发者通过拖拽不同类型的节点即可把「数据查询 → 逻辑判断 → 循环处理 → 返回结果」串成一条可复用、可触发、可观测的自动化链路。本文以官方文档 nodes.md 为骨架系统讲解 Start Trigger、JavaScript、If Condition、Loop、数据源与 Response 六类节点的用途与组合方式并结合仓库源码说明节点背后真实的数据流转机制最后通过一个完整的「查库 → 过滤 → 发短信 → 分支响应」案例让你能立刻在 ToolJet 中搭建第一条生产级工作流。一、节点Nodes是什么工作流的最小执行单元在 ToolJet 中节点Node是工作流中每个处理步骤的图形化表示。一次工作流的执行就是数据从起点节点出发、沿着节点之间的连线edge逐级流转的过程。理解节点模型需要抓住三条核心语义顺序依赖每个节点都可以访问在其之前已执行节点产生的数据即上游节点的输出天然成为下游节点的输入上下文。单一入口每条工作流必须且只能有一个 Start Trigger 节点作为执行起点。类型分工节点按职责分为 Start Trigger、逻辑节点JavaScript / If Condition / Loop、数据源节点与 Response 节点组合它们即可编排出复杂的自动化流程。这一模型与仓库中工作流引擎的设计保持一致工作流以可视化方式构建后由服务端解析执行。相关模块集中在 server/src/modules/workflows控制器、执行服务、调度与 Webhook 服务与前端工作流编辑器组件中。二、Start Trigger 节点工作流的唯一入口Start Trigger节点是工作流的入口点画布上新建工作流时它已经存在。它有两种触发方式手动触发Manual在 ToolJet 应用中像执行普通查询query一样运行工作流。从查询面板点击 Add选择Run Workflow再选择目标工作流即可详见 triggers.md。Webhook 触发从外部系统发送 HTTP 请求POST调用工作流专属的 Webhook 端点实现跨系统集成。Start Trigger 接收到的参数数据在整个工作流中都可访问这是所有下游节点获取外部输入的唯一通道。典型用法是startTrigger.params例如在 Triggers 面板中定义了参数namestring与agenumber后工作流内任意节点即可通过startTrigger.params.name、startTrigger.params.age读取传入值。Webhook 端点的标准格式为http://{TOOLJET_HOST}/api/v2/webhooks/workflows/:id/trigger请求需携带 Bearer Token 鉴权Authorization: Bearer secret_token参数以 JSON 形式随请求体传入。关于三种触发方式的完整配置Webhook 的环境切换、cURL 复制、限流限制Scheduler 的 Interval/Cron 模式等可参考 triggers.md 与 how-to/trigger-using-webhook.md。三、逻辑节点让工作流拥有计算与决策能力逻辑节点不连接外部系统只负责处理流转中的数据是工作流「智能化」的关键。3.1 JavaScript 节点RunJSJavaScript节点允许你编写自定义的服务端代码典型用途包括数据转换Transform清洗、映射、重组上游数据复杂计算聚合、统计、格式化等业务计算自定义消息构造拼接通知文案、生成请求体业务规则处理把判断逻辑集中在一段可读的代码中。使用上有两个硬性约束代码中必须包含return语句返回值才会作为节点输出传递给后续节点代码运行在服务端Node.js 环境可以访问上游节点数据如getEmployees.data与startTrigger.params等上下文对象。最小可运行示例——把上游getEmployees节点的数据按地点过滤return getEmployees.data.filter(employee employee.location California)从源码结构看前端将 JS 代码以「代码编辑器 参数面板」的方式呈现如 frontend/src/AppBuilder/QueryManager/QueryEditors/Runjs/Runjs.jsx 与 RunjsParamters.jsx用户在画布上编辑的代码最终会随工作流定义一起打包由服务端执行引擎运行——这正是「可视化编辑、服务端执行」架构的体现。3.2 If Condition 节点二分支路由If condition节点实现分支逻辑其拓扑特征为支持一条或两条入边incoming flows即可放置在任何上游节点的出口固定产生两条出边outgoing flows绿色箭头条件为真与红色箭头条件为假通过逻辑表达式完成决策。执行语义非常直观条件求值为true→ 执行连接到绿色箭头的下游节点条件求值为false→ 执行连接到红色箭头的下游节点。表达式可以直接使用上游节点数据例如判断短信发送是否成功sendSMS.status ok ? true : false实践中If Condition 常与 Response 节点配对形成「成功/失败」两条响应分支也可串联多个 If Condition 实现多级决策树。3.3 Loop 节点迭代处理数据集Loop节点用于对数组/数据集做迭代处理支持的能力包括遍历数据集Iterate over datasets逐项顺序处理Process items sequentially对每个元素应用指定操作Apply operations to each item如调用数据源节点处理单项聚合各轮迭代的结果Aggregate results。Loop 节点的典型配置方式是「Looped function」选择要在每次迭代中执行的数据源操作并在参数字段中通过{{value}}引用当前迭代元素。例如对员工列表中的每个员工发送短信Looped function 选择Twilio数据源Operation 选择Send SMSTo Number 填入{{value.number}}当前迭代元素的number字段Body 中通过{{value.name}}、{{value.location}}拼接个性化消息内容。Hey {{value.name}}, Heres the link with all the details for todays ToolJet conference in California. https://tooljet.com/events/{{value.location}}这种「数据源节点 循环引用」的组合让一个 Loop 节点即可完成批量通知、批量导入、逐行校验等真实业务场景。四、数据源节点连接外部世界数据源节点Data Source Nodes用于连接你在 ToolJet 中已配置的数据源实现执行数据库查询如 PostgreSQL、MySQL、ToolJetDB发起 API 调用REST API发送邮件 / 消息SMTP、Twilio、Slack 等与各类外部服务交互S3、Stripe、OpenAI 等。每个数据源节点会根据其类型渲染专属配置表单例如数据源类型典型配置字段PostgreSQLSQL 查询语句字段REST APIHTTP 方法、Endpoint、Headers、BodyTwilioOperationSend SMS 等、To Number、BodyToolJetDBTable name、OperationList view / Create / Update 等数据源节点输出的查询结果可通过「节点名 .data」访问例如getEmployees.data。工作流可用的数据源全集与各插件的操作定义位于 plugins/packages每个包内含lib与操作实现与 marketplace/pluginsToolJetDB 相关的前端查询编辑器见 frontend/src/AppBuilder/QueryManager/QueryEditors/TooljetDatabase。五、Response 节点定义工作流输出Response节点定义工作流的最终输出可以配置多个 Response 节点以返回多个执行结果例如不同分支各自返回不同的响应体。Response 节点中编写return表达式即可构造输出例如return ({output: success})或return ({output: failure})当工作流有多个出口分支如 If Condition 的真/假分支各接一个 Response时执行路径命中哪个分支就会返回对应的 Response 内容。这也意味着 Response 节点是工作流对外「可契约化」的关键调用方Webhook 调用者、应用内查询、调度任务拿到的结果结构完全由你设计。工作流的执行结果、日志与输入输出详情可参考 results.md 与 logs.md。六、组合实战一个完整的「查库 → 过滤 → 通知 → 分支响应」工作流把上述节点串起来即可构建真实可用的自动化流程。以下流程复刻自官方入门示例 overview.md从 ToolJetDB 读取员工数据过滤出加州员工批量发送 SMS并按发送结果返回不同响应。Step 1添加数据库查询节点画布上已存在Start节点。从其出口新建ToolJetDB节点重命名为getEmployees配置 Table name 为employees、Operation 为List view。Step 2用 RunJS 转换数据从 Start 节点或getEmployees新建RunJS节点重命名为filterEmployeeList输入过滤代码return getEmployees.data.filter(employee employee.location California)Step 3用 Loop 批量发送通知从filterEmployeeList新建Loop节点重命名为sendSMSLooped function 选择TwilioOperation 选择Send SMSTo Number 填入{{value.number}}Body 填入个性化消息见 3.3 节示例。Step 4用 If Condition Response 处理成功/失败从sendSMS新建If condition节点表达式为sendSMS.status ok ? true : false从绿色箭头新建Response节点return ({output: success})从红色箭头新建Response节点return ({output: failure})Step 5运行与观测点击右上角Run按钮执行。日志面板会展示每个节点接收的Input进入该节点的数据、Output传递给下一节点的数据以及执行顺序与成功/错误信息方便逐节点排查问题。七、节点组合的设计要点与边界数据流即上下文上游节点的输出名节点重命名后的标识就是下游代码中的访问名命名要清晰、稳定分支必须显式收敛If Condition 的两条出边都应接到具体节点通常是 Response避免流程「悬空」导致结果不确定循环内引用用{{value}}Loop 节点内的数据源配置通过{{value.字段}}访问当前元素不要误写为整个数据集的字段Response 决定契约对外提供 Webhook 时Response 节点的返回结构就是 API 响应契约应尽早固定触发与限制Webhook 触发受实例级/工作区级限制约束每月/每日执行次数、并行数、单次执行时长并可通过WEBHOOK_THROTTLE_TTL默认 60000ms与WEBHOOK_THROTTLE_LIMIT默认 100控制限流详见 triggers.md。延伸阅读Workflows 总览与入门Workflows 触发方式Webhook / Scheduler / ManualWorkflow 执行结果Workflow 运行日志Workflow 权限控制工作流引擎服务端实现server/src/modules/workflows数据源插件实现plugins/packages【免费下载链接】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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进