

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Flow Framework for Java の注釈
<a name="annotations"></a>

**Topics**
+ [@Activities](#annotations-activities)
+ [@Activity](#annotations-activity)
+ [@ActivityRegistrationOptions](#annotations-activityregistration)
+ [@Asynchronous](#annotations-asynchronous)
+ [@Execute](#annotations-execute)
+ [@ExponentialRetry](#annotations-exponentialretry)
+ [@GetState](#annotations-getstate)
+ [@ManualActivityCompletion](#annotations-manualactivitycompletion)
+ [@Signal](#annotations-signal)
+ [@SkipRegistration](#annotations-skipregistration)
+ [@Wait と @NoWait](#annotations-waitnowait)
+ [@Workflow](#annotations-workflow)
+ [@WorkflowRegistrationOptions](#annotations-workflowregistrationoptions)

## @Activities
<a name="annotations-activities"></a>

この注釈をインターフェイスに設定してアクティビティタイプのセットを宣言できます。この注釈を設定したインターフェイスの各メソッドはアクティビティタイプを表します。インターフェイスには、`@Workflow` 注釈と `@Activities` 注釈の両方は設定できません

この注釈では、以下のパラメータを指定できます。

`activityNamePrefix`  
インターフェイスで宣言したアクティビティタイプの名前のプレフィックスを指定します。空の文字列 (デフォルト) に設定すると、インターフェースの名前の後に「.」がプレフィックスとして使用されます。

`version`  
インターフェイスで宣言したアクティビティタイプのデフォルトバージョンを指定します。デフォルト値は `1.0` です。

`dataConverter`  
このアクティビティタイプとその結果を作成するときに、データのシリアル化/逆シリアル化に使用する `DataConverter` の型を指定します。デフォルトでは `NullDataConverter` に設定されます。この場合、`JsonDataConverter` を使用することを指示します。

## @Activity
<a name="annotations-activity"></a>

この注釈は、`@Activities` で注釈を設定したインターフェイス内のメソッドで使用できます。

この注釈では、以下のパラメータを指定できます。

`name`  
アクティビティタイプの名前を指定します。デフォルトの空の文字列では、デフォルトのプレフィックスとアクティビティメソッドの名前を使用して、アクティビティタイプの名前 (\$1\$1*prefix*\$1\$1\$1*name*\$1 形式) を決定します。`@Activity` 注釈で名前を指定する場合、フレームワークでは自動的にプレフィックスを先頭に追加しないことに注意してください。独自の命名スキームを使用することができます。

`version`  
アクティビティタイプのバージョンを指定します。これにより、含むインターフェイスで `@Activities` 注釈に指定したデフォルトバージョンは上書きされます。デフォルトは空の文字列です。

## @ActivityRegistrationOptions
<a name="annotations-activityregistration"></a>

アクティビティタイプの登録オプションを指定します。この注釈は、`@Activities` で注釈を設定したインターフェイスまたはインターフェイス内のメソッドで使用できます。両方の場所に指定すると、メソッドに設定した注釈が適用されます。

この注釈では、以下のパラメータを指定できます。

`defaultTasklist`  
このアクティビティタイプに対して Amazon SWF に登録されているデフォルトのタスクリストを指定します。このデフォルトは、生成されたクライアントでアクティビティメソッドを呼び出すときに、`ActivitySchedulingOptions` パラメータを使用して上書きできます。デフォルトでは `USE_WORKER_TASK_LIST` に設定されます。この特別な値では、登録を担当するワーカーで使用しているタスクリストを使用することを指定します。

`defaultTaskScheduleToStartTimeoutSeconds`  
このアクティビティタイプに対して Amazon SWF に登録されている defaultTaskScheduleToStartTimeout を指定します。このアクティビティタイプのタスクをワーカーに割り当てるまでに許容される最大の待機時間を示します。詳細については、「*Amazon Simple Workflow Service API Reference*」(Amazon Simple Workflow Service API リファレンス) を参照してください。

`defaultTaskHeartbeatTimeoutSeconds`  
このアクティビティタイプに対して Amazon SWF に登録されている `defaultTaskHeartbeatTimeout` を指定します。アクティビティワーカーは、この時間内にハートビートを提供する必要があります。提供しない場合、タスクはタイムアウトになります。デフォルトでは -1 に設定されます。この特別な値では、このタイムアウトを無効化することを指定します。詳細については、「*Amazon Simple Workflow Service API Reference*」(Amazon Simple Workflow Service API リファレンス) を参照してください。

`defaultTaskStartToCloseTimeoutSeconds`  
このアクティビティタイプに対して Amazon SWF に登録されている defaultTaskStartToCloseTimeout を指定します。このタイムアウトは、このタイプのアクティビティタスクをワーカーで処理する最大許容時間を決定します。詳細については、「*Amazon Simple Workflow Service API Reference*」(Amazon Simple Workflow Service API リファレンス) を参照してください。

`defaultTaskScheduleToCloseTimeoutSeconds`  
このアクティビティタイプに対して Amazon SWF に登録されている `defaultScheduleToCloseTimeout` を指定します。このタイムアウトは、タスクをオープン状態に保持できる総時間を決定します。デフォルトでは -1 に設定されます。この特別な値では、このタイムアウトを無効化することを指定します。詳細については、「*Amazon Simple Workflow Service API Reference*」(Amazon Simple Workflow Service API リファレンス) を参照してください。

## @Asynchronous
<a name="annotations-asynchronous"></a>

ワークフロー調整ロジックのメソッドで使用した場合、メソッドを非同期的に実行することを指定します。メソッドへの呼び出しは即座に戻りますが、実際の実行は、メソッドに渡したすべての Promise<> パラメータが準備完了状態になったときに非同期的に行われます。@Asynchronous で注釈を設定したメソッドは、戻り値の型として Promise<> または void を使用する必要があります。

`daemon`  
非同期メソッド用に作成したタスクをデーモンタスクにするかどうかを指定します。デフォルトでは `False` です。

## @Execute
<a name="annotations-execute"></a>

`@Workflow` で注釈を設定したインターフェイスのメソッドで使用した場合、ワークフローのエントリポイントを識別します。

**重要**  
`@Execute` で修飾できるインターフェイスのメソッドは 1 つのみです。

この注釈では、以下のパラメータを指定できます。

`name`  
ワークフロータイプの名前を指定します。設定しない場合は、デフォルトで \$1*prefix*\$1\$1*name*\$1 に設定されます。ここで、\$1*prefix*\$1 は、ワークフローインターフェイスの名前に「.」がついたもの、\$1*name*\$1 は、ワークフロー内で `@Execute` で修飾されたメソッドの名前を表します。

`version`  
ワークフロータイプのバージョンを指定します。

## @ExponentialRetry
<a name="annotations-exponentialretry"></a>

アクティビティまたは非同期メソッドで使用した場合、処理されない例外がメソッドからスローされると、指数再試行ポリシーを設定します。再試行は、試行数の累乗によって計算されるバックオフ期間の後に行われます。

この注釈では、以下のパラメータを指定できます。

`intialRetryIntervalSeconds`  
最初の再試行までに待機する時間を指定します。この値は、`maximumRetryIntervalSeconds` および `retryExpirationSeconds` 以下にする必要があります。

`maximumRetryIntervalSeconds`  
再試行間の最大時間を指定します。最大時間に達すると、この値が再試行間隔の上限となります。デフォルトの -1 に設定すると、時間は無制限になります。

`retryExpirationSeconds`  
指数再試行を停止する期限を指定します。デフォルトの -1 に設定すると、有効期限切れはありません。

`backoffCoefficient`  
再試行間隔の計算に使用する係数を指定します。「[指数的再試行戦略](features-retry.md#features-retry-exponential)」を参照してください。

`maximumAttempts`  
指数再試行を停止するまでの試行数を指定します。デフォルトの -1 に設定すると、再試行数に制限はありません。

`exceptionsToRetry`  
再試行をトリガーする例外タイプのリストを指定します。これらのタイプの処理されない例外は以後伝播されず、計算された再試行間隔の後でメソッドが再試行されます。デフォルトでは、リストに `Throwable` が含まれます。

`excludeExceptions`  
再試行をトリガーしない例外タイプのリストを指定します。このタイプの処理されない例外は伝播できます。デフォルトでは、リストは空です。

## @GetState
<a name="annotations-getstate"></a>

`@Workflow` 注釈を設定したインターフェイスのメソッドで使用した場合、このメソッドを使用してワークフロー実行の最新状態を取得することを指定します。`@Workflow` 注釈を設定したインターフェイスでは、この注釈を最大 1 つのメソッドに設定できます。この注釈を設定したメソッドは、パラメータを取ることができず、戻り値の型として `void` 以外を使用する必要があります。

## @ManualActivityCompletion
<a name="annotations-manualactivitycompletion"></a>

この注釈をアクティビティメソッドで使用して、メソッドが戻ったときにアクティビティタスクを未完了状態にすることを指定できます。アクティビティタスクは自動的に完了しないため、Amazon SWF API を使用して直接手動で完了する必要があります。これが役立つユースケースとしては、アクティビティタスクを外部システムに委任する際に、委任先が自動化されていないか、人間が介入して完了させる必要がある場合が挙げられます。

## @Signal
<a name="annotations-signal"></a>

 `@Workflow` 注釈を設定したインターフェイスのメソッドで使用した場合、インターフェイスで宣言したワークフロータイプの実行で受信できるシグナルを識別します。シグナルメソッドを定義するには、この注釈を使用する必要があります。

この注釈では、以下のパラメータを指定できます。

`name`  
シグナル名の名前部分を指定します。指定しない場合は、メソッド名が使用されます。

## @SkipRegistration
<a name="annotations-skipregistration"></a>

`@Workflow` 注釈を設定したインターフェイスで使用した場合、ワークフロータイプを Amazon SWF に登録しないことを指定します。`@Workflow` で注釈を設定したインターフェイスでは、`@WorkflowRegistrationOptions` と `@SkipRegistrationOptions` のいずれかを使用します。両方を使用することはできません。

## @Wait と @NoWait
<a name="annotations-waitnowait"></a>

これらの注釈は、 タイプのパラメータで使用`Promise<>`して、 AWS Flow Framework for Java がメソッドを実行する前に準備が完了するのを待つ必要があるかどうかを示すことができます。デフォルトでは、`@Asynchronous` メソッドに渡した `Promise<>` パラメータが準備完了状態になった後で、メソッドが実行されます。特定のシナリオでは、このデフォルトの動作を上書きする必要があります。`@Asynchronous` メソッドに渡され、`@NoWait` 注釈の `Promise<>` パラメータは待機されません。

`List<Promise<Int>>` などの Promise を含むコレクションパラメータ (またはサブクラス) には `@Wait` 注釈を設定する必要があります。デフォルトでは、フレームワークはコレクションのメンバーを待機しません。

## @Workflow
<a name="annotations-workflow"></a>

この注釈をインターフェイスで使用して *workflow* タイプを宣言します。ワークフローのエントリポイントを宣言するには、この注釈で修飾したインターフェイスに、[@Execute](#annotations-execute) 注釈で修飾したメソッドを正確に 1 つ含める必要があります。

**注記**  
インターフェイスでは、`@Workflow` 注釈と `@Activities` 注釈の両方を同時に宣言できません。この 2 つは相互に排他的です。

この注釈では、以下のパラメータを指定できます。

`dataConverter`  
このワークフロータイプのワークフロー実行に対してリクエストの送信と結果の受信を行う場合、どの `DataConverter` を使用するかを指定します。  
デフォルトでは、`NullDataConverter` を使用します。これに伴って `JsonDataConverter` ですべてのリクエストおよびレスポンスデータが JavaScript Object Notation (JSON) として処理されます。

### 例
<a name="example"></a>

```
import com.amazonaws.services.simpleworkflow.flow.annotations.Execute;
import com.amazonaws.services.simpleworkflow.flow.annotations.Workflow;
import com.amazonaws.services.simpleworkflow.flow.annotations.WorkflowRegistrationOptions;

@Workflow
@WorkflowRegistrationOptions(defaultExecutionStartToCloseTimeoutSeconds = 3600)
public interface GreeterWorkflow {
   @Execute(version = "1.0")
   public void greet();
}
```

## @WorkflowRegistrationOptions
<a name="annotations-workflowregistrationoptions"></a>

`@Workflow` 注釈を設定したインターフェイスで使用した場合は、ワークフロータイプの登録時に Amazon SWF で使用されるデフォルト設定を提供します。

**注記**  
`@Workflow` 注釈を設定したインターフェイスでは、`@WorkflowRegistrationOptions` と `@SkipRegistrationOptions` のいずれかを使用します。両方を指定することはできません。

この注釈では、以下のパラメータを指定できます。

説明  
ワークフロータイプのテキスト説明 (オプション)｡

`defaultExecutionStartToCloseTimeoutSeconds`  
このワークフロータイプに対して Amazon SWF に登録されている `defaultExecutionStartToCloseTimeout` を指定します。このタイプのワークフロー実行を完了するまでの総許容時間です。  
ワークフローのタイムアウトの詳細については、「[Amazon SWF タイムアウトの種類](swf-timeout-types.md)」を参照してください。

`defaultTaskStartToCloseTimeoutSeconds`  
このワークフロータイプに対して Amazon SWF に登録されている `defaultTaskStartToCloseTimeout` を指定します。このタイプのワークフロー実行で 1 つの決定タスクを完了するまでの総許容時間を指定します。  
`defaultTaskStartToCloseTimeout` を指定しない場合は、デフォルトで 30 秒になります。  
ワークフローのタイムアウトの詳細については、「[Amazon SWF タイムアウトの種類](swf-timeout-types.md)」を参照してください。

`defaultTaskList`  
このワークフロータイプの実行で決定タスクに使用するデフォルトのタスクリスト。ここで設定したデフォルト値は、ワークフロー実行の開始時に `StartWorkflowOptions` を使用して上書きできます。  
`defaultTaskList` を指定しない場合は、デフォルトで `USE_WORKER_TASK_LIST` に設定されます。これは、ワークフローの登録を担当するワーカーで使用されているタスクリストを使用することを指定します。

`defaultChildPolicy`  
このタイプの実行が終了した場合に、子ワークフローで使用するポリシーを指定します。デフォルト値は `ABANDON` です。指定できる値は以下のとおりです。  
+ `ABANDON` – 子ワークフロー実行を続行できます
+ `TERMINATE` – 子ワークフロー実行を終了します
+ `REQUEST_CANCEL` – 子ワークフロー実行のキャンセルをリクエストします