java.lang.Object
software.amazon.jsii.JsiiObject
software.constructs.Construct
software.amazon.awscdk.services.stepfunctions.State
software.amazon.awscdk.services.stepfunctions.Parallel
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-21T06:34:16.717Z") @Stability(Stable) public class Parallel extends State implements INextable
Define a Parallel state in the state machine.

A Parallel state can be used to run one or more state machines at the same time.

The Result of a Parallel state is an array of the results of its substatemachines.

Example:

 import software.amazon.awscdk.Stack;
 import software.constructs.Construct;
 import software.amazon.awscdk.services.stepfunctions.*;
 public class MyJobProps {
     private String jobFlavor;
     public String getJobFlavor() {
         return this.jobFlavor;
     }
     public MyJobProps jobFlavor(String jobFlavor) {
         this.jobFlavor = jobFlavor;
         return this;
     }
 }
 public class MyJob extends StateMachineFragment {
     public final State startState;
     public final INextable[] endStates;
     public MyJob(Construct parent, String id, MyJobProps props) {
         super(parent, id);
         Choice choice = new Choice(this, "Choice").when(Condition.stringEquals("$.branch", "left"), new Pass(this, "Left Branch")).when(Condition.stringEquals("$.branch", "right"), new Pass(this, "Right Branch"));
         // ...
         this.startState = choice;
         this.endStates = choice.afterwards().getEndStates();
     }
 }
 public class MyStack extends Stack {
     public MyStack(Construct scope, String id) {
         super(scope, id);
         // Do 3 different variants of MyJob in parallel
         Parallel parallel = new Parallel(this, "All jobs").branch(new MyJob(this, "Quick", new MyJobProps().jobFlavor("quick")).prefixStates()).branch(new MyJob(this, "Medium", new MyJobProps().jobFlavor("medium")).prefixStates()).branch(new MyJob(this, "Slow", new MyJobProps().jobFlavor("slow")).prefixStates());
         StateMachine.Builder.create(this, "MyStateMachine")
                 .definitionBody(DefinitionBody.fromChainable(parallel))
                 .build();
     }
 }
 
  • Constructor Details

    • Parallel

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

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

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

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

    • addCatch

      @Stability(Stable) @NotNull public Parallel 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 Parallel 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 Parallel 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 Parallel addRetry()
      Add retry configuration for this state.

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

    • bindToGraph

      @Stability(Stable) public void bindToGraph(@NotNull StateGraph graph)
      Overwrites State.bindToGraph. Adds branches to the Parallel state here so that any necessary prefixes are appended first.

      Overrides:
      bindToGraph in class State
      Parameters:
      graph - This parameter is required.
    • branch

      @Stability(Stable) @NotNull public Parallel branch(@NotNull @NotNull IChainable... branches)
      Define one or more branches to run in parallel.

      Parameters:
      branches - This parameter is required.
    • 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()
      Return the Amazon States Language object for this state.
      Specified by:
      toStateJson in class State
    • validateState

      @Stability(Stable) @NotNull protected List<String> validateState()
      Validate this state.
      Overrides:
      validateState 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