

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

# 亚马逊 SWF 中的标记
<a name="swf-dev-adv-markers"></a>

有时，建议您将信息记录在您的使用案例之特定工作流执行的工作流历史中。您可以通过标记将信息记录在工作流执行历史中，从而使您能将其用于任何自定义和适合特定情景的目的。

要使用标记，决策者需要使用 RecordMarker 决策，命名标记，将所需的数据附加到决策中，然后使用操作通知 Amazon SWF。`RespondDecisionTaskCompleted`Amazon SWF 将接收请求，在工作流历史记录中记录标记，并在请求中做出任何其他决策。从那一刻其，决策程序就能在工作流历史中查看标记并通过您编程所用任何方式使用该标记。

记录标记本身不会启动决策任务。为了防止工作流执行被卡住，必须执行一些继续工作流执行的操作。举例来说，这些操作可能包括决策程序排定另一个活动任务、接收信号的工作流执行或之前排定的活动任务完成。

以下为标记示例：
+ 用于对递归工作流中的回路数进行计数的计数器。
+ 根据活动结果进行的工作流执行的进度。
+ 从较早的工作流历史事件总结的信息。

在电子商务示例中，您可以增加按日检查库存以及每次递增标记计数的活动。然后，您可以增加决策逻辑，以在计数超出五时发送电子邮件给客户或通知管理人员，无需审查整个历史记录。

在以下示例中，决策程序完成了一个决策任务并对包含 `RecordMarker` 决策的 `RespondDecisionTaskCompleted` 操作做出响应。

```
https://swf.us-east-1.amazonaws.com
RespondDecisionTaskCompleted
{
  "taskToken":"12342e17-80f6-FAKE-TASK-TOKEN32f0223",
  "decisions":[{
          "decisionType":"RecordMarker",
          "recordMarkerDecisionAttributes":{
              "markerName":"customer elected special shipping offer"
          }
      },
  ]
}
```

成功记录该标记后，Amazon SWF 将返回一个成功的 HTTP 响应，类似于如下内容。

```
HTTP/1.1 200 OK
Content-Length: 0
Content-Type: application/json
x-amzn-RequestId: 6c0373ce-074c-11e1-9083-8318c48dee96
```