请务必阅读 Flows 上的概述文档。
Event Hook
事件挂钩由平台内的事件触发。逻辑基于 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
触发传入的 HTTP 请求:/flows/trigger/:this-webhook-trigger-id
,您可以从 webhook 复制它
触发面板。
- 方法 - 从下拉列表中选择流是否将由“GET”或“POST”请求触发。
- 异步 - 切换触发器是否异步响应。
- 响应正文 - 可选。定义要作为响应返回的数据。选择退货:
- 上次操作的数据 - 以来自
$last
的值响应。 - 所有数据 - 响应整个数据链。
- Other - 使用来自
<operationKey>
的值进行响应。
- 上次操作的数据 - 以来自
响应正文
如果 Response Body 中没有定义数据,则响应为空。
异步
如果启用了异步,流系统将立即解析/响应请求,而不返回响应正文,这会立即释放 API。如果它被禁用,流程系统将等待流程完成并返回响应正文中的任何值。这会减慢 API,但允许您发送数据。
计划任务
此触发器使您能够通过 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
此触发器通过手动单击 Data Studio 中的按钮来启动您的流程。当您使用此触发器时,包含按钮的 Flows 菜单将出现在指定集合页面和/或其项目页面的侧边栏中。
手动触发器必须先获取项目 ID,然后才能单击它。因此,在收藏页面上,按钮将_变灰_,直到您选择了一些项目。在项目页面中,当前项目的 ID 会自动传入。这些项目 ID 被传递到 $trigger
。
- Collections - 选择要添加按钮的集合。
- Location - 选择在 Item Page、Collection Page 或两者上显示按钮.
- 异步 - 切换流是否异步执行。
- 集合页面(需要选择) - 切换是否需要在集合页面中进行选择才能触发。
操作运行后,您的 sidebar 中会出现一个 toast 通知,指示流程是否运行成功。
异步
如果启用了异步,流程系统将立即允许您再次使用手动触发按钮来发送更多请求。如果它被禁用,您将不得不等到流程完成才能再次使用它。