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

software.amazon.awssdk.services.swf.DefaultSwfClient Maven / Gradle / Ivy

/*
 * Copyright 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 software.amazon.awssdk.services.swf;

import java.util.Collections;
import java.util.List;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.annotations.SdkInternalApi;
import software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
import software.amazon.awssdk.core.RequestOverrideConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
import software.amazon.awssdk.core.client.config.SdkClientOption;
import software.amazon.awssdk.core.client.handler.ClientExecutionParams;
import software.amazon.awssdk.core.client.handler.SyncClientHandler;
import software.amazon.awssdk.core.exception.SdkClientException;
import software.amazon.awssdk.core.http.HttpResponseHandler;
import software.amazon.awssdk.core.metrics.CoreMetric;
import software.amazon.awssdk.metrics.MetricCollector;
import software.amazon.awssdk.metrics.MetricPublisher;
import software.amazon.awssdk.metrics.NoOpMetricCollector;
import software.amazon.awssdk.protocols.core.ExceptionMetadata;
import software.amazon.awssdk.protocols.json.AwsJsonProtocol;
import software.amazon.awssdk.protocols.json.AwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.BaseAwsJsonProtocolFactory;
import software.amazon.awssdk.protocols.json.JsonOperationMetadata;
import software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsRequest;
import software.amazon.awssdk.services.swf.model.CountClosedWorkflowExecutionsResponse;
import software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsRequest;
import software.amazon.awssdk.services.swf.model.CountOpenWorkflowExecutionsResponse;
import software.amazon.awssdk.services.swf.model.CountPendingActivityTasksRequest;
import software.amazon.awssdk.services.swf.model.CountPendingActivityTasksResponse;
import software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksRequest;
import software.amazon.awssdk.services.swf.model.CountPendingDecisionTasksResponse;
import software.amazon.awssdk.services.swf.model.DefaultUndefinedException;
import software.amazon.awssdk.services.swf.model.DeprecateActivityTypeRequest;
import software.amazon.awssdk.services.swf.model.DeprecateActivityTypeResponse;
import software.amazon.awssdk.services.swf.model.DeprecateDomainRequest;
import software.amazon.awssdk.services.swf.model.DeprecateDomainResponse;
import software.amazon.awssdk.services.swf.model.DeprecateWorkflowTypeRequest;
import software.amazon.awssdk.services.swf.model.DeprecateWorkflowTypeResponse;
import software.amazon.awssdk.services.swf.model.DescribeActivityTypeRequest;
import software.amazon.awssdk.services.swf.model.DescribeActivityTypeResponse;
import software.amazon.awssdk.services.swf.model.DescribeDomainRequest;
import software.amazon.awssdk.services.swf.model.DescribeDomainResponse;
import software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionRequest;
import software.amazon.awssdk.services.swf.model.DescribeWorkflowExecutionResponse;
import software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeRequest;
import software.amazon.awssdk.services.swf.model.DescribeWorkflowTypeResponse;
import software.amazon.awssdk.services.swf.model.DomainAlreadyExistsException;
import software.amazon.awssdk.services.swf.model.DomainDeprecatedException;
import software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryRequest;
import software.amazon.awssdk.services.swf.model.GetWorkflowExecutionHistoryResponse;
import software.amazon.awssdk.services.swf.model.LimitExceededException;
import software.amazon.awssdk.services.swf.model.ListActivityTypesRequest;
import software.amazon.awssdk.services.swf.model.ListActivityTypesResponse;
import software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsRequest;
import software.amazon.awssdk.services.swf.model.ListClosedWorkflowExecutionsResponse;
import software.amazon.awssdk.services.swf.model.ListDomainsRequest;
import software.amazon.awssdk.services.swf.model.ListDomainsResponse;
import software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsRequest;
import software.amazon.awssdk.services.swf.model.ListOpenWorkflowExecutionsResponse;
import software.amazon.awssdk.services.swf.model.ListTagsForResourceRequest;
import software.amazon.awssdk.services.swf.model.ListTagsForResourceResponse;
import software.amazon.awssdk.services.swf.model.ListWorkflowTypesRequest;
import software.amazon.awssdk.services.swf.model.ListWorkflowTypesResponse;
import software.amazon.awssdk.services.swf.model.OperationNotPermittedException;
import software.amazon.awssdk.services.swf.model.PollForActivityTaskRequest;
import software.amazon.awssdk.services.swf.model.PollForActivityTaskResponse;
import software.amazon.awssdk.services.swf.model.PollForDecisionTaskRequest;
import software.amazon.awssdk.services.swf.model.PollForDecisionTaskResponse;
import software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatRequest;
import software.amazon.awssdk.services.swf.model.RecordActivityTaskHeartbeatResponse;
import software.amazon.awssdk.services.swf.model.RegisterActivityTypeRequest;
import software.amazon.awssdk.services.swf.model.RegisterActivityTypeResponse;
import software.amazon.awssdk.services.swf.model.RegisterDomainRequest;
import software.amazon.awssdk.services.swf.model.RegisterDomainResponse;
import software.amazon.awssdk.services.swf.model.RegisterWorkflowTypeRequest;
import software.amazon.awssdk.services.swf.model.RegisterWorkflowTypeResponse;
import software.amazon.awssdk.services.swf.model.RequestCancelWorkflowExecutionRequest;
import software.amazon.awssdk.services.swf.model.RequestCancelWorkflowExecutionResponse;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskCanceledRequest;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskCanceledResponse;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskCompletedRequest;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskCompletedResponse;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskFailedRequest;
import software.amazon.awssdk.services.swf.model.RespondActivityTaskFailedResponse;
import software.amazon.awssdk.services.swf.model.RespondDecisionTaskCompletedRequest;
import software.amazon.awssdk.services.swf.model.RespondDecisionTaskCompletedResponse;
import software.amazon.awssdk.services.swf.model.SignalWorkflowExecutionRequest;
import software.amazon.awssdk.services.swf.model.SignalWorkflowExecutionResponse;
import software.amazon.awssdk.services.swf.model.StartWorkflowExecutionRequest;
import software.amazon.awssdk.services.swf.model.StartWorkflowExecutionResponse;
import software.amazon.awssdk.services.swf.model.SwfException;
import software.amazon.awssdk.services.swf.model.TagResourceRequest;
import software.amazon.awssdk.services.swf.model.TagResourceResponse;
import software.amazon.awssdk.services.swf.model.TerminateWorkflowExecutionRequest;
import software.amazon.awssdk.services.swf.model.TerminateWorkflowExecutionResponse;
import software.amazon.awssdk.services.swf.model.TooManyTagsException;
import software.amazon.awssdk.services.swf.model.TypeAlreadyExistsException;
import software.amazon.awssdk.services.swf.model.TypeDeprecatedException;
import software.amazon.awssdk.services.swf.model.UndeprecateActivityTypeRequest;
import software.amazon.awssdk.services.swf.model.UndeprecateActivityTypeResponse;
import software.amazon.awssdk.services.swf.model.UndeprecateDomainRequest;
import software.amazon.awssdk.services.swf.model.UndeprecateDomainResponse;
import software.amazon.awssdk.services.swf.model.UndeprecateWorkflowTypeRequest;
import software.amazon.awssdk.services.swf.model.UndeprecateWorkflowTypeResponse;
import software.amazon.awssdk.services.swf.model.UnknownResourceException;
import software.amazon.awssdk.services.swf.model.UntagResourceRequest;
import software.amazon.awssdk.services.swf.model.UntagResourceResponse;
import software.amazon.awssdk.services.swf.model.WorkflowExecutionAlreadyStartedException;
import software.amazon.awssdk.services.swf.transform.CountClosedWorkflowExecutionsRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.CountOpenWorkflowExecutionsRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.CountPendingActivityTasksRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.CountPendingDecisionTasksRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DeprecateActivityTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DeprecateDomainRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DeprecateWorkflowTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DescribeActivityTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DescribeDomainRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DescribeWorkflowExecutionRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.DescribeWorkflowTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.GetWorkflowExecutionHistoryRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListActivityTypesRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListClosedWorkflowExecutionsRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListDomainsRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListOpenWorkflowExecutionsRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListTagsForResourceRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.ListWorkflowTypesRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.PollForActivityTaskRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.PollForDecisionTaskRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RecordActivityTaskHeartbeatRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RegisterActivityTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RegisterDomainRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RegisterWorkflowTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RequestCancelWorkflowExecutionRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RespondActivityTaskCanceledRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RespondActivityTaskCompletedRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RespondActivityTaskFailedRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.RespondDecisionTaskCompletedRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.SignalWorkflowExecutionRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.StartWorkflowExecutionRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.TagResourceRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.TerminateWorkflowExecutionRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.UndeprecateActivityTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.UndeprecateDomainRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.UndeprecateWorkflowTypeRequestMarshaller;
import software.amazon.awssdk.services.swf.transform.UntagResourceRequestMarshaller;
import software.amazon.awssdk.utils.Logger;

/**
 * Internal implementation of {@link SwfClient}.
 *
 * @see SwfClient#builder()
 */
