
com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflowClient Maven / Gradle / Ivy
Show all versions of aws-java-sdk-simpleworkflow Show documentation
/*
* Copyright 2010-2016 Amazon.com, Inc. or its affiliates. All Rights
* Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package com.amazonaws.services.simpleworkflow;
import org.w3c.dom.*;
import java.net.*;
import java.util.*;
import java.util.Map.Entry;
import org.apache.commons.logging.*;
import com.amazonaws.*;
import com.amazonaws.auth.*;
import com.amazonaws.handlers.*;
import com.amazonaws.http.*;
import com.amazonaws.internal.*;
import com.amazonaws.metrics.*;
import com.amazonaws.regions.*;
import com.amazonaws.transform.*;
import com.amazonaws.util.*;
import com.amazonaws.protocol.json.*;
import com.amazonaws.util.AWSRequestMetrics.Field;
import com.amazonaws.annotation.ThreadSafe;
import com.amazonaws.services.simpleworkflow.model.*;
import com.amazonaws.services.simpleworkflow.model.transform.*;
/**
* Client for accessing Amazon SWF. All service calls made using this client are
* blocking, and will not return until the service call completes.
*
* Amazon Simple Workflow Service
*
* The Amazon Simple Workflow Service (Amazon SWF) makes it easy to build
* applications that use Amazon's cloud to coordinate work across distributed
* components. In Amazon SWF, a task represents a logical unit of work
* that is performed by a component of your workflow. Coordinating tasks in a
* workflow involves managing intertask dependencies, scheduling, and
* concurrency in accordance with the logical flow of the application.
*
*
* Amazon SWF gives you full control over implementing tasks and coordinating
* them without worrying about underlying complexities such as tracking their
* progress and maintaining their state.
*
*
* This documentation serves as reference only. For a broader overview of the
* Amazon SWF programming model, see the Amazon SWF
* Developer Guide.
*
*/
@ThreadSafe
public class AmazonSimpleWorkflowClient extends AmazonWebServiceClient
implements AmazonSimpleWorkflow {
/** Provider for AWS credentials. */
private AWSCredentialsProvider awsCredentialsProvider;
private static final Log log = LogFactory
.getLog(AmazonSimpleWorkflow.class);
/** Default signing name for the service. */
private static final String DEFAULT_SIGNING_NAME = "swf";
/** The region metadata service name for computing region endpoints. */
private static final String DEFAULT_ENDPOINT_PREFIX = "swf";
/**
* Client configuration factory providing ClientConfigurations tailored to
* this client
*/
protected static final com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflowClientConfigurationFactory configFactory = new com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflowClientConfigurationFactory();
private final SdkJsonProtocolFactory protocolFactory = new SdkJsonProtocolFactory(
new JsonClientMetadata()
.withProtocolVersion("1.0")
.withSupportsCbor(false)
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("LimitExceededFault")
.withModeledClass(
com.amazonaws.services.simpleworkflow.model.LimitExceededException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("OperationNotPermittedFault")
.withModeledClass(
com.amazonaws.services.simpleworkflow.model.OperationNotPermittedException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("UnknownResourceFault")
.withModeledClass(
com.amazonaws.services.simpleworkflow.model.UnknownResourceException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("DomainAlreadyExistsFault")
.withModeledClass(
com.amazonaws.services.simpleworkflow.model.DomainAlreadyExistsException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode(
"WorkflowExecutionAlreadyStartedFault")
.withModeledClass(
com.amazonaws.services.simpleworkflow.model.WorkflowExecutionAlreadyStartedException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("DefaultUndefinedFault")
.withModeledClass(
com.amazonaws.services.simpleworkflow.model.DefaultUndefinedException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("DomainDeprecatedFault")
.withModeledClass(
com.amazonaws.services.simpleworkflow.model.DomainDeprecatedException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("TypeAlreadyExistsFault")
.withModeledClass(
com.amazonaws.services.simpleworkflow.model.TypeAlreadyExistsException.class))
.addErrorMetadata(
new JsonErrorShapeMetadata()
.withErrorCode("TypeDeprecatedFault")
.withModeledClass(
com.amazonaws.services.simpleworkflow.model.TypeDeprecatedException.class)));
/**
* Constructs a new client to invoke service methods on Amazon SWF. A
* credentials provider chain will be used that searches for credentials in
* this order:
*
* - Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
* - Java System Properties - aws.accessKeyId and aws.secretKey
* - Instance profile credentials delivered through the Amazon EC2
* metadata service
*
*
*
* All service calls made using this new client object are blocking, and
* will not return until the service call completes.
*
* @see DefaultAWSCredentialsProviderChain
*/
public AmazonSimpleWorkflowClient() {
this(new DefaultAWSCredentialsProviderChain(), configFactory
.getConfig());
}
/**
* Constructs a new client to invoke service methods on Amazon SWF. A
* credentials provider chain will be used that searches for credentials in
* this order:
*
* - Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
* - Java System Properties - aws.accessKeyId and aws.secretKey
* - Instance profile credentials delivered through the Amazon EC2
* metadata service
*
*
*
* All service calls made using this new client object are blocking, and
* will not return until the service call completes.
*
* @param clientConfiguration
* The client configuration options controlling how this client
* connects to Amazon SWF (ex: proxy settings, retry counts, etc.).
*
* @see DefaultAWSCredentialsProviderChain
*/
public AmazonSimpleWorkflowClient(ClientConfiguration clientConfiguration) {
this(new DefaultAWSCredentialsProviderChain(), clientConfiguration);
}
/**
* Constructs a new client to invoke service methods on Amazon SWF using the
* specified AWS account credentials.
*
*
* All service calls made using this new client object are blocking, and
* will not return until the service call completes.
*
* @param awsCredentials
* The AWS credentials (access key ID and secret key) to use when
* authenticating with AWS services.
*/
public AmazonSimpleWorkflowClient(AWSCredentials awsCredentials) {
this(awsCredentials, configFactory.getConfig());
}
/**
* Constructs a new client to invoke service methods on Amazon SWF using the
* specified AWS account credentials and client configuration options.
*
*
* All service calls made using this new client object are blocking, and
* will not return until the service call completes.
*
* @param awsCredentials
* The AWS credentials (access key ID and secret key) to use when
* authenticating with AWS services.
* @param clientConfiguration
* The client configuration options controlling how this client
* connects to Amazon SWF (ex: proxy settings, retry counts, etc.).
*/
public AmazonSimpleWorkflowClient(AWSCredentials awsCredentials,
ClientConfiguration clientConfiguration) {
super(clientConfiguration);
this.awsCredentialsProvider = new StaticCredentialsProvider(
awsCredentials);
init();
}
/**
* Constructs a new client to invoke service methods on Amazon SWF using the
* specified AWS account credentials provider.
*
*
* All service calls made using this new client object are blocking, and
* will not return until the service call completes.
*
* @param awsCredentialsProvider
* The AWS credentials provider which will provide credentials to
* authenticate requests with AWS services.
*/
public AmazonSimpleWorkflowClient(
AWSCredentialsProvider awsCredentialsProvider) {
this(awsCredentialsProvider, configFactory.getConfig());
}
/**
* Constructs a new client to invoke service methods on Amazon SWF using the
* specified AWS account credentials provider and client configuration
* options.
*
*
* All service calls made using this new client object are blocking, and
* will not return until the service call completes.
*
* @param awsCredentialsProvider
* The AWS credentials provider which will provide credentials to
* authenticate requests with AWS services.
* @param clientConfiguration
* The client configuration options controlling how this client
* connects to Amazon SWF (ex: proxy settings, retry counts, etc.).
*/
public AmazonSimpleWorkflowClient(
AWSCredentialsProvider awsCredentialsProvider,
ClientConfiguration clientConfiguration) {
this(awsCredentialsProvider, clientConfiguration, null);
}
/**
* Constructs a new client to invoke service methods on Amazon SWF using the
* specified AWS account credentials provider, client configuration options,
* and request metric collector.
*
*
* All service calls made using this new client object are blocking, and
* will not return until the service call completes.
*
* @param awsCredentialsProvider
* The AWS credentials provider which will provide credentials to
* authenticate requests with AWS services.
* @param clientConfiguration
* The client configuration options controlling how this client
* connects to Amazon SWF (ex: proxy settings, retry counts, etc.).
* @param requestMetricCollector
* optional request metric collector
*/
public AmazonSimpleWorkflowClient(
AWSCredentialsProvider awsCredentialsProvider,
ClientConfiguration clientConfiguration,
RequestMetricCollector requestMetricCollector) {
super(clientConfiguration, requestMetricCollector);
this.awsCredentialsProvider = awsCredentialsProvider;
init();
}
private void init() {
setServiceNameIntern(DEFAULT_SIGNING_NAME);
setEndpointPrefix(DEFAULT_ENDPOINT_PREFIX);
// calling this.setEndPoint(...) will also modify the signer accordingly
setEndpoint("swf.us-east-1.amazonaws.com");
HandlerChainFactory chainFactory = new HandlerChainFactory();
requestHandler2s
.addAll(chainFactory
.newRequestHandlerChain("/com/amazonaws/services/simpleworkflow/request.handlers"));
requestHandler2s
.addAll(chainFactory
.newRequestHandler2Chain("/com/amazonaws/services/simpleworkflow/request.handler2s"));
}
/**
*
* Returns the number of closed workflow executions within the given domain
* that meet the specified filtering criteria.
*
* This operation is eventually consistent. The results are best
* effort and may not exactly reflect recent updates and changes.
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* tagFilter.tag
: String constraint. The key is
* swf:tagFilter.tag
.
* typeFilter.name
: String constraint. The key is
* swf:typeFilter.name
.
* typeFilter.version
: String constraint. The key is
* swf:typeFilter.version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param countClosedWorkflowExecutionsRequest
* @return Result of the CountClosedWorkflowExecutions operation returned by
* the service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.CountClosedWorkflowExecutions
*/
@Override
public WorkflowExecutionCount countClosedWorkflowExecutions(
CountClosedWorkflowExecutionsRequest countClosedWorkflowExecutionsRequest) {
ExecutionContext executionContext = createExecutionContext(countClosedWorkflowExecutionsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CountClosedWorkflowExecutionsRequestMarshaller(
protocolFactory)
.marshall(super
.beforeMarshalling(countClosedWorkflowExecutionsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new WorkflowExecutionCountJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns the number of open workflow executions within the given domain
* that meet the specified filtering criteria.
*
* This operation is eventually consistent. The results are best
* effort and may not exactly reflect recent updates and changes.
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* tagFilter.tag
: String constraint. The key is
* swf:tagFilter.tag
.
* typeFilter.name
: String constraint. The key is
* swf:typeFilter.name
.
* typeFilter.version
: String constraint. The key is
* swf:typeFilter.version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param countOpenWorkflowExecutionsRequest
* @return Result of the CountOpenWorkflowExecutions operation returned by
* the service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.CountOpenWorkflowExecutions
*/
@Override
public WorkflowExecutionCount countOpenWorkflowExecutions(
CountOpenWorkflowExecutionsRequest countOpenWorkflowExecutionsRequest) {
ExecutionContext executionContext = createExecutionContext(countOpenWorkflowExecutionsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CountOpenWorkflowExecutionsRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(countOpenWorkflowExecutionsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new WorkflowExecutionCountJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns the estimated number of activity tasks in the specified task
* list. The count returned is an approximation and is not guaranteed to be
* exact. If you specify a task list that no activity task was ever
* scheduled in then 0 will be returned.
*
*
* 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 a
* Condition element with the swf:taskList.name
key to
* allow the action to access only certain task lists.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param countPendingActivityTasksRequest
* @return Result of the CountPendingActivityTasks operation returned by the
* service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.CountPendingActivityTasks
*/
@Override
public PendingTaskCount countPendingActivityTasks(
CountPendingActivityTasksRequest countPendingActivityTasksRequest) {
ExecutionContext executionContext = createExecutionContext(countPendingActivityTasksRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CountPendingActivityTasksRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(countPendingActivityTasksRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new PendingTaskCountJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns the estimated number of decision tasks in the specified task
* list. The count returned is an approximation and is not guaranteed to be
* exact. If you specify a task list that no decision task was ever
* scheduled in then 0 will be returned.
*
*
* 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 a
* Condition element with the swf:taskList.name
key to
* allow the action to access only certain task lists.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param countPendingDecisionTasksRequest
* @return Result of the CountPendingDecisionTasks operation returned by the
* service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.CountPendingDecisionTasks
*/
@Override
public PendingTaskCount countPendingDecisionTasks(
CountPendingDecisionTasksRequest countPendingDecisionTasksRequest) {
ExecutionContext executionContext = createExecutionContext(countPendingDecisionTasksRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new CountPendingDecisionTasksRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(countPendingDecisionTasksRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new PendingTaskCountJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Deprecates the specified activity type. After an activity type has
* been deprecated, you cannot create new tasks of that activity type. Tasks
* of this type that were scheduled before the type was deprecated will
* continue to run.
*
* This operation is eventually consistent. The results are best
* effort and may not exactly reflect recent updates and changes.
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* activityType.name
: String constraint. The key is
* swf:activityType.name
.
* activityType.version
: String constraint. The key is
* swf:activityType.version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param deprecateActivityTypeRequest
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws TypeDeprecatedException
* Returned when the specified activity or workflow type was already
* deprecated.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.DeprecateActivityType
*/
@Override
public void deprecateActivityType(
DeprecateActivityTypeRequest deprecateActivityTypeRequest) {
ExecutionContext executionContext = createExecutionContext(deprecateActivityTypeRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeprecateActivityTypeRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(deprecateActivityTypeRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Deprecates the specified domain. After a domain has been deprecated it
* cannot be used to create new workflow executions or register new types.
* However, you can still use visibility actions on this domain. Deprecating
* a domain also deprecates all activity and workflow types registered in
* the domain. Executions that were started before the domain was deprecated
* will continue to run.
*
* This operation is eventually consistent. The results are best
* effort and may not exactly reflect recent updates and changes.
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param deprecateDomainRequest
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws DomainDeprecatedException
* Returned when the specified domain has been deprecated.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.DeprecateDomain
*/
@Override
public void deprecateDomain(DeprecateDomainRequest deprecateDomainRequest) {
ExecutionContext executionContext = createExecutionContext(deprecateDomainRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeprecateDomainRequestMarshaller(protocolFactory)
.marshall(super
.beforeMarshalling(deprecateDomainRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Deprecates the specified workflow type. After a workflow type has
* been deprecated, you cannot create new executions of that type.
* Executions that were started before the type was deprecated will continue
* to run. A deprecated workflow type may still be used when calling
* visibility actions.
*
* This operation is eventually consistent. The results are best
* effort and may not exactly reflect recent updates and changes.
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* workflowType.name
: String constraint. The key is
* swf:workflowType.name
.
* workflowType.version
: String constraint. The key is
* swf:workflowType.version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param deprecateWorkflowTypeRequest
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws TypeDeprecatedException
* Returned when the specified activity or workflow type was already
* deprecated.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.DeprecateWorkflowType
*/
@Override
public void deprecateWorkflowType(
DeprecateWorkflowTypeRequest deprecateWorkflowTypeRequest) {
ExecutionContext executionContext = createExecutionContext(deprecateWorkflowTypeRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DeprecateWorkflowTypeRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(deprecateWorkflowTypeRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns information about the specified activity type. This includes
* configuration settings provided when the type was registered and other
* general information about the type.
*
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* activityType.name
: String constraint. The key is
* swf:activityType.name
.
* activityType.version
: String constraint. The key is
* swf:activityType.version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param describeActivityTypeRequest
* @return Result of the DescribeActivityType operation returned by the
* service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.DescribeActivityType
*/
@Override
public ActivityTypeDetail describeActivityType(
DescribeActivityTypeRequest describeActivityTypeRequest) {
ExecutionContext executionContext = createExecutionContext(describeActivityTypeRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeActivityTypeRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(describeActivityTypeRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new ActivityTypeDetailJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns information about the specified domain, including description and
* status.
*
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param describeDomainRequest
* @return Result of the DescribeDomain operation returned by the service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.DescribeDomain
*/
@Override
public DomainDetail describeDomain(
DescribeDomainRequest describeDomainRequest) {
ExecutionContext executionContext = createExecutionContext(describeDomainRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeDomainRequestMarshaller(protocolFactory)
.marshall(super
.beforeMarshalling(describeDomainRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new DomainDetailJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns information about the specified workflow execution including its
* type and some statistics.
*
* This operation is eventually consistent. The results are best
* effort and may not exactly reflect recent updates and changes.
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param describeWorkflowExecutionRequest
* @return Result of the DescribeWorkflowExecution operation returned by the
* service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.DescribeWorkflowExecution
*/
@Override
public WorkflowExecutionDetail describeWorkflowExecution(
DescribeWorkflowExecutionRequest describeWorkflowExecutionRequest) {
ExecutionContext executionContext = createExecutionContext(describeWorkflowExecutionRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeWorkflowExecutionRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(describeWorkflowExecutionRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new WorkflowExecutionDetailJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns information about the specified workflow type. This
* includes configuration settings specified when the type was registered
* and other information such as creation date, current status, and so on.
*
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* workflowType.name
: String constraint. The key is
* swf:workflowType.name
.
* workflowType.version
: String constraint. The key is
* swf:workflowType.version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param describeWorkflowTypeRequest
* @return Result of the DescribeWorkflowType operation returned by the
* service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.DescribeWorkflowType
*/
@Override
public WorkflowTypeDetail describeWorkflowType(
DescribeWorkflowTypeRequest describeWorkflowTypeRequest) {
ExecutionContext executionContext = createExecutionContext(describeWorkflowTypeRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new DescribeWorkflowTypeRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(describeWorkflowTypeRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new WorkflowTypeDetailJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns the history of the specified workflow execution. The results may
* be split into multiple pages. To retrieve subsequent pages, make the call
* again using the nextPageToken
returned by the initial call.
*
* This operation is eventually consistent. The results are best
* effort and may not exactly reflect recent updates and changes.
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param getWorkflowExecutionHistoryRequest
* @return Result of the GetWorkflowExecutionHistory operation returned by
* the service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.GetWorkflowExecutionHistory
*/
@Override
public History getWorkflowExecutionHistory(
GetWorkflowExecutionHistoryRequest getWorkflowExecutionHistoryRequest) {
ExecutionContext executionContext = createExecutionContext(getWorkflowExecutionHistoryRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new GetWorkflowExecutionHistoryRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(getWorkflowExecutionHistoryRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new HistoryJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns information about all activities registered in the specified
* domain that match the specified name and registration status. The result
* includes information like creation date, current status of the activity,
* etc. The results may be split into multiple pages. To retrieve subsequent
* pages, make the call again using the nextPageToken
returned
* by the initial call.
*
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param listActivityTypesRequest
* @return Result of the ListActivityTypes operation returned by the
* service.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @sample AmazonSimpleWorkflow.ListActivityTypes
*/
@Override
public ActivityTypeInfos listActivityTypes(
ListActivityTypesRequest listActivityTypesRequest) {
ExecutionContext executionContext = createExecutionContext(listActivityTypesRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListActivityTypesRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(listActivityTypesRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new ActivityTypeInfosJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns a list of closed workflow executions in the specified domain that
* meet the filtering criteria. The results may be split into multiple
* pages. To retrieve subsequent pages, make the call again using the
* nextPageToken returned by the initial call.
*
* This operation is eventually consistent. The results are best
* effort and may not exactly reflect recent updates and changes.
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* tagFilter.tag
: String constraint. The key is
* swf:tagFilter.tag
.
* typeFilter.name
: String constraint. The key is
* swf:typeFilter.name
.
* typeFilter.version
: String constraint. The key is
* swf:typeFilter.version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param listClosedWorkflowExecutionsRequest
* @return Result of the ListClosedWorkflowExecutions operation returned by
* the service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.ListClosedWorkflowExecutions
*/
@Override
public WorkflowExecutionInfos listClosedWorkflowExecutions(
ListClosedWorkflowExecutionsRequest listClosedWorkflowExecutionsRequest) {
ExecutionContext executionContext = createExecutionContext(listClosedWorkflowExecutionsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListClosedWorkflowExecutionsRequestMarshaller(
protocolFactory)
.marshall(super
.beforeMarshalling(listClosedWorkflowExecutionsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new WorkflowExecutionInfosJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns the list of domains registered in the account. The results may be
* split into multiple pages. To retrieve subsequent pages, make the call
* again using the nextPageToken returned by the initial call.
*
* This operation is eventually consistent. The results are best
* effort and may not exactly reflect recent updates and changes.
*
* 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. The element must be set to
* arn:aws:swf::AccountID:domain/*
, where AccountID is
* the account ID, with no dashes.
* - Use an
Action
element to allow or deny permission to
* call this action.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param listDomainsRequest
* @return Result of the ListDomains operation returned by the service.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.ListDomains
*/
@Override
public DomainInfos listDomains(ListDomainsRequest listDomainsRequest) {
ExecutionContext executionContext = createExecutionContext(listDomainsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListDomainsRequestMarshaller(protocolFactory)
.marshall(super.beforeMarshalling(listDomainsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new DomainInfosJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns a list of open workflow executions in the specified domain that
* meet the filtering criteria. The results may be split into multiple
* pages. To retrieve subsequent pages, make the call again using the
* nextPageToken returned by the initial call.
*
* This operation is eventually consistent. The results are best
* effort and may not exactly reflect recent updates and changes.
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* tagFilter.tag
: String constraint. The key is
* swf:tagFilter.tag
.
* typeFilter.name
: String constraint. The key is
* swf:typeFilter.name
.
* typeFilter.version
: String constraint. The key is
* swf:typeFilter.version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param listOpenWorkflowExecutionsRequest
* @return Result of the ListOpenWorkflowExecutions operation returned by
* the service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.ListOpenWorkflowExecutions
*/
@Override
public WorkflowExecutionInfos listOpenWorkflowExecutions(
ListOpenWorkflowExecutionsRequest listOpenWorkflowExecutionsRequest) {
ExecutionContext executionContext = createExecutionContext(listOpenWorkflowExecutionsRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListOpenWorkflowExecutionsRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(listOpenWorkflowExecutionsRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new WorkflowExecutionInfosJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Returns information about workflow types in the specified domain. The
* results may be split into multiple pages that can be retrieved by making
* the call repeatedly.
*
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param listWorkflowTypesRequest
* @return Result of the ListWorkflowTypes operation returned by the
* service.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @sample AmazonSimpleWorkflow.ListWorkflowTypes
*/
@Override
public WorkflowTypeInfos listWorkflowTypes(
ListWorkflowTypesRequest listWorkflowTypesRequest) {
ExecutionContext executionContext = createExecutionContext(listWorkflowTypesRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new ListWorkflowTypesRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(listWorkflowTypesRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new WorkflowTypeInfosJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* 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 will return 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.
*
* Workers should set their client side socket timeout to at
* least 70 seconds (10 seconds higher than the maximum time service may
* hold the poll request).
*
* 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 a
* Condition element with the swf:taskList.name
key to
* allow the action to access only certain task lists.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param pollForActivityTaskRequest
* @return Result of the PollForActivityTask operation returned by the
* service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @throws LimitExceededException
* Returned by any operation if a system imposed limitation has been
* reached. To address this fault you should either clean up unused
* resources or increase the limit by contacting AWS.
* @sample AmazonSimpleWorkflow.PollForActivityTask
*/
@Override
public ActivityTask pollForActivityTask(
PollForActivityTaskRequest pollForActivityTaskRequest) {
ExecutionContext executionContext = createExecutionContext(pollForActivityTaskRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new PollForActivityTaskRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(pollForActivityTaskRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new ActivityTaskJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Used by deciders to get a DecisionTask from the specified decision
* taskList
. A decision task may be returned for any open
* workflow execution that is using the specified task list. The task
* includes a paginated view of the history of the workflow execution. The
* decider should use the workflow type and the history to determine how to
* properly handle the task.
*
*
* This action initiates a long poll, where the service holds the HTTP
* connection open and responds as soon a task becomes available. If no
* decision task is available in the specified task list before the timeout
* of 60 seconds expires, an empty result is returned. An empty result, in
* this context, means that a DecisionTask is returned, but that the value
* of taskToken
is an empty string.
*
* Deciders should set their client-side socket timeout to at
* least 70 seconds (10 seconds higher than the timeout).
* Because the number of workflow history events for a single
* workflow execution might be very large, the result returned might be
* split up across a number of pages. To retrieve subsequent pages, make
* additional calls to PollForDecisionTask
using the
* nextPageToken
returned by the initial call. Note that you do
* not call GetWorkflowExecutionHistory
with this
* nextPageToken
. Instead, call
* PollForDecisionTask
again.
*
* 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 a
* Condition element with the swf:taskList.name
key to
* allow the action to access only certain task lists.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param pollForDecisionTaskRequest
* @return Result of the PollForDecisionTask operation returned by the
* service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @throws LimitExceededException
* Returned by any operation if a system imposed limitation has been
* reached. To address this fault you should either clean up unused
* resources or increase the limit by contacting AWS.
* @sample AmazonSimpleWorkflow.PollForDecisionTask
*/
@Override
public DecisionTask pollForDecisionTask(
PollForDecisionTaskRequest pollForDecisionTaskRequest) {
ExecutionContext executionContext = createExecutionContext(pollForDecisionTaskRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new PollForDecisionTaskRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(pollForDecisionTaskRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new DecisionTaskJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Used by activity workers to report to the service that the
* ActivityTask represented by the specified taskToken
* is still making progress. The worker can also (optionally) specify
* details of the progress, for example percent complete, using the
* details
parameter. This action can also be used by the
* worker as a mechanism to check if cancellation is being requested for the
* activity task. If a cancellation is being attempted for the specified
* task, then the boolean cancelRequested
flag returned by the
* service is set to true
.
*
*
* This action resets the taskHeartbeatTimeout
clock. The
* taskHeartbeatTimeout
is specified in
* RegisterActivityType.
*
*
* This action does not in itself create an event in the workflow execution
* history. However, if the task times out, the workflow execution history
* will contain a ActivityTaskTimedOut
event that contains the
* information from the last heartbeat generated by the activity worker.
*
* The taskStartToCloseTimeout
of an activity type is the
* maximum duration of an activity task, regardless of the number of
* RecordActivityTaskHeartbeat requests received. The
* taskStartToCloseTimeout
is also specified in
* RegisterActivityType. This operation is only useful
* for long-lived activities to report liveliness of the task and to
* determine if a cancellation is being attempted. If the
* cancelRequested
flag returns true
, a
* cancellation is being attempted. If the worker can cancel the activity,
* it should respond with RespondActivityTaskCanceled. Otherwise, it
* should ignore the cancellation request.
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param recordActivityTaskHeartbeatRequest
* @return Result of the RecordActivityTaskHeartbeat operation returned by
* the service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.RecordActivityTaskHeartbeat
*/
@Override
public ActivityTaskStatus recordActivityTaskHeartbeat(
RecordActivityTaskHeartbeatRequest recordActivityTaskHeartbeatRequest) {
ExecutionContext executionContext = createExecutionContext(recordActivityTaskHeartbeatRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RecordActivityTaskHeartbeatRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(recordActivityTaskHeartbeatRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new ActivityTaskStatusJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Registers a new activity type along with its configuration
* settings in the specified domain.
*
* A TypeAlreadyExists
fault is returned if the type
* already exists in the domain. You cannot change any configuration
* settings of the type after its registration, and it must be registered as
* a new version.
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* -
defaultTaskList.name
: String constraint. The key is
* swf:defaultTaskList.name
.
* -
name
: String constraint. The key is
* swf:name
.
* -
version
: String constraint. The key is
* swf:version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param registerActivityTypeRequest
* @throws TypeAlreadyExistsException
* Returned if the type already exists in the specified domain. You
* will get this fault even if the existing type is in deprecated
* status. You can specify another version if the intent is to
* create a new distinct version of the type.
* @throws LimitExceededException
* Returned by any operation if a system imposed limitation has been
* reached. To address this fault you should either clean up unused
* resources or increase the limit by contacting AWS.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.RegisterActivityType
*/
@Override
public void registerActivityType(
RegisterActivityTypeRequest registerActivityTypeRequest) {
ExecutionContext executionContext = createExecutionContext(registerActivityTypeRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RegisterActivityTypeRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(registerActivityTypeRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Registers a new domain.
*
*
* Access Control
*
*
* You can use IAM policies to control this action's access to Amazon SWF
* resources as follows:
*
*
* - You cannot use an IAM policy to control domain access for this
* action. The name of the domain being registered is available as the
* resource of this action.
* - Use an
Action
element to allow or deny permission to
* call this action.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param registerDomainRequest
* @throws DomainAlreadyExistsException
* Returned if the specified domain already exists. You will get
* this fault even if the existing domain is in deprecated status.
* @throws LimitExceededException
* Returned by any operation if a system imposed limitation has been
* reached. To address this fault you should either clean up unused
* resources or increase the limit by contacting AWS.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.RegisterDomain
*/
@Override
public void registerDomain(RegisterDomainRequest registerDomainRequest) {
ExecutionContext executionContext = createExecutionContext(registerDomainRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RegisterDomainRequestMarshaller(protocolFactory)
.marshall(super
.beforeMarshalling(registerDomainRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Registers a new workflow type and its configuration settings in
* the specified domain.
*
*
* The retention period for the workflow history is set by the
* RegisterDomain action.
*
* If the type already exists, then a
* TypeAlreadyExists
fault is returned. You cannot change the
* configuration settings of a workflow type once it is registered and it
* must be registered as a new version.
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* -
defaultTaskList.name
: String constraint. The key is
* swf:defaultTaskList.name
.
* -
name
: String constraint. The key is
* swf:name
.
* -
version
: String constraint. The key is
* swf:version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param registerWorkflowTypeRequest
* @throws TypeAlreadyExistsException
* Returned if the type already exists in the specified domain. You
* will get this fault even if the existing type is in deprecated
* status. You can specify another version if the intent is to
* create a new distinct version of the type.
* @throws LimitExceededException
* Returned by any operation if a system imposed limitation has been
* reached. To address this fault you should either clean up unused
* resources or increase the limit by contacting AWS.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.RegisterWorkflowType
*/
@Override
public void registerWorkflowType(
RegisterWorkflowTypeRequest registerWorkflowTypeRequest) {
ExecutionContext executionContext = createExecutionContext(registerWorkflowTypeRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RegisterWorkflowTypeRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(registerWorkflowTypeRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Records a WorkflowExecutionCancelRequested
event in the
* currently running workflow execution identified by the given domain,
* workflowId, and runId. This logically requests the cancellation of the
* workflow execution as a whole. It is up to the decider to take
* appropriate actions when it receives an execution history with this
* event.
*
* If the runId is not specified, the
* WorkflowExecutionCancelRequested
event is recorded in the
* history of the current open workflow execution with the specified
* workflowId in the domain. Because this action allows the
* workflow to properly clean up and gracefully close, it should be used
* instead of TerminateWorkflowExecution when possible.
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param requestCancelWorkflowExecutionRequest
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.RequestCancelWorkflowExecution
*/
@Override
public void requestCancelWorkflowExecution(
RequestCancelWorkflowExecutionRequest requestCancelWorkflowExecutionRequest) {
ExecutionContext executionContext = createExecutionContext(requestCancelWorkflowExecutionRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RequestCancelWorkflowExecutionRequestMarshaller(
protocolFactory)
.marshall(super
.beforeMarshalling(requestCancelWorkflowExecutionRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Used by workers to tell the service that the ActivityTask
* identified by the taskToken
was successfully canceled.
* Additional details
can be optionally provided using the
* details
argument.
*
*
* These details
(if provided) appear in the
* ActivityTaskCanceled
event added to the workflow history.
*
* Only use this operation if the canceled
flag of a
* RecordActivityTaskHeartbeat request returns true
and
* if the activity can be safely undone or abandoned.
*
* A task is considered open from the time that it is scheduled until it is
* closed. Therefore a task is reported as open while a worker is processing
* it. A task is closed after it has been specified in a call to
* RespondActivityTaskCompleted, RespondActivityTaskCanceled,
* RespondActivityTaskFailed, or the task has timed out.
*
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param respondActivityTaskCanceledRequest
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.RespondActivityTaskCanceled
*/
@Override
public void respondActivityTaskCanceled(
RespondActivityTaskCanceledRequest respondActivityTaskCanceledRequest) {
ExecutionContext executionContext = createExecutionContext(respondActivityTaskCanceledRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RespondActivityTaskCanceledRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(respondActivityTaskCanceledRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Used by workers to tell the service that the ActivityTask
* identified by the taskToken
completed successfully with a
* result
(if provided). The result
appears in the
* ActivityTaskCompleted
event in the workflow history.
*
* If the requested task does not complete successfully, use
* RespondActivityTaskFailed instead. If the worker finds that the
* task is canceled through the canceled
flag returned by
* RecordActivityTaskHeartbeat, it should cancel the task, clean up
* and then call RespondActivityTaskCanceled.
*
* A task is considered open from the time that it is scheduled until it is
* closed. Therefore a task is reported as open while a worker is processing
* it. A task is closed after it has been specified in a call to
* RespondActivityTaskCompleted, RespondActivityTaskCanceled,
* RespondActivityTaskFailed, or the task has timed out.
*
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param respondActivityTaskCompletedRequest
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.RespondActivityTaskCompleted
*/
@Override
public void respondActivityTaskCompleted(
RespondActivityTaskCompletedRequest respondActivityTaskCompletedRequest) {
ExecutionContext executionContext = createExecutionContext(respondActivityTaskCompletedRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RespondActivityTaskCompletedRequestMarshaller(
protocolFactory)
.marshall(super
.beforeMarshalling(respondActivityTaskCompletedRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Used by workers to tell the service that the ActivityTask
* identified by the taskToken
has failed with
* reason
(if specified). The reason
and
* details
appear in the ActivityTaskFailed
event
* added to the workflow history.
*
*
* A task is considered open from the time that it is scheduled until it is
* closed. Therefore a task is reported as open while a worker is processing
* it. A task is closed after it has been specified in a call to
* RespondActivityTaskCompleted, RespondActivityTaskCanceled,
* RespondActivityTaskFailed, or the task has timed out.
*
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param respondActivityTaskFailedRequest
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.RespondActivityTaskFailed
*/
@Override
public void respondActivityTaskFailed(
RespondActivityTaskFailedRequest respondActivityTaskFailedRequest) {
ExecutionContext executionContext = createExecutionContext(respondActivityTaskFailedRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RespondActivityTaskFailedRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(respondActivityTaskFailedRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Used by deciders to tell the service that the DecisionTask
* identified by the taskToken
has successfully completed. The
* decisions
argument specifies the list of decisions made
* while processing the task.
*
*
* A DecisionTaskCompleted
event is added to the workflow
* history. The executionContext
specified is attached to the
* event in the workflow execution history.
*
*
* Access Control
*
*
* If an IAM policy grants permission to use
* RespondDecisionTaskCompleted
, it can express permissions for
* the list of decisions in the decisions
parameter. Each of
* the decisions has one or more parameters, much like a regular API call.
* To allow for policies to be as readable as possible, you can express
* permissions on decisions as if they were actual API calls, including
* applying conditions to some parameters. For more information, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param respondDecisionTaskCompletedRequest
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.RespondDecisionTaskCompleted
*/
@Override
public void respondDecisionTaskCompleted(
RespondDecisionTaskCompletedRequest respondDecisionTaskCompletedRequest) {
ExecutionContext executionContext = createExecutionContext(respondDecisionTaskCompletedRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new RespondDecisionTaskCompletedRequestMarshaller(
protocolFactory)
.marshall(super
.beforeMarshalling(respondDecisionTaskCompletedRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Records a WorkflowExecutionSignaled
event in the workflow
* execution history and creates a decision task for the workflow execution
* identified by the given domain, workflowId and runId. The event is
* recorded with the specified user defined signalName and input (if
* provided).
*
* If a runId is not specified, then the
* WorkflowExecutionSignaled
event is recorded in the history
* of the current open workflow with the matching workflowId in the
* domain. If the specified workflow execution is not open,
* this method fails with UnknownResource
.
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param signalWorkflowExecutionRequest
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.SignalWorkflowExecution
*/
@Override
public void signalWorkflowExecution(
SignalWorkflowExecutionRequest signalWorkflowExecutionRequest) {
ExecutionContext executionContext = createExecutionContext(signalWorkflowExecutionRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new SignalWorkflowExecutionRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(signalWorkflowExecutionRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Starts an execution of the workflow type in the specified domain using
* the provided workflowId
and input data.
*
*
* This action returns the newly started workflow execution.
*
*
* 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 following parameters by using a
Condition
* element with the appropriate keys.
*
* -
tagList.member.0
: The key is
* swf:tagList.member.0
.
* -
tagList.member.1
: The key is
* swf:tagList.member.1
.
* -
tagList.member.2
: The key is
* swf:tagList.member.2
.
* -
tagList.member.3
: The key is
* swf:tagList.member.3
.
* -
tagList.member.4
: The key is
* swf:tagList.member.4
.
* taskList
: String constraint. The key is
* swf:taskList.name
.
* workflowType.name
: String constraint. The key is
* swf:workflowType.name
.
* workflowType.version
: String constraint. The key is
* swf:workflowType.version
.
*
*
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param startWorkflowExecutionRequest
* @return Result of the StartWorkflowExecution operation returned by the
* service.
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws TypeDeprecatedException
* Returned when the specified activity or workflow type was already
* deprecated.
* @throws WorkflowExecutionAlreadyStartedException
* Returned by StartWorkflowExecution when an open execution
* with the same workflowId is already running in the specified
* domain.
* @throws LimitExceededException
* Returned by any operation if a system imposed limitation has been
* reached. To address this fault you should either clean up unused
* resources or increase the limit by contacting AWS.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @throws DefaultUndefinedException
* @sample AmazonSimpleWorkflow.StartWorkflowExecution
*/
@Override
public Run startWorkflowExecution(
StartWorkflowExecutionRequest startWorkflowExecutionRequest) {
ExecutionContext executionContext = createExecutionContext(startWorkflowExecutionRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new StartWorkflowExecutionRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(startWorkflowExecutionRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false),
new RunJsonUnmarshaller());
response = invoke(request, responseHandler, executionContext);
return response.getAwsResponse();
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
*
* Records a WorkflowExecutionTerminated
event and forces
* closure of the workflow execution identified by the given domain, runId,
* and workflowId. The child policy, registered with the workflow type or
* specified when starting this execution, is applied to any open child
* workflow executions of this workflow execution.
*
* If the identified workflow execution was in progress, it is
* terminated immediately. If a runId is not specified,
* then the WorkflowExecutionTerminated
event is recorded in
* the history of the current open workflow with the matching workflowId in
* the domain. You should consider using
* RequestCancelWorkflowExecution action instead because it allows
* the workflow to gracefully close while TerminateWorkflowExecution
* does not.
*
* 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.
* - You cannot use an IAM policy to constrain this action's parameters.
*
*
* If the caller does not have sufficient permissions to invoke the action,
* or the parameter values fall outside the specified constraints, the
* action fails. The associated event attribute's cause parameter
* will be set to OPERATION_NOT_PERMITTED. For details and example IAM
* policies, see Using IAM to Manage Access to Amazon SWF Workflows.
*
*
* @param terminateWorkflowExecutionRequest
* @throws UnknownResourceException
* Returned when the named resource cannot be found with in the
* scope of this operation (region or domain). This could happen if
* the named resource was never created or is no longer available
* for this operation.
* @throws OperationNotPermittedException
* Returned when the caller does not have sufficient permissions to
* invoke the action.
* @sample AmazonSimpleWorkflow.TerminateWorkflowExecution
*/
@Override
public void terminateWorkflowExecution(
TerminateWorkflowExecutionRequest terminateWorkflowExecutionRequest) {
ExecutionContext executionContext = createExecutionContext(terminateWorkflowExecutionRequest);
AWSRequestMetrics awsRequestMetrics = executionContext
.getAwsRequestMetrics();
awsRequestMetrics.startEvent(Field.ClientExecuteTime);
Request request = null;
Response response = null;
try {
awsRequestMetrics.startEvent(Field.RequestMarshallTime);
try {
request = new TerminateWorkflowExecutionRequestMarshaller(
protocolFactory).marshall(super
.beforeMarshalling(terminateWorkflowExecutionRequest));
// Binds the request metrics to the current request.
request.setAWSRequestMetrics(awsRequestMetrics);
} finally {
awsRequestMetrics.endEvent(Field.RequestMarshallTime);
}
HttpResponseHandler> responseHandler = protocolFactory
.createResponseHandler(new JsonOperationMetadata()
.withPayloadJson(true)
.withHasStreamingSuccessResponse(false), null);
invoke(request, responseHandler, executionContext);
} finally {
endClientExecution(awsRequestMetrics, request, response);
}
}
/**
* Returns additional metadata for a previously executed successful,
* request, typically used for debugging issues where a service isn't acting
* as expected. This data isn't considered part of the result data returned
* by an operation, so it's available through this separate, diagnostic
* interface.
*
* Response metadata is only cached for a limited period of time, so if you
* need to access this extra diagnostic information for an executed request,
* you should use this method to retrieve it as soon as possible after
* executing the request.
*
* @param request
* The originally executed request
*
* @return The response metadata for the specified request, or null if none
* is available.
*/
public ResponseMetadata getCachedResponseMetadata(
AmazonWebServiceRequest request) {
return client.getResponseMetadataForRequest(request);
}
/**
* Normal invoke with authentication. Credentials are required and may be
* overriden at the request level.
**/
private Response invoke(
Request request,
HttpResponseHandler> responseHandler,
ExecutionContext executionContext) {
executionContext.setCredentialsProvider(CredentialUtils
.getCredentialsProvider(request.getOriginalRequest(),
awsCredentialsProvider));
return doInvoke(request, responseHandler, executionContext);
}
/**
* Invoke with no authentication. Credentials are not required and any
* credentials set on the client or request will be ignored for this
* operation.
**/
private Response anonymousInvoke(
Request request,
HttpResponseHandler> responseHandler,
ExecutionContext executionContext) {
return doInvoke(request, responseHandler, executionContext);
}
/**
* Invoke the request using the http client. Assumes credentials (or lack
* thereof) have been configured in the ExecutionContext beforehand.
**/
private Response doInvoke(
Request request,
HttpResponseHandler> responseHandler,
ExecutionContext executionContext) {
request.setEndpoint(endpoint);
request.setTimeOffset(timeOffset);
HttpResponseHandler errorResponseHandler = protocolFactory
.createErrorResponseHandler(new JsonErrorResponseMetadata());
return client.execute(request, responseHandler, errorResponseHandler,
executionContext);
}
}