java.lang.Object
software.amazon.jsii.JsiiObject
software.constructs.Construct
software.amazon.awscdk.services.stepfunctions.State
software.amazon.awscdk.services.stepfunctions.CustomState
All Implemented Interfaces:
IChainable, INextable, software.amazon.jsii.JsiiSerializable, software.constructs.IConstruct, software.constructs.IDependable

@Generated(value="jsii-pacmak/1.104.0 (build e79254c)", date="2024-11-06T23:25:17.531Z") @Stability(Stable) public class CustomState extends State implements IChainable, INextable
State defined by supplying Amazon States Language (ASL) in the state machine.

Example:

 import software.amazon.awscdk.services.dynamodb.*;
 // create a table
 Table table = Table.Builder.create(this, "montable")
         .partitionKey(Attribute.builder()
                 .name("id")
                 .type(AttributeType.STRING)
                 .build())
         .build();
 Pass finalStatus = new Pass(this, "final step");
 // States language JSON to put an item into DynamoDB
 // snippet generated from https://docs.aws.amazon.com/step-functions/latest/dg/tutorial-code-snippet.html#tutorial-code-snippet-1
 Map<String, Object> stateJson = Map.of(
         "Type", "Task",
         "Resource", "arn:aws:states:::dynamodb:putItem",
         "Parameters", Map.of(
                 "TableName", table.getTableName(),
                 "Item", Map.of(
                         "id", Map.of(
                                 "S", "MyEntry"))),
         "ResultPath", null);
 // custom state which represents a task to insert data into DynamoDB
 CustomState custom = CustomState.Builder.create(this, "my custom task")
         .stateJson(stateJson)
         .build();
 // catch errors with addCatch
 Pass errorHandler = new Pass(this, "handle failure");
 custom.addCatch(errorHandler);
 // retry the task if something goes wrong
 custom.addRetry(RetryProps.builder()
         .errors(List.of(Errors.ALL))
         .interval(Duration.seconds(10))
         .maxAttempts(5)
         .build());
 Chain chain = Chain.start(custom).next(finalStatus);
 StateMachine sm = StateMachine.Builder.create(this, "StateMachine")
         .definitionBody(DefinitionBody.fromChainable(chain))
         .timeout(Duration.seconds(30))
         .comment("a super cool state machine")
         .build();
 // don't forget permissions. You need to assign them
 table.grantWriteData(sm);
 
  • Constructor Details

    • CustomState

      protected CustomState(software.amazon.jsii.JsiiObjectRef objRef)
    • CustomState

      protected CustomState(software.amazon.jsii.JsiiObject.InitializationMode initializationMode)
    • CustomState

      @Stability(Stable) public CustomState(@NotNull software.constructs.Construct scope, @NotNull String id, @NotNull CustomStateProps props)
      Parameters:
      scope - This parameter is required.
      id - Descriptive identifier for this chainable. This parameter is required.
      props - This parameter is required.
  • Method Details

    • addCatch

      @Stability(Stable) @NotNull public CustomState addCatch(@NotNull IChainable handler, @Nullable CatchProps props)
      Add a recovery handler for this state.

      When a particular error occurs, execution will continue at the error handler instead of failing the state machine execution.

      Parameters:
      handler - This parameter is required.
      props -
    • addCatch

      @Stability(Stable) @NotNull public CustomState addCatch(@NotNull IChainable handler)
      Add a recovery handler for this state.

      When a particular error occurs, execution will continue at the error handler instead of failing the state machine execution.

      Parameters:
      handler - This parameter is required.
    • addRetry

      @Stability(Stable) @NotNull public CustomState addRetry(@Nullable RetryProps props)
      Add retry configuration for this state.

      This controls if and how the execution will be retried if a particular error occurs.

      Parameters:
      props -
    • addRetry

      @Stability(Stable) @NotNull public CustomState addRetry()
      Add retry configuration for this state.

      This controls if and how the execution will be retried if a particular error occurs.

    • next

      @Stability(Stable) @NotNull public Chain next(@NotNull IChainable next)
      Continue normal execution with the given state.

      Specified by:
      next in interface INextable
      Parameters:
      next - This parameter is required.
      Returns:
      The chain of states built up
    • toStateJson

      @Stability(Stable) @NotNull public com.fasterxml.jackson.databind.node.ObjectNode toStateJson()
      Returns the Amazon States Language object for this state.
      Specified by:
      toStateJson in class State
    • getEndStates

      @Stability(Stable) @NotNull public List<INextable> getEndStates()
      Continuable states of this Chainable.
      Specified by:
      getEndStates in interface IChainable
      Specified by:
      getEndStates in class State