# reactor v1.0.7 - Table of Contents > An asynchronous, graph-based execution engine ## GUIDES - [README](readme.md) - Tutorials - [Your First Reactor](01-getting-started.md) - [Error Handling with Compensation and Undo](02-error-handling.md) - [Building Async Workflows](03-async-workflows.md) - [Building Complex Workflows with Composition](04-composition.md) - [Building Iterative Workflows with Recursive Execution](05-recursive-execution.md) - [Reactor Cheatsheet](reactor-cheatsheet.md) - How-to Guides - [How to Build a Payment Processing Workflow](payment-processing.md) - [How to Build Data Processing Pipelines](data-pipelines.md) - [How to Orchestrate HTTP APIs with Reactor](api-orchestration.md) - [How to Test Reactors and Steps](testing-strategies.md) - [How to Debug Reactor Workflows](debugging-workflows.md) - [How to Optimize Reactor Performance](performance-optimization.md) - Reference - [Reactor](dsl-reactor.md) - [Reactor Glossary](glossary.md) - Explanation - [Core Reactor Concepts](concepts.md) - [Reactor Architecture](architecture.md) - [Design Decisions](design-decisions.md) - [Reactor in the Elixir Ecosystem](ecosystem.md) ## Modules - [Reactor](Reactor.md): Reactor is a dynamic, concurrent, dependency resolving saga orchestrator. - Dsl - [Reactor.Dsl.Argument](Reactor.Dsl.Argument.md): The struct used to store `argument` DSL entities. - [Reactor.Dsl.Around](Reactor.Dsl.Around.md): The `around` DSL entity struct. - [Reactor.Dsl.Build](Reactor.Dsl.Build.md): A protocol which DSL entities must implement. - [Reactor.Dsl.Collect](Reactor.Dsl.Collect.md): The struct used to store collect DSL entities. - [Reactor.Dsl.Compose](Reactor.Dsl.Compose.md): The `compose` DSL entity struct. - [Reactor.Dsl.Debug](Reactor.Dsl.Debug.md): The `debug` DSL entity struct. - [Reactor.Dsl.Flunk](Reactor.Dsl.Flunk.md): The struct used to store flunk DSL entities. - [Reactor.Dsl.Group](Reactor.Dsl.Group.md): The `group` DSL entity struct. - [Reactor.Dsl.Guard](Reactor.Dsl.Guard.md): A struct used to store the `guard` DSL entity. - [Reactor.Dsl.Info](Reactor.Dsl.Info.md): Introspection for the Reactor DSL. - [Reactor.Dsl.Input](Reactor.Dsl.Input.md): The struct used to store input DSL entities. - [Reactor.Dsl.Map](Reactor.Dsl.Map.md): The `map` DSL entity struct. - [Reactor.Dsl.Middleware](Reactor.Dsl.Middleware.md): The `middleware` DSL entity struct. - [Reactor.Dsl.Recurse](Reactor.Dsl.Recurse.md): The `recurse` DSL entity struct. - [Reactor.Dsl.Step](Reactor.Dsl.Step.md): The struct used to store step DSL entities. - [Reactor.Dsl.Switch](Reactor.Dsl.Switch.md): The `switch` DSL entity struct. - [Reactor.Dsl.Switch.Default](Reactor.Dsl.Switch.Default.md): The `default` DSL entity struct. - [Reactor.Dsl.Switch.Match](Reactor.Dsl.Switch.Match.md): The `matches?` DSL entity struct. - [Reactor.Dsl.Template](Reactor.Dsl.Template.md): The `template` DSL entity struct. - [Reactor.Dsl.Verifier](Reactor.Dsl.Verifier.md): Runs `Reactor.Dsl.Build.verify/2` for all the entities in the reactor. - [Reactor.Dsl.WaitFor](Reactor.Dsl.WaitFor.md): The struct used to store `wait_for` DSL entities. - [Reactor.Dsl.Where](Reactor.Dsl.Where.md): A struct used to store the `where` DSL entity. - Steps - [Reactor.Step](Reactor.Step.md): The Step behaviour and struct. - [Reactor.Step.AnonFn](Reactor.Step.AnonFn.md): The built-in step for executing in-line DSL anonymous functions. - [Reactor.Step.AnonFn.Mermaid](Reactor.Step.AnonFn.Mermaid.md): Mermaid rendering for `AnonFn` steps. - [Reactor.Step.Around](Reactor.Step.Around.md): Wrap the execution of a number of steps in a function. - [Reactor.Step.Around.Mermaid](Reactor.Step.Around.Mermaid.md): Mermaid rendering for `around` steps. - [Reactor.Step.Compose](Reactor.Step.Compose.md): A built-in step which can embed one reactor inside another. - [Reactor.Step.Compose.Mermaid](Reactor.Step.Compose.Mermaid.md): Mermaid rendering for `compose` steps. - [Reactor.Step.Debug](Reactor.Step.Debug.md): A very simple step which sends debug information to `Logger`. - [Reactor.Step.Fail](Reactor.Step.Fail.md): A very simple step which immediately returns an error. - [Reactor.Step.Group](Reactor.Step.Group.md): Wrap the execution of a number of steps with before/after functions. - [Reactor.Step.Group.Mermaid](Reactor.Step.Group.Mermaid.md): Mermaid rendering for `group` steps. - [Reactor.Step.Map](Reactor.Step.Map.md): Given an iterable input run the provided steps for each element and collect the results into a new value. - [Reactor.Step.Map.Mermaid](Reactor.Step.Map.Mermaid.md): Mermaid rendering for `map` steps. - [Reactor.Step.Recurse](Reactor.Step.Recurse.md): A built-in step which can recursively execute a reactor. - [Reactor.Step.Recurse.Mermaid](Reactor.Step.Recurse.Mermaid.md): Mermaid rendering for `compose` steps. - [Reactor.Step.ReturnAllArguments](Reactor.Step.ReturnAllArguments.md): A very simple step which simply returns all it's arguments unchanged. - [Reactor.Step.ReturnArgument](Reactor.Step.ReturnArgument.md): A very simple step which simply returns the named argument, if provided. - [Reactor.Step.Switch](Reactor.Step.Switch.md): Conditionally decide which steps should be run at runtime. - [Reactor.Step.Switch.Mermaid](Reactor.Step.Switch.Mermaid.md): Mermaid rendering for `switch` steps. - [Reactor.Step.Template](Reactor.Step.Template.md): A step which renders an `EEx` template using it's arguments as the assigns. - [Reactor.Step.Transform](Reactor.Step.Transform.md): The built-in step for executing input and argument transformations. - [Reactor.Step.Transform.Mermaid](Reactor.Step.Transform.Mermaid.md): Mermaid rendering for transform steps. - [Reactor.Step.TransformAll](Reactor.Step.TransformAll.md): A built-in step which applies a transformation function to all it's arguments. - Middleware - [Reactor.Middleware](Reactor.Middleware.md): The Middleware behaviour. - [Reactor.Middleware.Telemetry](Reactor.Middleware.Telemetry.md): A Reactor middleware that emits telemetry events. - Errors - [Reactor.Error](Reactor.Error.md): Uses `splode` to manage various classes of error. - [Reactor.Error.Internal](Reactor.Error.Internal.md): The [Splode error class](e:splode:get-started-with-splode.html#error-classes) for Reactor-caused errors. - [Reactor.Error.Internal.ComposeError](Reactor.Error.Internal.ComposeError.md): This error is returned when two Reactors cannot be composed together. - [Reactor.Error.Internal.MissingReturnResultError](Reactor.Error.Internal.MissingReturnResultError.md): This error is returned when the Reactor's return name doesn't match any of the known step results. - [Reactor.Error.Internal.PlanError](Reactor.Error.Internal.PlanError.md): This error is returned when the step graph cannot be built. - [Reactor.Error.Internal.UnreachableError](Reactor.Error.Internal.UnreachableError.md): An error that should never happen. - [Reactor.Error.Invalid](Reactor.Error.Invalid.md): The [Splode error class](e:splode:get-started-with-splode.html#error-classes) for user-caused errors. - [Reactor.Error.Invalid.ArgumentSubpathError](Reactor.Error.Invalid.ArgumentSubpathError.md): This error is returned when an argument cannot have a subpath applied to it. - [Reactor.Error.Invalid.CompensateStepError](Reactor.Error.Invalid.CompensateStepError.md): This error is returned when an error occurs during step compensation. - [Reactor.Error.Invalid.ForcedFailureError](Reactor.Error.Invalid.ForcedFailureError.md): This error is returned when the `flunk` DSL entity or the `Reactor.Step.Fail` step are called. - [Reactor.Error.Invalid.InvalidResultError](Reactor.Error.Invalid.InvalidResultError.md): This error is returned when a step returns an invalid result. - [Reactor.Error.Invalid.MissingArgumentError](Reactor.Error.Invalid.MissingArgumentError.md): This error is returned when an expected argument is not passed to a step. - [Reactor.Error.Invalid.MissingInputError](Reactor.Error.Invalid.MissingInputError.md): Error raised when a required Reactor input is missing. - [Reactor.Error.Invalid.MissingResultError](Reactor.Error.Invalid.MissingResultError.md): This error is returned when a step attempts to consume an intermediate result which is not present in the Reactor state. - [Reactor.Error.Invalid.RetriesExceededError](Reactor.Error.Invalid.RetriesExceededError.md): This error is returned when a step attempts to retry more times that is allowed. - [Reactor.Error.Invalid.RunStepError](Reactor.Error.Invalid.RunStepError.md): This error is returned when an error occurs during step execution. - [Reactor.Error.Invalid.TransformError](Reactor.Error.Invalid.TransformError.md): An error which occurs when building and running transforms. - [Reactor.Error.Invalid.UndoRetriesExceededError](Reactor.Error.Invalid.UndoRetriesExceededError.md): An error used when a step runs out of retry events and no other error is thrown. - [Reactor.Error.Invalid.UndoStepError](Reactor.Error.Invalid.UndoStepError.md): This error is returned when an error occurs when attempting to undo step execution. - [Reactor.Error.Unknown](Reactor.Error.Unknown.md): The [Splode error class](e:splode:get-started-with-splode.html#error-classes) for unknown errors. - [Reactor.Error.Unknown.UnknownError](Reactor.Error.Unknown.UnknownError.md): An error used to wrap unknown errors. - [Reactor.Error.Validation](Reactor.Error.Validation.md): The [Splode error class](e:splode:get-started-with-splode.html#error-classes) for validation errors. - [Reactor.Error.Validation.MissingReturnError](Reactor.Error.Validation.MissingReturnError.md): An error returned when a Reactor cannot be validated because of a missing return value. - [Reactor.Error.Validation.StateError](Reactor.Error.Validation.StateError.md): An error returned when a Reactor is in an unexpected state. - Builder - [Reactor.Builder](Reactor.Builder.md): Build a new Reactor programmatically. - [Reactor.Builder.Compose](Reactor.Builder.Compose.md): Handle composition of Reactors for the builder. - [Reactor.Builder.Input](Reactor.Builder.Input.md): Handle adding inputs to Reactors for the builder. - [Reactor.Builder.Recurse](Reactor.Builder.Recurse.md): Handle recursive execution of Reactors for the builder. - [Reactor.Builder.Step](Reactor.Builder.Step.md): Handle building and adding steps to Reactors for the builder. - Internals - [Reactor.Argument](Reactor.Argument.md): A step argument. - [Reactor.Argument.Build](Reactor.Argument.Build.md): A protocol which can be used to convert something into an argument. - [Reactor.Executor](Reactor.Executor.md): The Reactor executor. - [Reactor.Executor.Async](Reactor.Executor.Async.md): Handle the asynchronous execution of a batch of steps, along with any mutations to the reactor or execution state. - [Reactor.Executor.Backoff](Reactor.Executor.Backoff.md): A placeholder graph vertex for steps which are waiting for their backoff to expire. - [Reactor.Executor.ConcurrencyTracker](Reactor.Executor.ConcurrencyTracker.md): Manage shared concurrency pools for multiple Reactors. - [Reactor.Executor.Hooks](Reactor.Executor.Hooks.md): Handles the execution of reactor middleware hooks. - [Reactor.Executor.Init](Reactor.Executor.Init.md): Handle argument checking and state setup for a Reactor run. - [Reactor.Executor.State](Reactor.Executor.State.md): Contains the reactor execution state. - [Reactor.Executor.StepRunner](Reactor.Executor.StepRunner.md): Run an individual step, including compensation if possible. - [Reactor.Executor.Sync](Reactor.Executor.Sync.md): Handle the synchronous execution of a single step, along with any mutations to the reactor or execution state. - [Reactor.Guard](Reactor.Guard.md): A Reactor guard. - [Reactor.Guard.Build](Reactor.Guard.Build.md): A protocol which can be used to convert something into a guard. - [Reactor.Info](Reactor.Info.md): Introspection for the Reactor DSL. - [Reactor.Input](Reactor.Input.md): Reactor's internal representation for inputs. - [Reactor.Mermaid](Reactor.Mermaid.md): Converts Reactors and their related entities into a Mermaid diagram. - [Reactor.Mermaid.Node](Reactor.Mermaid.Node.md): A node in the mermaid graph - [Reactor.Mermaid.Utils](Reactor.Mermaid.Utils.md): Utilities for generating Mermaid. - [Reactor.Planner](Reactor.Planner.md): Build an execution plan for a Reactor. - [Reactor.Template](Reactor.Template.md): Templates used to refer to some sort of computed value. - [Reactor.Template.Element](Reactor.Template.Element.md): The `element` template. - [Reactor.Template.Input](Reactor.Template.Input.md): The `input` template. - [Reactor.Template.Result](Reactor.Template.Result.md): The `result` template. - [Reactor.Template.Value](Reactor.Template.Value.md): A statically `value` template.