Condition
Condition 操作允许您通过使用 Filter Rules 验证传入的数据来选择 success path 或 failure path。
Options
- 条件规则 - 使用 过滤规则 创建条件。
Payload
此操作不会生成数据。 如果过滤规则配置正确,它将在其 operationKey
上附加一个 null
值,无论是否满足条件。 但是,如果过滤器规则配置错误,它将附加一个数组,其中包含一个可用于帮助调试错误配置的对象。
More Details
当使用配置为 Action (Blocking) 的 Event Hook 时,如果您的流程以使用 reject
路径执行的条件结束,它 将取消您的数据库事务。
Run Script
此操作允许您使用 vanilla JavaScript 或 TypeScript 添加自定义脚本。
该脚本将在隔离的沙箱中安全地执行。 除了共享输入和输出值外,沙箱和主机之间不发生任何交互。 这意味着,例如,console.log
语句无效,无法访问文件系统,也无法进行网络请求。
选项
该操作提供了一个默认的函数模板。 optional data
参数允许您将数据链作为参数传递。
有效载荷
该函数的 return
值将附加在其 <operationKey>
下。
更多细节
例如,假设您在脚本操作中有这个函数,名为 myScript
。
// A key from the data chain
{
"previousOperation": {
"value": 5
}
}
然后通过运行脚本添加以下逻辑。
// Your function in the myScript operation
module.exports = function (data) {
return {
timesTwo: data.previousOperation.value * 2
}
}
返回的值将附加在 myScript
操作键下。
{
"previousOperation": {
"value": 5
},
"myScript": {
"timesTwo": 10
}
}
确保您的 return
值是有效的 JSON。
抛出错误
如果您在 Run Script 操作中抛出错误,它将立即中断您的流程链并停止后续流程的执行。 如果您使用了 "Blocking" Event hook,抛出错误将取消原始事件事务到数据库。
Node Modules
出于安全原因,默认情况下禁用模块使用。 您可以通过FLOWS_EXEC_ALLOWED_MODULES
环境变量 配置可用的节点模块。
Create Data
此操作在集合中创建项目。
选项
- Collection - 选择您要在其中创建项目的集合。
- Permissions - 选择用于此操作的权限范围。
- Emit Events - 切换是否发出事件。
- Payload - 定义有效负载以在集合中创建项目。
有效载荷
一个包含所有已创建项目 ID 的数组将附加在其 <operationKey>
下。
更多细节
Emit Events 在 Directus 中切换事件的 visibility。 例如,如果打开,此操作将触发其他流或自定义扩展中的相关事件挂钩。 如果关闭,该操作将不会触发其他事件挂钩。 想象一下这样一种情况,您有一个由 <collection>.items.create
触发的流程,其中包含一个操作,然后尝试在该 <collection>
中创建另一个项目。 这将引发一个无限循环,操作会无限地触发它自己的流程。 但是,如果您关闭 Emit Events,则此操作不再触发其他事件挂钩。
要了解创建项目时的有效负载要求,请参阅 API 参考 > 项目。
Delete Data
此操作从集合中删除项目。
选项
- Collection - 选择您要从中删除项目的集合。
- Permissions - 设置用于此操作的权限范围。
- Emit Events - 切换是否发出事件。
- IDs - 设置项目 ID 并按 Enter 键确认。单击要删除的 ID。
- Query - 使用查询选择要删除的项目。要了解更多信息,请参阅 过滤规则。
有效载荷
一个包含所有已删除项的 ID 的数组将附加在其 <operationKey>
下。
更多细节
Emit Events 在 Directus 中切换事件的 visibility。例如,如果打开,此操作将触发其他流或自定义扩展中的相关事件挂钩。如果关闭,该操作将不会触发其他事件挂钩。想象一下这样一种情况,您有一个由 <collection>.items.delete
触发的流程,其中包含一个操作,然后尝试删除该 <collection>
中的另一个项目。这将引发一个无限循环,操作会无限地触发它自己的流程。但是,如果您关闭 Emit Events,则此操作不再触发其他事件挂钩。
Read Data
此操作从集合中读取项目并将它们添加到数据链中。您可以通过 ID 或运行查询来选择项目。
选项
- Permissions - 设置用于此操作的权限范围。
- Collections - 选择您想从中读取项目的集合。
- IDs - 输入您要阅读的项目的 ID,然后按 Enter。单击要删除的 ID。
- Query - 选择带有查询的项目。要了解更多信息,请参阅 过滤规则。
- Emit Events - 切换是否发出事件。
有效载荷
包含读取的所有项目的数组将附加在其 <operationKey>
下。
更多细节
Emit Events 在 Directus 中切换事件的 visibility。例如,如果打开,此操作将触发其他流或自定义扩展中的相关事件挂钩。如果关闭,该操作将不会触发其他事件挂钩。想象一下这样一种情况,您有一个由 <collection>.items.read
触发的流,其中包含一个操作,然后尝试读取该 <collection>
中的另一个项目。这将引发一个无限循环,操作会无限地触发它自己的流程。但是,如果您关闭 Emit Events,则此操作不再触发其他事件挂钩。
Update Data
此操作更新集合中的项目。您可以通过 ID 或运行查询来选择要更新的项目。
选项
- Collection - 选择您要在其中更新项目的集合。
- Permissions - 设置此操作将继承权限的角色。
- Emit Events - 切换是否发出事件。
- IDs - 输入您要阅读的项目的 ID,然后按 Enter。单击要删除的 ID。
- Payload - 更新集合中的项目。要了解更多信息,请参阅 API > 项目。
- Query - 选择要使用查询更新的项目。要了解更多信息,请参阅 过滤规则。
有效载荷
一个包含所有更新项目的数组将附加在它的 <operationKey>
下。
更多细节
Emit Events 在 Directus 中切换事件的 visibility。例如,如果打开,此操作将触发其他流或自定义扩展中的相关事件挂钩。如果关闭,该操作将不会触发其他事件挂钩。想象一下,你有一个由 <collection>.items.update
触发的流程,其中包含一个操作,然后尝试更新该 <collection>
中的另一个项目。这将引发一个无限循环,其中操作触发自己的流程,无休止地更新项目。但是,如果您关闭 Emit Events,则此操作不再触发其他事件挂钩。
要了解更新项目时的“有效负载”要求,请参阅 API 参考 > 项目。
Log to Console
此操作将信息输出到服务器端控制台以及 Data Studio 中的 Logs。这是对流配置进行故障排除的关键工具。日志操作的键在数据链上会有一个空值。
选项
- Message — 设置 日志消息。
有效载荷
此操作不会为数据链生成数据,因为它的消息用于调试和故障排除。它将在 operationKey
上附加一个 null
值。
更多细节
有关更多详细信息,请参阅 日志 部分。
发送电子邮件
此操作发送电子邮件。
选项
- To - 设置电子邮件地址。点击
↵
Enter
(PC) 或return
(Mac) 保存电子邮件。单击药丸将其删除。 - 主题 - 设置主题行。
- 正文 - 使用 Markdown 或 WYSIWYG 编辑器创建电子邮件正文。
有效载荷
此操作不会为数据链生成数据。它将在 operationKey
上附加一个 null
值。
更多细节
批量电子邮件
您可以在“收件人”输入选项中输入一组电子邮件以发送多封电子邮件。
如果您正在从 localhost:8080 测试此操作,请务必检查您的垃圾邮件箱,因为您的电子邮件提供商可能会自动将其发送到那里。
Send Notification
此操作将通知推送给 Directus 用户。 如果操作成功执行,包含生成的所有已发送通知的 ID 的列表将附加在此操作的键下。
选项
- Users - 通过 UUID 定义用户。 点击
↵
Enter
(PC) 或return
(Mac) 保存。 单击药丸将其删除。 - Permissions - 定义此操作将从中继承权限的角色。
- 标题 - 设置通知的标题。
- Message - 设置通知的主体。
有效载荷
此操作不会生成数据。 它将在其 operationKey
上附加一个 null
值。
更多细节
批量通知
您可以在“收件人”输入选项中输入一组 UUID 以发送多封电子邮件。
Webhook / Request URL
此操作向另一个 URL 发出请求。
选项
- 方法 - 选择发出 GET、POST、PATCH、DELETE 或其他类型的请求。
- URL - 定义将请求发送到的 URL。
- Headers — 创建一个新的
header:value
以随请求一起传递。 - Request Body - 设置请求正文的数据。
有效载荷
当一个操作成功完成时,response
会附加在它的<operationKey
下。
Sleep
此操作会在 Flow 中创建给定毫秒数的延迟,然后继续执行下一个操作。
选项
- 毫秒 - 定义睡眠的毫秒数。
有效载荷
此操作不会生成数据。它将在其 operationKey
上附加一个 null
值。
转换有效载荷
此操作允许您自定义定义自己的 JSON 有效负载以用于后续操作。这使您能够获取多个数据源并将它们“整理”到单个有效负载中。
选项
- JSON - 定义要插入数据链的 JSON。
有效载荷
当操作成功完成时,您在 JSON 配置操作下定义的值将附加到其 operationKey
。
更多细节
Transform Payload 操作什么时候派上用场? 假设您需要使用来自 users_collection
、widgets_collection
和一些处理数据的第 3 方资源的数据创建有效负载。 您可以为 collection_a
添加一个 Read Data 操作,为 collection_b
添加另一个 Read Data 操作,以及为第三方资源添加一个 Webhook 操作。
然后您可以将所有这些数据拼接在一起以创建一个新的 JSON 对象,如下所示:
{
"note": "You can add a hard-coded value!",
"name": "{{users_collection.username}}",
"widget_id": "{{widgets_collection.id}}",
"results": "{{webhookKey.subnestedValue}}"
}
Trigger Flow
此操作启动另一个流,并且_(可选)_ 将数据传递给它。 它应该与 Another Flow 触发器结合使用。
选项
- Flow - 通过其主键 UUID 定义流。
- Payload - 定义一个 JSON
payload
以传递到它触发的流上的$trigger
。
有效载荷
如果您在另一个流的触发器中配置了一个响应正文,这将附加在此 operationKey
下。 如果没有配置 Response Body,则在此 operationKey
下附加 null
。
更多细节
流动 for 循环
如果将数组传递给另一个流,则另一个流将为数组中的每个项目运行一次。