@Generated("software.amazon.awssdk:codegen")
@SdkInternalApi
final class DefaultSwfClient implements SwfClient {
    private static final Logger log = Logger.loggerFor(DefaultSwfClient.class);

    private final SyncClientHandler clientHandler;

    private final AwsJsonProtocolFactory protocolFactory;

    private final SdkClientConfiguration clientConfiguration;

    private final SwfServiceClientConfiguration serviceClientConfiguration;

    protected DefaultSwfClient(SwfServiceClientConfiguration serviceClientConfiguration,
            SdkClientConfiguration clientConfiguration) {
        this.clientHandler = new AwsSyncClientHandler(clientConfiguration);
        this.clientConfiguration = clientConfiguration;
        this.serviceClientConfiguration = serviceClientConfiguration;
        this.protocolFactory = init(AwsJsonProtocolFactory.builder()).build();
    }

    /**
     * 

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.CountClosedWorkflowExecutions */ @Override public CountClosedWorkflowExecutionsResponse countClosedWorkflowExecutions( CountClosedWorkflowExecutionsRequest countClosedWorkflowExecutionsRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CountClosedWorkflowExecutionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, countClosedWorkflowExecutionsRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CountClosedWorkflowExecutions"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("CountClosedWorkflowExecutions").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(countClosedWorkflowExecutionsRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new CountClosedWorkflowExecutionsRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.CountOpenWorkflowExecutions */ @Override public CountOpenWorkflowExecutionsResponse countOpenWorkflowExecutions( CountOpenWorkflowExecutionsRequest countOpenWorkflowExecutionsRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CountOpenWorkflowExecutionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, countOpenWorkflowExecutionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CountOpenWorkflowExecutions"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("CountOpenWorkflowExecutions").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(countOpenWorkflowExecutionsRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new CountOpenWorkflowExecutionsRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Returns the estimated number of activity tasks in the specified task list. The count returned is an approximation * and isn't guaranteed to be exact. If you specify a task list that no activity task was ever scheduled in then * 0 is 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.CountPendingActivityTasks */ @Override public CountPendingActivityTasksResponse countPendingActivityTasks( CountPendingActivityTasksRequest countPendingActivityTasksRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CountPendingActivityTasksResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, countPendingActivityTasksRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CountPendingActivityTasks"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("CountPendingActivityTasks").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(countPendingActivityTasksRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new CountPendingActivityTasksRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Returns the estimated number of decision tasks in the specified task list. The count returned is an approximation * and isn't guaranteed to be exact. If you specify a task list that no decision task was ever scheduled in then * 0 is 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.CountPendingDecisionTasks */ @Override public CountPendingDecisionTasksResponse countPendingDecisionTasks( CountPendingDecisionTasksRequest countPendingDecisionTasksRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, CountPendingDecisionTasksResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, countPendingDecisionTasksRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "CountPendingDecisionTasks"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("CountPendingDecisionTasks").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(countPendingDecisionTasksRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new CountPendingDecisionTasksRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param deprecateActivityTypeRequest * @return Result of the DeprecateActivityType 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 OperationNotPermittedException * Returned when the caller doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.DeprecateActivityType */ @Override public DeprecateActivityTypeResponse deprecateActivityType(DeprecateActivityTypeRequest deprecateActivityTypeRequest) throws UnknownResourceException, TypeDeprecatedException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeprecateActivityTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, deprecateActivityTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeprecateActivityType"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("DeprecateActivityType").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(deprecateActivityTypeRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DeprecateActivityTypeRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 continues 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param deprecateDomainRequest * @return Result of the DeprecateDomain 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 DomainDeprecatedException * Returned when the specified domain has been deprecated. * @throws OperationNotPermittedException * Returned when the caller doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.DeprecateDomain */ @Override public DeprecateDomainResponse deprecateDomain(DeprecateDomainRequest deprecateDomainRequest) throws UnknownResourceException, DomainDeprecatedException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DeprecateDomainResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, deprecateDomainRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeprecateDomain"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("DeprecateDomain").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(deprecateDomainRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DeprecateDomainRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 continues 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param deprecateWorkflowTypeRequest * @return Result of the DeprecateWorkflowType 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 OperationNotPermittedException * Returned when the caller doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.DeprecateWorkflowType */ @Override public DeprecateWorkflowTypeResponse deprecateWorkflowType(DeprecateWorkflowTypeRequest deprecateWorkflowTypeRequest) throws UnknownResourceException, TypeDeprecatedException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DeprecateWorkflowTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, deprecateWorkflowTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DeprecateWorkflowType"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("DeprecateWorkflowType").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(deprecateWorkflowTypeRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DeprecateWorkflowTypeRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.DescribeActivityType */ @Override public DescribeActivityTypeResponse describeActivityType(DescribeActivityTypeRequest describeActivityTypeRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeActivityTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeActivityTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeActivityType"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("DescribeActivityType").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(describeActivityTypeRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DescribeActivityTypeRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.DescribeDomain */ @Override public DescribeDomainResponse describeDomain(DescribeDomainRequest describeDomainRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, DescribeDomainResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeDomainRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeDomain"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("DescribeDomain").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(describeDomainRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DescribeDomainRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.DescribeWorkflowExecution */ @Override public DescribeWorkflowExecutionResponse describeWorkflowExecution( DescribeWorkflowExecutionRequest describeWorkflowExecutionRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeWorkflowExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeWorkflowExecutionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeWorkflowExecution"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("DescribeWorkflowExecution").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(describeWorkflowExecutionRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DescribeWorkflowExecutionRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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, etc. *

*

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.DescribeWorkflowType */ @Override public DescribeWorkflowTypeResponse describeWorkflowType(DescribeWorkflowTypeRequest describeWorkflowTypeRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, DescribeWorkflowTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, describeWorkflowTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "DescribeWorkflowType"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("DescribeWorkflowType").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(describeWorkflowTypeRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new DescribeWorkflowTypeRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.GetWorkflowExecutionHistory */ @Override public GetWorkflowExecutionHistoryResponse getWorkflowExecutionHistory( GetWorkflowExecutionHistoryRequest getWorkflowExecutionHistoryRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, GetWorkflowExecutionHistoryResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, getWorkflowExecutionHistoryRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "GetWorkflowExecutionHistory"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("GetWorkflowExecutionHistory").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(getWorkflowExecutionHistoryRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new GetWorkflowExecutionHistoryRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param listActivityTypesRequest * @return Result of the ListActivityTypes operation returned by the service. * @throws OperationNotPermittedException * Returned when the caller doesn't 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. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.ListActivityTypes */ @Override public ListActivityTypesResponse listActivityTypes(ListActivityTypesRequest listActivityTypesRequest) throws OperationNotPermittedException, UnknownResourceException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListActivityTypesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, listActivityTypesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListActivityTypes"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("ListActivityTypes").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(listActivityTypesRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new ListActivityTypesRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.ListClosedWorkflowExecutions */ @Override public ListClosedWorkflowExecutionsResponse listClosedWorkflowExecutions( ListClosedWorkflowExecutionsRequest listClosedWorkflowExecutionsRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListClosedWorkflowExecutionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, listClosedWorkflowExecutionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListClosedWorkflowExecutions"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("ListClosedWorkflowExecutions").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(listClosedWorkflowExecutionsRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new ListClosedWorkflowExecutionsRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param listDomainsRequest * @return Result of the ListDomains operation returned by the service. * @throws OperationNotPermittedException * Returned when the caller doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.ListDomains */ @Override public ListDomainsResponse listDomains(ListDomainsRequest listDomainsRequest) throws OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListDomainsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, listDomainsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListDomains"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("ListDomains").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(listDomainsRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new ListDomainsRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.ListOpenWorkflowExecutions */ @Override public ListOpenWorkflowExecutionsResponse listOpenWorkflowExecutions( ListOpenWorkflowExecutionsRequest listOpenWorkflowExecutionsRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListOpenWorkflowExecutionsResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, listOpenWorkflowExecutionsRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListOpenWorkflowExecutions"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("ListOpenWorkflowExecutions").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(listOpenWorkflowExecutionsRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new ListOpenWorkflowExecutionsRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* List tags for a given domain. *

* * @param listTagsForResourceRequest * @return Result of the ListTagsForResource 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 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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.ListTagsForResource */ @Override public ListTagsForResourceResponse listTagsForResource(ListTagsForResourceRequest listTagsForResourceRequest) throws UnknownResourceException, LimitExceededException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, ListTagsForResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, listTagsForResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListTagsForResource"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("ListTagsForResource").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(listTagsForResourceRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new ListTagsForResourceRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param listWorkflowTypesRequest * @return Result of the ListWorkflowTypes operation returned by the service. * @throws OperationNotPermittedException * Returned when the caller doesn't 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. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.ListWorkflowTypes */ @Override public ListWorkflowTypesResponse listWorkflowTypes(ListWorkflowTypesRequest listWorkflowTypesRequest) throws OperationNotPermittedException, UnknownResourceException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, ListWorkflowTypesResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, listWorkflowTypesRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "ListWorkflowTypes"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("ListWorkflowTypes").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(listWorkflowTypesRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new ListWorkflowTypesRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Used by workers to get an ActivityTask from the specified activity taskList. This initiates a * long poll, where the service holds the HTTP connection open and responds as soon as a task becomes available. The * maximum time the service holds on to the request before responding is 60 seconds. If no task is available within * 60 seconds, the poll returns an empty result. An empty result, in this context, means that an ActivityTask is * returned, but that the value of taskToken is an empty string. If a task is returned, the worker should use its * type to identify and process it correctly. *

* *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't 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. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.PollForActivityTask */ @Override public PollForActivityTaskResponse pollForActivityTask(PollForActivityTaskRequest pollForActivityTaskRequest) throws UnknownResourceException, OperationNotPermittedException, LimitExceededException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PollForActivityTaskResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, pollForActivityTaskRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PollForActivityTask"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("PollForActivityTask").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(pollForActivityTaskRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new PollForActivityTaskRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't 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. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.PollForDecisionTask */ @Override public PollForDecisionTaskResponse pollForDecisionTask(PollForDecisionTaskRequest pollForDecisionTaskRequest) throws UnknownResourceException, OperationNotPermittedException, LimitExceededException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, PollForDecisionTaskResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, pollForDecisionTaskRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "PollForDecisionTask"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("PollForDecisionTask").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(pollForDecisionTaskRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new PollForDecisionTaskRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 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 doesn't in itself create an event in the workflow execution history. However, if the task times out, * the workflow execution history contains 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.RecordActivityTaskHeartbeat */ @Override public RecordActivityTaskHeartbeatResponse recordActivityTaskHeartbeat( RecordActivityTaskHeartbeatRequest recordActivityTaskHeartbeatRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RecordActivityTaskHeartbeatResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, recordActivityTaskHeartbeatRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RecordActivityTaskHeartbeat"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("RecordActivityTaskHeartbeat").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(recordActivityTaskHeartbeatRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new RecordActivityTaskHeartbeatRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param registerActivityTypeRequest * @return Result of the RegisterActivityType operation returned by the service. * @throws TypeAlreadyExistsException * Returned if the type already exists in the specified domain. You may get this fault if you are * registering a type that is either already registered or deprecated, or if you undeprecate a type that is * currently registered. * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.RegisterActivityType */ @Override public RegisterActivityTypeResponse registerActivityType(RegisterActivityTypeRequest registerActivityTypeRequest) throws TypeAlreadyExistsException, LimitExceededException, UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RegisterActivityTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, registerActivityTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RegisterActivityType"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("RegisterActivityType").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(registerActivityTypeRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new RegisterActivityTypeRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param registerDomainRequest * @return Result of the RegisterDomain operation returned by the service. * @throws DomainAlreadyExistsException * Returned if the domain already exists. You may get this fault if you are registering a domain that is * either already registered or deprecated, or if you undeprecate a domain that is currently registered. * @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 doesn't have sufficient permissions to invoke the action. * @throws TooManyTagsException * You've exceeded the number of tags allowed for a domain. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.RegisterDomain */ @Override public RegisterDomainResponse registerDomain(RegisterDomainRequest registerDomainRequest) throws DomainAlreadyExistsException, LimitExceededException, OperationNotPermittedException, TooManyTagsException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, RegisterDomainResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, registerDomainRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RegisterDomain"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("RegisterDomain").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(registerDomainRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new RegisterDomainRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param registerWorkflowTypeRequest * @return Result of the RegisterWorkflowType operation returned by the service. * @throws TypeAlreadyExistsException * Returned if the type already exists in the specified domain. You may get this fault if you are * registering a type that is either already registered or deprecated, or if you undeprecate a type that is * currently registered. * @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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.RegisterWorkflowType */ @Override public RegisterWorkflowTypeResponse registerWorkflowType(RegisterWorkflowTypeRequest registerWorkflowTypeRequest) throws TypeAlreadyExistsException, LimitExceededException, UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RegisterWorkflowTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, registerWorkflowTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RegisterWorkflowType"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("RegisterWorkflowType").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(registerWorkflowTypeRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new RegisterWorkflowTypeRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 isn't 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param requestCancelWorkflowExecutionRequest * @return Result of the RequestCancelWorkflowExecution 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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.RequestCancelWorkflowExecution */ @Override public RequestCancelWorkflowExecutionResponse requestCancelWorkflowExecution( RequestCancelWorkflowExecutionRequest requestCancelWorkflowExecutionRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RequestCancelWorkflowExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, requestCancelWorkflowExecutionRequest.overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RequestCancelWorkflowExecution"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("RequestCancelWorkflowExecution").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(requestCancelWorkflowExecutionRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new RequestCancelWorkflowExecutionRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Used by workers to tell the service that the ActivityTask identified by the taskToken was * successfully canceled. Additional details can be 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param respondActivityTaskCanceledRequest * @return Result of the RespondActivityTaskCanceled 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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.RespondActivityTaskCanceled */ @Override public RespondActivityTaskCanceledResponse respondActivityTaskCanceled( RespondActivityTaskCanceledRequest respondActivityTaskCanceledRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RespondActivityTaskCanceledResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, respondActivityTaskCanceledRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RespondActivityTaskCanceled"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("RespondActivityTaskCanceled").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(respondActivityTaskCanceledRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new RespondActivityTaskCanceledRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param respondActivityTaskCompletedRequest * @return Result of the RespondActivityTaskCompleted 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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.RespondActivityTaskCompleted */ @Override public RespondActivityTaskCompletedResponse respondActivityTaskCompleted( RespondActivityTaskCompletedRequest respondActivityTaskCompletedRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RespondActivityTaskCompletedResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, respondActivityTaskCompletedRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RespondActivityTaskCompleted"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("RespondActivityTaskCompleted").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(respondActivityTaskCompletedRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new RespondActivityTaskCompletedRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param respondActivityTaskFailedRequest * @return Result of the RespondActivityTaskFailed 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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.RespondActivityTaskFailed */ @Override public RespondActivityTaskFailedResponse respondActivityTaskFailed( RespondActivityTaskFailedRequest respondActivityTaskFailedRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RespondActivityTaskFailedResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, respondActivityTaskFailedRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RespondActivityTaskFailed"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("RespondActivityTaskFailed").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(respondActivityTaskFailedRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new RespondActivityTaskFailedRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 in the Amazon SWF Developer Guide. *

* * @param respondDecisionTaskCompletedRequest * Input data for a TaskCompleted response to a decision task. * @return Result of the RespondDecisionTaskCompleted 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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.RespondDecisionTaskCompleted */ @Override public RespondDecisionTaskCompletedResponse respondDecisionTaskCompleted( RespondDecisionTaskCompletedRequest respondDecisionTaskCompletedRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, RespondDecisionTaskCompletedResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, respondDecisionTaskCompletedRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "RespondDecisionTaskCompleted"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("RespondDecisionTaskCompleted").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(respondDecisionTaskCompletedRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new RespondDecisionTaskCompletedRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 isn't 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 isn't 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param signalWorkflowExecutionRequest * @return Result of the SignalWorkflowExecution 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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.SignalWorkflowExecution */ @Override public SignalWorkflowExecutionResponse signalWorkflowExecution(SignalWorkflowExecutionRequest signalWorkflowExecutionRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, SignalWorkflowExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, signalWorkflowExecutionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "SignalWorkflowExecution"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("SignalWorkflowExecution").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(signalWorkflowExecutionRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new SignalWorkflowExecutionRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @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 doesn't have sufficient permissions to invoke the action. * @throws DefaultUndefinedException * The StartWorkflowExecution API action was called without the required parameters set.

*

* Some workflow execution parameters, such as the decision taskList, must be set to start the * execution. However, these parameters might have been set as defaults when the workflow type was * registered. In this case, you can omit these parameters from the StartWorkflowExecution call * and Amazon SWF uses the values defined in the workflow type. *

* *

* If these parameters aren't set and no default parameters were defined in the workflow type, this error is * displayed. *

* @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.StartWorkflowExecution */ @Override public StartWorkflowExecutionResponse startWorkflowExecution(StartWorkflowExecutionRequest startWorkflowExecutionRequest) throws UnknownResourceException, TypeDeprecatedException, WorkflowExecutionAlreadyStartedException, LimitExceededException, OperationNotPermittedException, DefaultUndefinedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, StartWorkflowExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, startWorkflowExecutionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "StartWorkflowExecution"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("StartWorkflowExecution").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(startWorkflowExecutionRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new StartWorkflowExecutionRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Add a tag to a Amazon SWF domain. *

* *

* Amazon SWF supports a maximum of 50 tags per resource. *

*
* * @param tagResourceRequest * @return Result of the TagResource 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 TooManyTagsException * You've exceeded the number of tags allowed for a 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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.TagResource */ @Override public TagResourceResponse tagResource(TagResourceRequest tagResourceRequest) throws UnknownResourceException, TooManyTagsException, LimitExceededException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, TagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, tagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TagResource"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("TagResource").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(tagResourceRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new TagResourceRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* 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 isn't 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 doesn't. *

*
*

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param terminateWorkflowExecutionRequest * @return Result of the TerminateWorkflowExecution 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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.TerminateWorkflowExecution */ @Override public TerminateWorkflowExecutionResponse terminateWorkflowExecution( TerminateWorkflowExecutionRequest terminateWorkflowExecutionRequest) throws UnknownResourceException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, TerminateWorkflowExecutionResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, terminateWorkflowExecutionRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "TerminateWorkflowExecution"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("TerminateWorkflowExecution").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(terminateWorkflowExecutionRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new TerminateWorkflowExecutionRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Undeprecates a previously deprecated activity type. After an activity type has been undeprecated, you can * create new tasks of that activity type. *

* *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param undeprecateActivityTypeRequest * @return Result of the UndeprecateActivityType 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 TypeAlreadyExistsException * Returned if the type already exists in the specified domain. You may get this fault if you are * registering a type that is either already registered or deprecated, or if you undeprecate a type that is * currently registered. * @throws OperationNotPermittedException * Returned when the caller doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.UndeprecateActivityType */ @Override public UndeprecateActivityTypeResponse undeprecateActivityType(UndeprecateActivityTypeRequest undeprecateActivityTypeRequest) throws UnknownResourceException, TypeAlreadyExistsException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UndeprecateActivityTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, undeprecateActivityTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UndeprecateActivityType"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("UndeprecateActivityType").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(undeprecateActivityTypeRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new UndeprecateActivityTypeRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Undeprecates a previously deprecated domain. After a domain has been undeprecated it can be used to create new * workflow executions or register new types. *

* *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param undeprecateDomainRequest * @return Result of the UndeprecateDomain 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 DomainAlreadyExistsException * Returned if the domain already exists. You may get this fault if you are registering a domain that is * either already registered or deprecated, or if you undeprecate a domain that is currently registered. * @throws OperationNotPermittedException * Returned when the caller doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.UndeprecateDomain */ @Override public UndeprecateDomainResponse undeprecateDomain(UndeprecateDomainRequest undeprecateDomainRequest) throws UnknownResourceException, DomainAlreadyExistsException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UndeprecateDomainResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, undeprecateDomainRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UndeprecateDomain"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("UndeprecateDomain").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(undeprecateDomainRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new UndeprecateDomainRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Undeprecates a previously deprecated workflow type. After a workflow type has been undeprecated, you can * create new executions of that type. *

* *

* 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 doesn't 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 is set to * OPERATION_NOT_PERMITTED. For details and example IAM policies, see Using IAM to Manage Access to * Amazon SWF Workflows in the Amazon SWF Developer Guide. *

* * @param undeprecateWorkflowTypeRequest * @return Result of the UndeprecateWorkflowType 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 TypeAlreadyExistsException * Returned if the type already exists in the specified domain. You may get this fault if you are * registering a type that is either already registered or deprecated, or if you undeprecate a type that is * currently registered. * @throws OperationNotPermittedException * Returned when the caller doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.UndeprecateWorkflowType */ @Override public UndeprecateWorkflowTypeResponse undeprecateWorkflowType(UndeprecateWorkflowTypeRequest undeprecateWorkflowTypeRequest) throws UnknownResourceException, TypeAlreadyExistsException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler( operationMetadata, UndeprecateWorkflowTypeResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, undeprecateWorkflowTypeRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UndeprecateWorkflowType"); return clientHandler .execute(new ClientExecutionParams() .withOperationName("UndeprecateWorkflowType").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(undeprecateWorkflowTypeRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new UndeprecateWorkflowTypeRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } /** *

* Remove a tag from a Amazon SWF domain. *

* * @param untagResourceRequest * @return Result of the UntagResource 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 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 doesn't have sufficient permissions to invoke the action. * @throws SdkException * Base class for all exceptions that can be thrown by the SDK (both service and client). Can be used for * catch all scenarios. * @throws SdkClientException * If any client side error occurs such as an IO related failure, failure to get credentials, etc. * @throws SwfException * Base class for all service exceptions. Unknown exceptions will be thrown as an instance of this type. * @sample SwfClient.UntagResource */ @Override public UntagResourceResponse untagResource(UntagResourceRequest untagResourceRequest) throws UnknownResourceException, LimitExceededException, OperationNotPermittedException, AwsServiceException, SdkClientException, SwfException { JsonOperationMetadata operationMetadata = JsonOperationMetadata.builder().hasStreamingSuccessResponse(false) .isPayloadJson(true).build(); HttpResponseHandler responseHandler = protocolFactory.createResponseHandler(operationMetadata, UntagResourceResponse::builder); HttpResponseHandler errorResponseHandler = createErrorResponseHandler(protocolFactory, operationMetadata); List metricPublishers = resolveMetricPublishers(clientConfiguration, untagResourceRequest .overrideConfiguration().orElse(null)); MetricCollector apiCallMetricCollector = metricPublishers.isEmpty() ? NoOpMetricCollector.create() : MetricCollector .create("ApiCall"); try { apiCallMetricCollector.reportMetric(CoreMetric.SERVICE_ID, "SWF"); apiCallMetricCollector.reportMetric(CoreMetric.OPERATION_NAME, "UntagResource"); return clientHandler.execute(new ClientExecutionParams() .withOperationName("UntagResource").withResponseHandler(responseHandler) .withErrorResponseHandler(errorResponseHandler).withInput(untagResourceRequest) .withMetricCollector(apiCallMetricCollector) .withMarshaller(new UntagResourceRequestMarshaller(protocolFactory))); } finally { metricPublishers.forEach(p -> p.publish(apiCallMetricCollector.collect())); } } @Override public final String serviceName() { return SERVICE_NAME; } private static List resolveMetricPublishers(SdkClientConfiguration clientConfiguration, RequestOverrideConfiguration requestOverrideConfiguration) { List publishers = null; if (requestOverrideConfiguration != null) { publishers = requestOverrideConfiguration.metricPublishers(); } if (publishers == null || publishers.isEmpty()) { publishers = clientConfiguration.option(SdkClientOption.METRIC_PUBLISHERS); } if (publishers == null) { publishers = Collections.emptyList(); } return publishers; } private HttpResponseHandler createErrorResponseHandler(BaseAwsJsonProtocolFactory protocolFactory, JsonOperationMetadata operationMetadata) { return protocolFactory.createErrorResponseHandler(operationMetadata); } private > T init(T builder) { return builder .clientConfiguration(clientConfiguration) .defaultServiceExceptionSupplier(SwfException::builder) .protocol(AwsJsonProtocol.AWS_JSON) .protocolVersion("1.0") .registerModeledException( ExceptionMetadata.builder().errorCode("TypeAlreadyExistsFault") .exceptionBuilderSupplier(TypeAlreadyExistsException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("TypeDeprecatedFault") .exceptionBuilderSupplier(TypeDeprecatedException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("LimitExceededFault") .exceptionBuilderSupplier(LimitExceededException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("DomainDeprecatedFault") .exceptionBuilderSupplier(DomainDeprecatedException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("DefaultUndefinedFault") .exceptionBuilderSupplier(DefaultUndefinedException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("DomainAlreadyExistsFault") .exceptionBuilderSupplier(DomainAlreadyExistsException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("OperationNotPermittedFault") .exceptionBuilderSupplier(OperationNotPermittedException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("WorkflowExecutionAlreadyStartedFault") .exceptionBuilderSupplier(WorkflowExecutionAlreadyStartedException::builder).httpStatusCode(400) .build()) .registerModeledException( ExceptionMetadata.builder().errorCode("TooManyTagsFault") .exceptionBuilderSupplier(TooManyTagsException::builder).httpStatusCode(400).build()) .registerModeledException( ExceptionMetadata.builder().errorCode("UnknownResourceFault") .exceptionBuilderSupplier(UnknownResourceException::builder).httpStatusCode(400).build()); } @Override public final SwfServiceClientConfiguration serviceClientConfiguration() { return this.serviceClientConfiguration; } @Override public void close() { clientHandler.close(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy