

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 Step Functions 中使用工作流程工作室创建工作流程
<a name="workflow-studio-create"></a>

学习使用 Step Functions Workflow Studio 创建、编辑和运行工作流。工作流程准备就绪后，可以保存、运行或导出它。

**Topics**
+ [创建状态机](#workflow-studio-components-create)
+ [设计工作流](#workflow-studio-build)
+ [运行工作流](#workflow-studio-components-create-run)
+ [编辑工作流](#workflow-studio-components-create-edit)
+ [导出工作流](#workflow-studio-components-create-export)
+ [使用占位符创建工作流程原型](#workflow-studio-components-create-prototype)

## 创建状态机
<a name="workflow-studio-components-create"></a>

在工作流程工作室中，可以选择初学者模板或空白模板来创建工作流程。

入门模板是一个 ready-to-run示例项目，它会自动创建工作流程原型和定义，并将项目所需的所有相关 Amazon 资源部署到您的 Amazon Web Services 账户项目中。您可以使用这些初学者模板按原样部署和运行，也可以使用工作流原型在其基础上进行构建。有关初学者模板的更多信息，请参阅 [使用 Step Functions 的初学者模板部署状态机](starter-templates.md)。

借助空白模板，可以使用[设计](workflow-studio.md#wfs-interface-design-mode)或[代码](workflow-studio.md#wfs-interface-code-mode)模式来创建自定义工作流程。

### 使用初学者模板创建状态机
<a name="wfs-create-workflow-templates"></a>

1. 打开 [Step Functions 控制台](https://console.amazonaws.cn/states/home?region=us-east-1#/)，然后选择**创建状态机**。

1. 在**选择模板**对话框中，执行以下操作之一来选择示例项目：
   + 在“按关键字搜索”框中键入 **Task Timer**，然后从搜索结果中选择**任务计时器**。
   + 浏览右侧窗格中**全部**下列出的示例项目，然后选择**任务计时器**。

1. 选择**下一步**继续。

1. 选择模板使用方式：

1. 选择**使用模板**继续进行选择。

1. **运行演示** — 创建只读状态机。审核后，您可以创建工作流和所有相关资源。

1. **构建依据** — 提供可编辑的工作流定义，您可借助自有资源对其进行审核、定制并部署。（**不会**自动创建函数或队列等相关资源。）

### 使用空白模板创建工作流
<a name="wfs-create-workflow-blank"></a>

当您想要从干净的画布开始时，可以从空白模板创建一个工作流程。

1. 打开 [Step Functions 控制台](https://console.amazonaws.cn/states/home?region=us-east-1#/)。

1. 选择**创建状态机**。

1. 选择**从空白创建**。

1. 为状态机命名，然后选择**继续**，在 Workflow Studio 中编辑状态机。

   现在，您可以开始在[设计模式](workflow-studio.md#wfs-interface-design-mode)下设计工作流，或在[代码模式](workflow-studio.md#wfs-interface-code-mode)下编写工作流定义。

1. 选择**配置**可在[配置模式](workflow-studio.md#wfs-interface-config-mode)下管理工作流程的配置。例如，为工作流提供名称并选择其类型。

## 设计工作流
<a name="workflow-studio-build"></a>

如果您知道要添加的状态的名称，请使用[状态浏览器](workflow-studio.md#workflow-studio-components-states)顶部的搜索框来查找该状态。否则，请在浏览器中查找所需的状态，并将其添加到画布上。

可以通过将状态拖到工作流程中的其它位置，来对工作流程中的状态进行重新排序。将状态拖到画布上时，会出现一条线来显示该状态将插入工作流程中的位置，如以下屏幕截图所示：

![\[说明性屏幕截图显示了指示状态目的地的蓝线。\]](http://docs.amazonaws.cn/step-functions/latest/dg/images/wfe-design-02.png)


将状态拖放到画布上后，其代码会自动生成并添加到工作流程定义中。要查看定义，请打开 [Inspector](workflow-studio.md#workflow-studio-components-formdefinition) 面板上的**定义**切换开关。可以选择[代码模式](workflow-studio.md#wfs-interface-code-mode)，以便使用内置的代码编辑器来编辑定义。

将状态拖放到画布上后，可以在右侧的 [检查器面板](workflow-studio.md#workflow-studio-components-formdefinition) 面板中对其进行配置。此面板包含您在画布上放置的每个状态或 API 操作的**配置**、**输入**、**输出**和**错误处理**选项卡。您可以在**配置**选项卡中配置工作流中包含的状态。

例如，Lambda 调用 API 操作的**配置**选项卡提供以下选项：
+ **状态名称**：可以使用自定义名称标识状态，也可以接受生成的默认名称。
+ **API** 显示状态使用哪个 API 操作。
+ **集成类型**：可以选择用于对其他服务调用 API 操作的服务集成类型。
+ **函数名称**提供执行以下操作的选项：
  +  **输入函数名称**：您可以输入函数名称或其 ARN。
  +  **运行时从状态输入中获取函数名称**：您可以使用此选项根据指定的路径从状态输入中动态获取函数名称。
  +  **选择函数名称**：您可以直接从您的账户和区域的可用函数中进行选择。
+ **有效载荷**：可以选择使用状态输入、JSON 对象或无有效载荷，作为有效载荷传递给 Lambda 函数。如果选择 JSON，则可以同时包含静态值和从状态输入中选择的值。
+ （可选）某些状态可以选择**等待任务完成**或**等待回调**。如果可用，则可以选择以下[服务集成模式](connect-to-resource.md)之一：
  + **未选择任何选项**：Step Functions 将使用[请求响应](connect-to-resource.md#connect-default)集成模式。Step Functions 将等待 HTTP 响应，然后进入下一个状态。Step Functions 不会等待作业完成。当没有可用选项时，状态将使用此模式。
  + **等待任务完成**：Step Functions 将使用[运行作业 (.sync)](connect-to-resource.md#connect-sync) 集成模式。
  + **等待回调**：Step Functions 将使用[等待具有任务令牌的回调](connect-to-resource.md#connect-wait-token)集成模式。
+ （可选）为了访问工作流程 Amazon Web Services 账户 中不同配置的资源，Step Functions 提供[跨账户访问权限](concepts-access-cross-acct-resources.md)。**用于跨账户存取的 IAM 角色**提供以下选项：
  + **提供 IAM 角色 ARN**：指定包含相应资源访问权限的 IAM 角色。这些资源可在目标账户中使用，您可以 Amazon Web Services 账户 向该账户进行跨账户调用。
  + **在运行时从状态输入中获取 IAM 角色 ARN**：在包含 IAM 角色的状态 JSON 输入中指定一个指向现有键值对的引用路径。
+ **下一个状态**用于选择下一个要过渡的状态。
+ （可选）**注释**字段不会影响工作流程，但可以使用它为工作流程添加注释。

某些状态将有其它通用的配置选项。例如，Amazon ECS `RunTask` 状态配置包含一个填充了占位符值的 `API Parameters` 字段。对于此类状态，您可以将占位符值替换为适合您需求的配置。

**删除状态**

可以按退格键，右键单击并选择**删除状态**，或者在[设计工具栏](workflow-studio.md#wfs-interface-design-mode)上选择**删除**。

## 运行工作流
<a name="workflow-studio-components-create-run"></a>

工作流程准备就绪后，可以在 [Step Functions 控制台](https://console.amazonaws.cn/states/home)中运行该工作流程并查看执行情况。

**在 Workflow Studio 中运行工作流**

1. 在**设计**、**代码**或**配置**模式下，选择**执行**。

   **开始执行**对话框将在新选项卡中打开。

1. 在**启动执行**对话框中，执行以下操作：

   1. （可选）输入自定义执行名称，以便覆盖生成的默认执行名称。
**非 ASCII 名称和日志记录**  
Step Functions 对于状态机、执行、活动和标签接受包含非 ASCII 字符的名称。由于此类字符会 CloudWatch 阻止亚马逊记录数据，因此我们建议您仅使用 ASCII 字符，这样您就可以跟踪 Step Functions 的指标。

   1. （可选）在**输入**框中，以 JSON 格式输入输入值以便运行工作流。

   1. 选择**启动执行**。

   1. Step Functions 控制台会将您引导到一个以您的执行 ID 为标题的页面，即*执行详细信息*页面。您可以随着工作流的进展以及在工作流完成后查看执行结果。

      要查看执行结果，请在**图表视图**上选择各个状态，然后在[步骤详细信息](concepts-view-execution-details.md#exec-details-intf-step-details)窗格中选择各个选项卡，分别查看每个状态的详细信息，包括输入、输出和定义。有关可在*执行详细信息*页面上查看的执行信息的详细信息，请参阅[执行详细信息概览](concepts-view-execution-details.md#exec-details-interface-overview)。

## 编辑工作流
<a name="workflow-studio-components-create-edit"></a>

您可以在 Workflow Studio 的[设计模式](workflow-studio.md#wfs-interface-design-mode)中直观地编辑现有工作流。

在 [Step Functions 控制台](https://console.amazonaws.cn/states/home)中，从**状态机**页面中选择要编辑的工作流程。工作流程在 Workflow Studio 的**设计**模式下打开。

也可以在[代码模式](workflow-studio.md#wfs-interface-code-mode)下编辑工作流程定义。选择**代码**按钮，以便在工作流程工作室中查看或编辑工作流程定义。

**注意**  
如果您在工作流中发现错误，则必须在**设计**模式下进行修复。如果工作流中存在任何错误，则无法切换到**代码**或**配置**模式。

保存对工作流程的更改时，也可以选择发布新**版本**。使用版本，可以选择运行工作流程的原始版本或备用版本。要了解使用版本管理工作流程的更多信息，请参阅 [Step Functions 工作流程中的状态机版本](concepts-state-machine-version.md)

## 导出工作流
<a name="workflow-studio-components-create-export"></a>

您可以导出工作流程 [Amazon States Language](concepts-amazon-states-language.md) (ASL) 的定义和工作流图：

1. 在 [Step Functions 控制台](https://console.amazonaws.cn/states/home)中选择您的工作流。

1. 在*状态机详细信息*页面上，选择**编辑**。

1. 选择**操作**下拉按钮，然后执行以下一项或两项操作：
   + 要将工作流图表导出到 SVG 或 PNG 文件，请在**导出图表**下选择所需的格式。
   + 要将工作流定义导出为 JSON 或 YAML 文件，请在**导出定义**下选择所需的格式。

## 使用占位符创建工作流程原型
<a name="workflow-studio-components-create-prototype"></a>

可以使用工作流程工作室或[Infrastructure Composer中的工作流程工作室](use-wfs-in-app-composer.md)，来创建包含*占位符资源* 的新工作流程原型，这些占位符资源是尚未存在的命名资源。

要创建工作流程原型，请执行以下操作：

1. 登录 [Step Functions 控制台](https://console.amazonaws.cn/states/home?region=us-east-1#/)。

1. 选择**创建状态机**。

1. 选择**从空白创建**。

1. 为状态机命名，然后选择**继续**，在 Workflow Studio 中编辑状态机。

1. 打开 Workflow Studio 的[设计](workflow-studio.md#wfs-interface-design-mode)模式。在 Workflow Studio 中设计您的工作流。要包含占位符资源，请执行以下操作：

   1. 选择要为其添加占位符资源的状态，然后在**配置**中：
      + 对于 Lambda 调用状态，选择**函数名称**，然后选择**输入函数名称**。您也可以输入函数的自定义名称。
      + 对于“Amazon SQS 发送消息”状态，选择**队列 URL**，然后选择**输入队列 URL**。输入占位符队列 URL。
      + 对于“Amazon SNS 发布”状态，从**主题**中选择一个主题 ARN。
      + 对于**操作**下列出的所有其他状态，您可以使用默认配置。
**注意**  
如果您在工作流中发现错误，则必须在**设计**模式下进行修复。如果工作流中存在任何错误，则无法切换到**代码**或**配置**模式。

   1. （可选）要查看自动生成的工作流 ASL 定义，请选择**定义**。

   1. （可选）要在 Workflow Studio 中更新工作流定义，请选择**代码**按钮。
**注意**  
如果您在工作流定义中看到错误，则必须在**代码**模式下对其进行修复。如果工作流定义中存在任何错误，则无法切换到**设计**或**配置**模式。

1. （可选）要编辑状态机名称，请选择默认状态机名称旁边的编辑图标，**MyStateMachine**然后在**状态机名称框中指定名称**。

   您也可以切换到[配置模式](workflow-studio.md#wfs-interface-config-mode)编辑默认状态机名称。

1. 指定工作流设置，例如状态机类型及其执行角色。

1. 选择**创建**。

现在，您已经创建了一个新的工作流，其中包含可用于原型的占位符资源。您可以[导出](#workflow-studio-components-create-export)工作流定义和工作流图表。
+ 要将工作流定义导出为 JSON 或 YAML 文件，请在**设计**或**代码**模式下，选择**操作**下拉按钮。然后，在**导出定义**下，选择要导出的格式。您可以使用此导出的定义作为使用 [Amazon Toolkit for Visual Studio Code](https://docs.amazonaws.cn/toolkit-for-vscode/latest/userguide/building-stepfunctions.html) 进行本地开发的起点。
+ 要将工作流图表导出为 SVG 或 PNG 文件，请在**设计**或**代码**模式下，选择**操作**下拉按钮。然后，在**导出定义**下，选择所需的格式。