在你开始之前
请务必查看 快速入门指南 以获得平台的基本概述。
Learn More
There is also dedicated API documentation on Flows and Operations.
What's a Flow?
每个流由三个元素组成:触发器、操作和数据链。
触发器
每个流程都以一个 trigger 开头,它定义了启动流程的操作或事件。 此操作或事件可能是应用程序内的某种类型的事务、传入的 webhook、cron 作业等。
操作
操作 是在流中执行的操作或过程。 这些使您能够管理数据:发送电子邮件、推送应用内通知、发送 webhook 等等。
用概念术语来说,操作做了三件事:
- 从 Directus 或其他外部服务获取数据。
- 处理数据 a.k.a. 转换、验证或其他方式。
- 向 Directus 或其他外部服务发送数据。
Developers
您甚至可以开发自己的 自定义操作 以适应任何用例。
数据链
为了让流的操作跟踪和访问相同的数据,每个流都会创建自己的 数据链。每个操作都可以访问此数据链,并且每个操作在运行后都会在此对象上附加一些值。这意味着您可以使用 数据链变量 在当前操作中动态访问先前操作中的数据。
控制流
并非流中执行的每个操作都能成功。在某些情况下,您的操作将失败。也许一个操作试图访问不存在的数据,或者一个 webhook 操作由于某种原因失败,或者你设置了一个 condition 操作,当它的设计_fails_不满足条件。
这些失败的操作不会立即停止您的流程。相反,流允许您通过在内部提供成功路径和失败路径来实现 控制流 一个流程:
- 成功 — 如果
operation1
成功执行,则operation2
执行。 - Failure — 否则,如果
operation1
执行失败,则operation3
执行。
我们有了它! 这些是任何流程的概念基石。现在您需要知道如何实际创建流,我们将在下一节中讨论。
配置一个流
创建流
- 导航到 Settings > Flows 并单击页眉中的 add。一个抽屉会打开。
- 在 Flow Setup 下,填写流程的 Name 和以下 optional 详细信息:
- 状态 - 将流设置为活动或非活动。
- 图标 - 添加图标以帮助快速识别流程。
- 描述 - 设置流的简短口头描述。
- 颜色 - 设置颜色以帮助识别流程。
- 活动和日志跟踪 - 让您跟踪活动和日志、活动或两者都不。
要了解更多信息,请参阅下面有关 Logs 的部分以及 Activity Log 文档。
配置触发器
- 单击 arrow_forward 导航到 Trigger Setup。选择 trigger 类型并根据需要进行配置。
- 点击菜单标题中的done进行确认。
您现在将在一个空的网格区域中看到您的触发器。是时候开始添加操作了。
配置操作
- 在触发面板上,单击add,Create Operation 侧边抽屉将打开。
- 选择名称、操作 类型,并根据需要进行配置。 Directus 会将名称转换为唯一的操作密钥,用于 数据链。如果您不选择名称,系统将自动为您生成名称和密钥。 7、接下来,点击页眉中的done确认并返回流格区域。
- 从这里,您可以进行以下可选配置:
- 重新定位 - 您可以拖放面板以根据需要重新定位。
- 取消链接/重新链接 - 单击并拖动 adjust 或 arrow_forward 以取消链接/重新链接流程。
- 复制操作 - 要复制操作,请单击 more_vert 以打开其上下文菜单。单击 control_point_duplicate 将创建操作的副本(及其配置详细信息)。
- 复制操作 - 要将操作复制并粘贴到另一个流程中,请单击 more_vert 以打开其上下文菜单。点击 input 会打开一个弹出菜单。从下拉列表中选择所需的流程,然后单击 Copy。
- data_object 切换原始编辑器 - 单击操作表单输入字段上的 data_object 以在标准值和原始值之间切换输入类型。这允许您在任何类型的配置选项中添加原始值或 数据链变量,甚至是下拉菜单、复选框和单选按钮。
- 删除操作 - 要删除操作,请单击 more_vert,然后单击 delete。将出现一个弹出菜单。点击删除确认。
- 在新建的操作面板上:
- 点击add,将操作添加到成功路径。
- 点击remove 将操作添加到失败路径。
- 重复步骤 5-10 以根据需要构建您的流程。
- 单击done 确认并创建您的流程。
- 单击arrow_back 返回流列表。
- 创建后,您可能需要重新编辑流程、将其切换为非活动状态或将其删除。
编辑流
- 导航到所需的流程。
- 单击流页面标题中的 edit 并根据需要进行重新配置。
- 点击完成确认。
将流切换为非活动状态
- 导航至 Settings > Flows 并单击所需流上的 more_vert。
- 点击**check Set Flow to Active** 或**block Set Flow to Inactive**。
删除流
- 单击所需流上的 more_vert 以打开其上下文菜单。
- 点击delete,弹出菜单。点击删除确认。
现在我们知道如何创建和配置流,是时候更深入地了解数据链了。
数据链
请记住,每个流都会创建自己的 JSON 对象来存储生成的任何数据。
当流程开始时,四个键被附加到数据链:$trigger
、$accountability
、$env
和$last
。
然后,随着每个操作的运行,它可以访问此数据链。 操作完成后,其数据将附加在其 <operationKey>
下。 当操作不生成数据时,将在其键下附加null
。
下面是一个高度通用的数据链示例。
{
"$trigger": {
// 包含流的触发器生成的数据。
// 这可能包括标头、访问令牌、有效负载等。
// 每个数据链都有一个 $trigger 键。
},
"$accountability": {
// 提供有关谁/什么启动了流程的详细信息。
// 这可能包括用户的 id、角色、IP 地址等...
// 每个数据链都有一个 $accountability 键。
},
"$env": {
// `FLOWS_ENV_ALLOW_LIST` 中允许的环境变量。
// 这可能包括 PUBLIC_URL、PORT 等...
// 每个数据链都有一个 $env 键。
},
"$last": {
// $last 下附加的值在每次操作后都会发生变化。
// 它存储流中执行的最后一个操作的数据。
// 这样,您就不必记住上一个操作的唯一键名。
// 这是一个方便的小便利工具!
// 每个数据链都有一个 $last 键。
},
"operationKey1": "A value", // 第一次操作生成的数据(如果有)。
"operationKey2": {
"nestedKey": ["nested val", "nested val 2"] // 嵌套的 JSON 数据很常见。
},
"operationKey3": null // 如果没有生成数据,则附加一个空值。
}
如您所见,上面的示例在每个键中都没有任何实质性数据。 实际上,会有很多数据,并且总是会略有不同,具体取决于您的流程的独特配置。 在配置和调试期间,您需要使用 The Log 之类的工具来查看您的数据链,并确保每个操作都按照您的预期访问和生成数据。
在我们的示例中,我们使用通用 placeholders 作为操作键,例如 <operationKey>
,这对于低代码用户来说可能看起来很有趣。 在实践中,操作键实际上将具有唯一且具有描述性的名称,例如 send_email_7538
。
请记住,$trigger
、$accountability
和 $last
以 $
开头,但不是 operationKeys
。\
数据链变量
在 配置您的操作 时,您可以使用数据链中的键作为变量来访问数据。 只需用引号和 double mustaches 将变量包装起来。 例如:
"{{ $accountability }}"
将获得嵌套在 $accountability
键下的数据,产生如下内容:
{
"user": "4b11492d-631d-4b8a-bca7-2beasdfadf58b",
"role": "12c79228-5361-4905-929b-d69d3w46trs6b",
"admin": true,
"app": true,
"ip": "127.0.0.1",
"userAgent": "Amazon CloudFront"
}
您可以将自己的硬编码 JSON 与变量混合。 您还可以使用点表示法和数组索引来检索子嵌套值。
{
"key0": "a hard-coded value",
"key1": "{{ $trigger.payload }}",
"key2": "{{ operationKey.payload.friend_list[0] }}"
}
你不能使用双胡子语法传递任何类型的计算。
{
"key": "{{ 2 + 2 }}",
"key2": "{{ $trigger.payload.toLowerCase() }}"
}
某些操作使用下拉菜单、切换、复选框和其他输入选项。 但是,您可以完全绕过这一点,直接使用 Toggle to Raw Editor 输入原始值。 您也可以使用双胡子语法在这些输入选项中动态访问数据。
Logs
可从侧边栏访问,日志存储每个流程执行的信息。 每个日志将显示来自触发器的信息以及流中的每个操作。 要访问流的日志,请按照以下步骤操作。
- 导航至 Settings > Flows 并单击所需的流。
- 点击边栏中的**fact_check日志**。 将打开一个侧抽屉,显示流的日志。
- 单击一个日志,另一个侧边抽屉将打开,允许您查看其数据。
- 完成后,点击close关闭抽屉。
日志不是到数据链的 1:1 映射。 每个触发器和操作都有自己的下拉列表,用于存储其相关数据。 以下是您将从其中得到的:
Trigger
- Options - 配置触发器时输入的值。 (这些配置选项不存储在数据链上)。
- Payload - 显示附加在
$trigger
下的数据。 - Accountability - 显示附加在
$accountability
下的数据。
请注意,$accountability
没有嵌套在 $trigger
键下。但是,它在日志中的触发器下列出,因为 $accountability
是由触发器生成的。
<操作键>
- Options - 您在配置操作时输入的值。 (这些配置选项不存储在数据链上)。
- Payload - 显示附加在此
<operationKey>
下的数据。
请记住,Log to Console 操作是一个关键的调试工具。它不会将数据附加到数据链中。您将在 Options 下查看您的日志消息。因此,您记录的任何内容都将始终显示为嵌套在 message
键下。例如,如果您决定记录“上次操作成功”,它将显示为:
{
"message": "The last operation was a success"
}
日志存储在数据库中
请记住,如果您已配置流来跟踪日志,则所有这些信息都存储在数据库中。 您可能需要定期删除这些数据。
$last
在哪里?
您可能会注意到 $last
不在日志中。 请记住,$last
会不断更新以存储最近执行的操作的数据。 日志显示整个流程的结果。 因此,$last
只是流程中的最后一个操作。
更多关于调试的信息
您可能会发现像 Postman 这样的工具对查看数据和调试流程很有帮助。