

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 工作流程和活動類型註冊
<a name="features.registration"></a>

Amazon SWF 需要先註冊活動和工作流程類型，才能使用它們。框架會在您新增至工作者的實作中自動註冊工作流程和活動。此架構會尋找實作工作流程和活動的類型，並將其註冊到 Amazon SWF。框架預設會使用界面定義來推斷工作流程和活動類型的註冊選項。所有工作流程界面必須具有 `@WorkflowRegistrationOptions` 註釋或 `@SkipRegistration` 註釋。工作流程工作者會註冊用來設定它的所有工作流程類型，而這些工作流程類型具有 `@WorkflowRegistrationOptions` 註釋。同樣地，每個活動方法都需要標註 `@ActivityRegistrationOptions` 註釋或 `@SkipRegistration` 註釋，或者其中一個註釋必須存在於 `@Activities` 界面上。活動工作者會註冊用來設定它的所有活動類型，而這些活動類型已套用 `@ActivityRegistrationOptions` 註釋。當您啟動其中一個工作者時，會自動執行註冊。具有`@SkipRegistration`註釋的工作流程和活動類型未註冊。`@ActivityRegistrationOptions`和`@SkipRegistration`註釋已覆寫語意，而最明確的一個會套用到活動類型。

請注意，Amazon SWF 不允許您在註冊後重新註冊或修改類型。框架將嘗試註冊所有類型，但不會重新註冊已經註冊的類型，且不會報告錯誤。

如果您需要修改已註冊的設定，則必須註冊類型的新版本。啟動新執行時，或呼叫使用已產生之用戶端的活動時，您也可以覆寫已註冊的設定。

註冊需要類型名稱以及其他註冊選項。預設實作會判斷這些項目，如下所示：

## 工作流程類型名稱和版本
<a name="features.registration.workflow"></a>

框架會從工作流程界面判斷工作流程類型的名稱。預設的工作流程類型名稱格式為 {{{prefix}}}{{{name}}}。{{{prefix}}} 設定為 `@Workflow` 界面的名稱，後接 '.'，而 {{{name}}} 設定為 `@Execute` 方法的名稱。上述範例中工作流程類型的預設名稱為 `MyWorkflow.startMyWF`。您可以使用 `@Execute` 方法的 name 參數來覆寫預設名稱。範例中工作流程類型的預設名稱為 `startMyWF`。名稱不得為空字串。請注意，當您使用 `@Execute` 覆寫名稱時，框架不會自動在名稱前面加上前綴。您可以自由使用自己的命名方式。

工作流程版本使用 `@Execute` 註釋的 `version` 參數所指定。`version` 沒有預設值，而且必須明確予以指定；`version` 是任意形式的字串，您可以自由地使用自己的版本控制方式。

## 訊號名稱
<a name="features.registration.signal"></a>

訊號名稱可以使用 `@Signal` 註釋的 name 參數予以指定。如果未指定，則會預設為訊號方法的名稱。

## 活動類型名稱和版本
<a name="features.registration.activity"></a>

框架會從活動界面判斷活動類型的名稱。預設的活動類型名稱格式為 {{{prefix}}}{{{name}}}。{{{prefix}}} 設定為 `@Activities` 界面的名稱，後接 '.'，而 {{{name}}} 設定為方法名稱。您可以在活動界面的`@Activities`註釋中覆寫預設的 {{{prefix}}}。您也可以在活動方法上使用 `@Activity` 註釋，來指定活動類型名稱。請注意，當您使用 `@Activity` 覆寫名稱時，框架不會自動在名稱前面加上前綴。您可以自由地使用自己的命名方式。

 活動版本使用 `@Activities` 註釋的 version 參數所指定。此版本用來做為界面中所定義之所有活動的預設值，而且可以使用 `@Activity` 註釋以根據活動予以覆寫。

## 預設任務清單
<a name="features.registration.defaulttasklist"></a>

預設任務清單的設定方式是使用 `@WorkflowRegistrationOptions` 和 `@ActivityRegistrationOptions` 註釋以及設定 `defaultTaskList` 參數。預設會設定為 `USE_WORKER_TASK_LIST`。此特殊值指示框架使用工作者物件上所設定的任務清單，而工作者物件用於註冊活動或工作流程類型。您也可以使用這些註釋，將預設任務清單設定為 `NO_DEFAULT_TASK_LIST`，以選擇不註冊預設任務清單。這可以用於您需要在執行階段指定任務清單時。如果尚未註冊預設任務清單，則在啟動工作流程時，或在產生之用戶端的個別方法多載上使用 `StartWorkflowOptions` 和 `ActivitySchedulingOptions` 參數來呼叫活動方法時，您必須指定任務清單。

## 其他註冊選項
<a name="features.registration.other"></a>

Amazon SWF API 允許的所有工作流程和活動類型註冊選項都可以透過架構指定。

如需完整的「工作流程」**註冊選項清單，請參閱下列項目：
+ [@工作流程](annotations.md#annotations-workflow)
+ [@Execute](annotations.md#annotations-execute)
+ [@WorkflowRegistrationOptions](annotations.md#annotations-workflowregistrationoptions)
+ [@Signal](annotations.md#annotations-signal)

如需完整的「活動」**註冊選項清單，請參閱下列項目：
+ [@Activity](annotations.md#annotations-activity)
+ [@Activities](annotations.md#annotations-activities)
+ [@ActivityRegistrationOptions](annotations.md#annotations-activityregistration)

如果您想要完全掌控類型註冊，請參閱「[工作者可擴充性](running.md#running.workerextend)」。