@SdkInternalApi
    final DescribeStateMachineForExecutionResult executeDescribeStateMachineForExecution(
            DescribeStateMachineForExecutionRequest describeStateMachineForExecutionRequest) {

        ExecutionContext executionContext = createExecutionContext(describeStateMachineForExecutionRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request<DescribeStateMachineForExecutionRequest> request = null;
        Response<DescribeStateMachineForExecutionResult> response = null;

        try {
            awsRequestMetrics.startEvent(Field.RequestMarshallTime);
            try {
                request = new DescribeStateMachineForExecutionRequestProtocolMarshaller(protocolFactory).marshall(super
                        .beforeMarshalling(describeStateMachineForExecutionRequest));
                // Binds the request metrics to the current request.
                request.setAWSRequestMetrics(awsRequestMetrics);
                request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
                request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
                request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
                request.addHandlerContext(HandlerContextKey.SERVICE_ID, "SFN");
                request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "DescribeStateMachineForExecution");
                request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);

            } finally {
                awsRequestMetrics.endEvent(Field.RequestMarshallTime);
            }

            HttpResponseHandler<AmazonWebServiceResponse<DescribeStateMachineForExecutionResult>> responseHandler = protocolFactory.createResponseHandler(
                    new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
                    new DescribeStateMachineForExecutionResultJsonUnmarshaller());
            response = invoke(request, responseHandler, executionContext);

            return response.getAwsResponse();

        } finally {

            endClientExecution(awsRequestMetrics, request, response);
        }
    }
<p>
Provides information about a state machine's definition, its execution role ARN, and configuration. If a Map Run
dispatched the execution, this action returns the Map Run Amazon Resource Name (ARN) in the response. The state
machine returned is the state machine associated with the Map Run.
</p>
<note>
<p>
This operation is eventually consistent. The results are best effort and may not reflect very recent updates and
changes.
</p>
</note>
<p>
This API action is not supported by <code>EXPRESS</code> state machines.
</p>

@param describeStateMachineForExecutionRequest
@return Result of the DescribeStateMachineForExecution operation returned by the service.
@throws ExecutionDoesNotExistException
        The specified execution does not exist.
@throws InvalidArnException
        The provided Amazon Resource Name (ARN) is not valid.
@throws KmsAccessDeniedException
        Either your KMS key policy or API caller does not have the required permissions.
@throws KmsInvalidStateException
        The KMS key is not in valid state, for example: Disabled or Deleted.
@throws KmsThrottlingException
        Received when KMS returns <code>ThrottlingException</code> for a KMS call that Step Functions makes on
        behalf of the caller.
@sample AWSStepFunctions.DescribeStateMachineForExecution
@see <a href="http://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/DescribeStateMachineForExecution"
     target="_top">AWS API Documentation</a>
aws-java-sdk-stepfunctions/src/main/java/com/amazonaws/services/stepfunctions/AWSStepFunctionsClient.java