ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OneUptime 工作流组件全景指南:从 API、AI 到数据组件的选型与实现机制

OneUptime 工作流组件全景指南:从 API、AI 到数据组件的选型与实现机制 OneUptime 工作流组件全景指南从 API、AI 到数据组件的选型与实现机制【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime本篇以 OneUptime 官方文档的 Workflow 组件目录App/FeatureSet/Docs/Content/da/workflows/components.md为主体完整覆盖触发器之后可添加的每一类组件API、AI、Webhook、Slack/Teams/Discord/Telegram/Email、Custom Code、JSON、Conditions、Delay、Log、Execute Workflow 以及 OneUptime 数据组件的用途、设置项、输出端口与选型规则并结合 RunWorkflow.ts、Component.ts 与 AI.md 等仓库源码深入解析组件参数模型、执行路径与输出值的流转机制帮助你既能照目录配置组件也能读懂底层实现。组件Components是什么组件是触发器Trigger之后添加的构建块。每个组件只做一件事——发一条消息、调一个 API、判断一个条件——然后连接到下一个组件。组件目录页回答有哪些组件、每个组件能做什么而如何在画布上添加与连线见 authoring.md。从源码结构看画布上每个节点都携带一份统一的元数据模型。Component.ts 定义了NodeDataProp接口每个节点包含metadata/metadataId组件定义、arguments输入参数、returnValues输出值以及componentTypeTrigger 或 Component 两类。Argument定义中还有一个值得注意的字段isSensitive当其为 true 时运行时传给组件的仍是真实值但该参数在工作流日志中的记录会被替换为脱敏标记——这是组件级敏感参数如令牌不落盘的原理依据。API 组件调用任意 HTTP 接口向任意 URL 发起 HTTP 请求是覆盖面最广的组件。设置项Method—GET、POST、PUT、PATCH或DELETE。URL— 要调用的地址。Headers— 随请求发送的请求头。Body—POST/PUT/PATCH时的请求体。输出端口Succes成功— 调用成功2xx 响应时触发向下游传递状态码、响应头和响应体。Fejl错误— 网络失败或非 2xx 响应时触发传递错误信息。适用场景任何外部 API、你自己的管理端点或任何没有专属组件的集成。文档中给出的取舍规则很实用需要读取响应就用 API只想发一条消息就走 Webhook出站——后者是 API 组件的简化版只向 URL 发送一个 JSON body属于发射后不管fire and forget场景。在仓库中Webhook 组件有独立的实现文档 Webhook.md其请求发送逻辑最终由 RunStep.ts 逐步执行。AI 组件Generate Text with AI该组件基于一段 Prompt 和可选的 JSON Context 生成一个文本响应。组件使用项目配置好的默认 LLM 提供商若不存在则回退到安装级别的全球全局提供商。提供商的凭据与端点是集中配置的不是工作流的参数——这一点在 AI.md 中被反复强调目的是让凭据永远不成为工作流参数。设置项System Instructions— 可选的模型角色、语气与约束说明。Prompt— 必填任务描述可包含工作流变量和之前组件的输出。Context— 可选 JSON是你有意带入请求的数据。它被追加在一条显式的消息结束信任标记之后并在消息剩余部分中按不可信数据处理。Temperature—0到1的变化度默认0.2以获得可预测的自动化输出。Maximum Output Tokens—1到4096默认1024。硬性限制System Instructions、Prompt 与序列化后的 Context 合计上限 50,000 字符对提供商的请求最长 60 秒且只尝试一次每个项目最多 3 个工作流 AI 请求并发执行。输出值AI.md 中的输出表与文档一致输出说明Response模型生成的文本。Provider/Model本次调用使用的提供商与模型配置。Total Tokens/Completion Tokens提供商报告的用量。LLM Log ID本次调用对应的计费 AI 日志条目 ID。Fejl错误校验、访问、提供商、预算、计费或超时错误如有。执行方式与安全边界组件发出的是无工具tool-free的单次模型请求不包含工具定义或提供商原生能力字段——因此模型无法自行查询 OneUptime、调用 API 或修改项目数据。除 OneUptime 固定的组件安全指令外只有你配置的 System Instructions、Prompt 和 Context工作流变量先解析会被发送给提供商。AI.md 进一步说明提供商层的附加参数仍可通过一份仅限生成调优字段的白名单生效而能力与保留类字段工具、网页搜索/数据源、非文本模态、多路选择、流式、请求留存标志、更高的输出 token 上限会被丢弃未知未来能力字段默认丢弃。配置的提供商/模型仍是信任边界因为模型可能带有内在的提供商托管能力。数据、日志与计费System Instructions、Prompt、Context 与生成的 Response 会从该 AI 组件自身在自动执行日志中的参数与返回值记录里被脱敏但在本次运行中仍可供下游组件使用如果你把它插入其他组件则适用那个组件的日志策略。每次调用都被计量计费的全球提供商会从项目 AI 信用余额中扣减且调用受项目每日自主 AI token 预算约束预算耗尽后组件走错误路径而不再发起提供商请求。安全使用原则模型输出是不可信文本。对外沟通的草稿要先审阅不要用自由文本 AI 输出单独授权工作流中的破坏性操作如果必须让输出控制分支应把 Prompt 约束到一小集合允许值并用确定性工作流逻辑校验后再行动。消息组件Slack、Microsoft Teams、Discord、Telegram、Email组件作用设置项前置条件Slack在 Slack 频道发消息Kanal频道— 频道名机器人须已在该频道Besked消息— 支持 Slack 格式化先在Projektindstillinger项目设置→ Arbejdsområde工作区→ Slack下连接 Slack见 workspace-connections/slackMicrosoft Teams在 Teams 频道发消息Team and channel— 目标位置Besked— 消息文本见 workspace-connections/microsoft-teamsDiscord通过入站 Webhook URL 在 Discord 频道发消息入站 webhook URLDiscord 侧创建 webhookTelegram用 bot token chat ID 向 Telegram 聊天发消息bot token、chat IDTelegram botEmail通过 OneUptime 发送邮件Til收件人— 邮箱地址Emne主题— 主题行Body正文— Markdown 或 HTML邮件从项目配置的发送方发出见 emails/smtp这些专属消息组件的价值在于更友好的错误处理和更清晰的日志——这正是有专属块就用专属块规则的原因见文末选型规则。Custom Code跑一段小 JavaScript当其他块做不到时使用。设置项Kode代码— 你的 JavaScript。最后一个值或 async 函数中 return 的值成为该块的输出。Arguments参数— 你可以传入的命名值。输出succes你的返回值与 fejl任何异常。用途在两个系统之间整形数据、做小计算任何不值得单独一块的场景。更重的脚本应改用 Runbook。仓库中对这类 JavaScript 执行组件的实现说明见 JavaScript.md。JSON 组件文本与 JSON 互转JSON → Text— 把 JSON 对象转成字符串适用于下一块期望文本的场景。Text → JSON— 把字符串解析成 JSON 对象适用于数据以文本形式到达、需要读取其中字段的场景。ConditionsIf / Else 分支按一次比较结果分支。在Tilføj komponent添加组件面板中该块叫If / Else位于 Conditions 分类下。设置项Left value左值— 通常是之前某个块的输出。Operator操作符—、!、、、、、contains、starts with、ends with。Right value右值— 比较对象。输出Ja是与Nej否两个端口把后续块接到你需要的分支上。Delay 与 LogDelay— 让工作流暂停固定时长再继续用于给另一个系统留出追赶时间。Log— 往运行日志写一行。无任何对外效果只出现在工作流日志里供你阅读适合调试。Execute Workflow调用另一个工作流从当前工作流调用另一个工作流。被调用的工作流独立运行——你的工作流不等待它完成就继续。适合共享公共逻辑建一个向事件频道发消息的工作流之后任何需要通知该频道的工作流都可以调用它。存在安全上限防止工作流互相调用成环。细节见 configuration.md。OneUptime 数据组件读写平台自身的数据对 OneUptime 中的每一种记录monitor、incident、alert、status page、on-call policy 等等添加组件面板都提供一套按类型名生成的组件——按类型名搜索即可。每个标题由记录类型生成以 Monitor 为例Find One Monitor— 读取一条匹配查询的记录。Find Many Monitors— 读取匹配查询的记录列表。Create One Monitor— 从一个 JSON 对象创建一条记录。Create Many Monitors— 从一个 JSON 数组创建多条记录。Update One Monitor— 把写载荷应用到一条匹配记录。Update Many Monitors— 把写载荷应用到匹配记录最多 Limit 条。Delete One Monitor— 删除一条匹配记录。Delete Many Monitors— 删除匹配记录最多 Limit 条。同一套模式还提供三个触发器——On Create Monitor、On Update Monitor、On Delete Monitor见 triggers.md。两个重要约束一种类型只提供其模型允许的组件。只读类型只有两个 Find 组件因此如果你在面板里找不到Delete One Monitor就是该类型不允许删除而不是你没找到。这是工作流读写 OneUptime 数据的唯一正规途径。例如CI 工具的 webhook 可以用Create One Incident打开一条带失败详情的事件。数据组件的完整实现说明分布在 DatabaseFind.md、DatabaseCreate.md、DatabaseUpdate.md、DatabaseDelete.md 与 DatabaseTriggers.md。与记录Records打交道列名、Query 与 Skip/Limit数据组件的每个字段都以记录自身的列名为键——与 API 使用的名称相同而不是 dashboard 表单上的标签。ID 列叫_id。id拼写作为别名在任何可以输入列名的地方被接受但记录返回时给的是_id所以出站读取时用_id{ _id: 00000000-0000-0000-0000-000000000000 }Query决定组件作用于哪些记录。键是列值是匹配条件{ monitorType: Website, isEnabled: true }查询始终限定在 workflow 所在的项目内——你无法触达其他项目的记录也不需要自己在查询里写项目。写载荷同样按键传入Create One 的JSON Object、Create Many 的JSON Array、Update 组件的Data (JSON Object){ name: Checkout API, monitorType: Website }非列名的键会被忽略而不是拒绝——运行日志会列出被丢弃的键字段没落地时先看日志。Select FieldsFind 组件与触发器上用相同的列名键配合true值{_id: true, name: true}。Skip 与 Limit是 Find Many、Update Many、Delete Many 上的两个数字字段——Skip: 0加Limit: 100取前 100 条匹配。Limit 默认10且在 Update Many / Delete Many 上它限制的是实际写入的记录数而不只是返回数。所以Items Deleted: 10意味着删掉了 10 条而不是 10 条匹配。打算改动超过 10 条时记得调大 Limit。Succes 与 Fejl 报告的是查询是否执行了而不是查到什么。零匹配的查询返回0并依然从 Succes 出去——那不是失败。想按是否匹配到分支就把返回的计数读进一个If / Else块。执行引擎组件如何被运行从源码结构看工作流的执行入口是 RunWorkflow.ts约 1300 行执行器从节点数据中识别ComponentType.Trigger节点作为起点然后沿连线逐节点解析arguments、调用对应组件实现、把结果写入returnValues。单个步骤的请求执行在 RunStep.ts 中完成排队与调度由 QueueWorkflow.ts 管理组件参数的日志脱敏由 SecretRedaction.ts 落实——这与前文isSensitive字段描述的真实值运行、日志中替换为脱敏标记机制相互印证。这也解释了文档中反复出现的两条行为未连接错误路径会让该分支停止以及输出端口Succes/Fejl、Ja/Nej决定执行流向——端口本质上是节点数据上的连接关系由执行器按端口 ID 解析。该用哪个组件速查规则有专属块Slack、Email、OneUptime 记录就用它——错误处理更好、日志更清晰。其他外部 API 一律用API。要基于你有意选择的工作流数据做摘要、分类或写文本草稿用Generate Text with AI。块与块之间整形数据用Custom Code或JSON。按值执行不同动作用Conditions。继续深入Workflow-variabler变量 — 数据如何在块之间传递。Workflow-kørsler logfiler运行与日志 — 查看每次运行中每个块做了什么。Workflow-konfiguration sikkerhed配置与安全 — 限制、属主与机密。Opret et workflow创建工作流 — 在画布上添加与连接组件的操作细节。【免费下载链接】oneuptimeComplete open-source monitoring and observability platform.项目地址: https://gitcode.com/GitHub_Trending/on/oneuptime创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表