Skip to content

Stately Sky 入门指南 🌤️

本指南将引导您使用 XStateViteReact 部署一个简单的交通灯状态机工作流。

您需要准备的

入门视频

第一步:使用 Stately 创建一个状态机

Stately 编辑器 中创建一个项目并编写您想要的状态和转换。

在这个示例中,我们将创建一个简单的交通灯状态机,包含三个状态:greenyellowred。您可以分叉 我们的交通灯示例 进行测试。查看 这个交通灯状态机的部署版本

第二步:创建 API 密钥

创建状态机后,您需要创建一个 API 密钥以将其部署到 Sky。

  1. 使用编辑器右上角的 Deploy 按钮打开 Stately Sky 选项。
  2. 使用 Create API Key 按钮生成一个 API 密钥。

Stately Sky 模态框显示尚未创建 API 密钥。有一个按钮可以创建 API 密钥。

  1. 确保复制该 API 密钥并将其安全保存。您稍后会需要它。

页面应如下所示:

Stately Sky 模态框显示 API 密钥在一个输入框中,隐藏在密码点后面。有选项可以重新生成、删除、显示或复制 API 密钥到剪贴板。

第三步:将状态机部署到 Sky

生成 API 密钥后,您可以将状态机作为工作流部署到 Sky。

  1. 使用 Deploy to Sky 🌤️ 按钮开始部署过程。
  2. 当工作流部署完成后,它将列在 Existing deploys 下。
  3. 使用 Copy URL 将 URL 复制到剪贴板。

您需要引用启动项目中的工作流 URL。

Stately Sky 模态框显示交通灯工作流列在现有部署下。工作流有自己的 URL,并有选项可以复制 URL 或删除。

第四步:在启动项目中添加 actor

添加 API 密钥后,您需要创建一个 actor。

  1. 在启动项目的 src 目录中创建一个新文件。我们将其命名为 trafficLightActor.ts
  2. 在新文件中,导入 actorFromStately 函数,并使用提供的 URL 和您自己的会话 ID 初始化 actor:
import { actorFromStately } from '@statelyai/sky';

const actor = actorFromStately({
apiKey: '在此粘贴您的 API 密钥',
url: '在此粘贴您的 Sky URL',
sessionId: '您的会话 ID',
});

第五步:从 Sky 获取配置

现在我们已经创建了 actor,我们需要从 Sky 获取配置。这样做将下载并生成我们的仓库中的状态机配置文件,使我们在与运行的 actor 交互时具有类型安全性!

要获取配置,我们将使用 XState CLI 工具package.json 中已有的 sky 脚本。此脚本在 src 目录中的所有文件上运行命令,以查找与任何已初始化的 actor 关联的配置。

package.json

  1. 使用您选择的包管理器运行 sky 命令:
npm run sky
  1. 一旦 sky 命令完成,您应该会看到:
  • 一个带有更新导入的第二个 skyConfig 参数传递给 actorFromStately 函数。
  • 在您的 src 目录中,一个新的 TypeScript 文件,以 Studio 中的 actor 命名。在我们的例子中,它是 trafficLightActor.sky.ts

您会在 sky.ts 文件中看到一个警告,提示该文件是生成的。您不应手动编辑这些文件,因为任何本地更改都不会反映在 Sky 中运行的内容。

运行 xstate sky 只会影响尚未获取的文件。如果您在 Studio 中对状态机进行了更改,您需要删除生成的文件 yourFile.sky.ts 并再次运行命令。或者,您可以通过运行 xstate sky --refetch 强制重新获取。

完成

就是这样!您现在可以像与本地 actor 一样与运行的 actor 交互,例如使用 send() 函数发送事件。Sky 仍处于早期阶段,因此有一些限制和需要记住的事项。具体来说:

  • 仅支持 XState V5 状态机。
  • 如果您使用的是 React Native,请参阅 此评论 以解决问题。