All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.simpleworkflow.AmazonSimpleWorkflowClient Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Amazon SWF module holds the client classes that are used for communicating with Amazon Simple Workflow Service

There is a newer version: 1.9.13
Show newest version
/*
 * 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); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy