触发器 Triggers

触发器在某些内部或外部事件上启动流,例如应用内活动、传入的 webhook、cron 作业、执行来自其他流的操作等等!触发器定义启动流程的事件。 这可能来自内部或外部活动,例如数据更改、登录、错误、传入的 webhook、cron 作业、来自其他流的操作,甚至是单击 Data Studio 中的按钮。

请务必阅读 Flows 上的概述文档。

Event Hook

Event Hooks

事件挂钩由平台内的事件触发。逻辑基于 Custom API Hooks。事件生成的任何数据都将嵌套在 $trigger 中。

  • Type - 选择事件挂钩的类型:
    • Filter (Blocking) - 这会暂停事务并将“有效负载”传递给您的流程,允许您验证或转换“有效负载”,甚至阻止事件事务。
    • Action (Non-Blocking) — 操作不会阻止事件。非阻塞操作主要用于响应事件完成任务,而无需修改事件或减慢 API。
  • Scope - 设置触发此触发器的事件类型。
  • Collections - 设置_其事件_触发此触发器的集合。
  • 响应正文 - 这是可选的。它也仅适用于 Filter (Blocking) 事件。定义数据以替换事件的原始“有效负载”。选择退货:
    • 上次操作的数据 - 用来自 $last 的值替换事件 payload
    • All Data - 用整个数据链替换事件 payload
    • Other - 将事件 payload 替换为来自 <operationKey> 的值。

具有多个项目的事件
如果您在单个请求中创建项目,则流程将为每个项目触发一次。如果您创建三个项目,则流程将运行三个单独的时间。每次运行时,有效负载中只有一个项目。

过滤器

过滤器将停止事件事务,将事件payload复制到流程中,让整个流程运行,可选地通过配置响应正文替换原始有效负载,然后将事件的事务恢复到数据库。

例如,假设您将范围配置为 item.create

  • 创建项目的请求被发送到 Directus。
  • 创建项目事件停止。
  • 事件的 payload 被复制到流的 $trigger 中。
  • 流程运行。
  • 可选: 如果您定义了一个 Response Body,这将替换事件的 payload
  • 根据您的流程逻辑,提交或取消事件事务。

响应正文
如果没有配置响应正文,原始有效负载将不会被修改,但您仍然可以取消事务。

取消交易
要完全取消事务,您需要在 脚本操作 中抛出错误或在 失败路径

动作

Action 允许事件将其事务提交到数据库,而无需等待流程完成。 因此,Actions 为您提供了性能更高的 API,但您无法在事务提交到数据库之前验证或转换有效负载。 但是,payload 的副本仍会添加到 $trigger 以根据需要使用。

例如,让我们再次假设您将范围配置为 item.create

  • 创建项目的请求被发送到 Directus。
  • 处理创建项目事件。
  • 事件的 payload 被复制到流的 $trigger 中。
  • 流程运行。

回顾一下,过滤器允许您修改事件的原始“有效负载”,但会阻止 API 直到流程完成。 Actions 仍然为流提供payload,但不要让你在事务之前修改它; 因此您可以获得更快的 API,但无法控制事件事务。

Webhook

Webhook

触发传入的 HTTP 请求:/flows/trigger/:this-webhook-trigger-id,您可以从 webhook 复制它 触发面板。

  • 方法 - 从下拉列表中选择流是否将由“GET”或“POST”请求触发。
  • 异步 - 切换触发器是否异步响应。
  • 响应正文 - 可选。定义要作为响应返回的数据。选择退货:
    • 上次操作的数据 - 以来自 $last 的值响应。
    • 所有数据 - 响应整个数据链。
    • Other - 使用来自 <operationKey> 的值进行响应。

响应正文
如果 Response Body 中没有定义数据,则响应为空。

异步
如果启用了异步,流系统将立即解析/响应请求,而不返回响应正文,这会立即释放 API。如果它被禁用,流程系统将等待流程完成并返回响应正文中的任何值。这会减慢 API,但允许您发送数据。

计划任务

Schedule a Cron Job

此触发器使您能够通过 6 点 cron 作业语法 以预定的时间间隔创建数据。

  • Interval - 设置 cron 作业间隔以安排流触发的时间。

语法说明

 ┌────────────── second (0-59)
 │ ┌──────────── minute (0-59)
 │ │ ┌────────── hour (0-23)
 │ │ │ ┌──────── day of month (1-31)
 │ │ │ │ ┌────── month (1-12)
 │ │ │ │ │ ┌──── day of week (0-7)
 │ │ │ │ │ │
 │ │ │ │ │ │
 * * * * * *

另一个流程

另一个流程

此触发器由 trigger flow 操作执行,允许您链接流。

  • 响应正文 - 可选。定义要返回并附加在 <operationKey> 下的数据 触发流 触发触发器的操作。选择退货:
    • 上次操作的数据 - 以来自 $last 的值响应。
    • 所有数据 - 响应整个数据链。
    • Other - 使用来自 <operationKey> 的值进行响应。

流动 for 循环\

如果将数组传递给此触发器,它将为数组中的每个项目运行一次。

Manual

Manual

此触发器通过手动单击 Data Studio 中的按钮来启动您的流程。当您使用此触发器时,包含按钮的 Flows 菜单将出现在指定集合页面和/或其项目页面的侧边栏中。

手动触发器必须先获取项目 ID,然后才能单击它。因此,在收藏页面上,按钮将_变灰_,直到您选择了一些项目。在项目页面中,当前项目的 ID 会自动传入。这些项目 ID 被传递到 $trigger

  • Collections - 选择要添加按钮的集合。
  • Location - 选择在 Item PageCollection Page 或两者上显示按钮.
  • 异步 - 切换流是否异步执行。
  • 集合页面(需要选择) - 切换是否需要在集合页面中进行选择才能触发。

操作运行后,您的 sidebar 中会出现一个 toast 通知,指示流程是否运行成功。

异步
如果启用了异步,流程系统将立即允许您再次使用手动触发按钮来发送更多请求。如果它被禁用,您将不得不等到流程完成才能再次使用它。