pollForActivityTask method
Used by workers to get an ActivityTask from the specified activity
taskList
. This initiates a long poll, where the service holds
the HTTP connection open and responds as soon as a task becomes available.
The maximum time the service holds on to the request before responding is
60 seconds. If no task is available within 60 seconds, the poll returns an
empty result. An empty result, in this context, means that an ActivityTask
is returned, but that the value of taskToken is an empty string. If a task
is returned, the worker should use its type to identify and process it
correctly.
Access Control
You can use IAM policies to control this action's access to Amazon SWF resources as follows:
-
Use a
Resource
element with the domain name to limit the action to only specified domains. -
Use an
Action
element to allow or deny permission to call this action. -
Constrain the
taskList.name
parameter by using aCondition
element with theswf:taskList.name
key to allow the action to access only certain task lists.
cause
parameter is
set to OPERATION_NOT_PERMITTED
. For details and example IAM
policies, see Using
IAM to Manage Access to Amazon SWF Workflows in the Amazon SWF
Developer Guide.
May throw UnknownResourceFault. May throw OperationNotPermittedFault. May throw LimitExceededFault.
Parameter domain
:
The name of the domain that contains the task lists being polled.
Parameter taskList
:
Specifies the task list to poll for activity tasks.
The specified string must not start or end with whitespace. It must not
contain a :
(colon), /
(slash), |
(vertical bar), or any control characters (\u0000-\u001f
|
\u007f-\u009f
). Also, it must not be the literal
string arn
.
Parameter identity
:
Identity of the worker making the request, recorded in the
ActivityTaskStarted
event in the workflow history. This
enables diagnostic tracing when problems arise. The form of this identity
is user defined.
Implementation
Future<ActivityTask> pollForActivityTask({
required String domain,
required TaskList taskList,
String? identity,
}) async {
ArgumentError.checkNotNull(domain, 'domain');
_s.validateStringLength(
'domain',
domain,
1,
256,
isRequired: true,
);
ArgumentError.checkNotNull(taskList, 'taskList');
_s.validateStringLength(
'identity',
identity,
0,
256,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.0',
'X-Amz-Target': 'SimpleWorkflowService.PollForActivityTask'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'domain': domain,
'taskList': taskList,
if (identity != null) 'identity': identity,
},
);
return ActivityTask.fromJson(jsonResponse.body);
}