View Source Ash.Flow.Dsl (ash v2.0.0-rc.13)

The built in flow DSL.

dsl-documentation

DSL Documentation

index

Index

  • flow
    • argument
  • steps
    • map
      • transaction
        • create
        • debug
        • update
        • destroy
        • read
        • run_flow
        • custom
      • create
      • debug
      • update
      • destroy
      • read
      • run_flow
      • custom
    • transaction
      • map
        • create
        • debug
        • update
        • destroy
        • read
        • run_flow
        • custom
      • create
      • debug
      • update
      • destroy
      • read
      • run_flow
      • custom
    • create
    • debug
    • update
    • destroy
    • read
    • run_flow
    • custom

docs

Docs

flow

flow

Details about the flow itself, like description and the successful return type.


  • :api - An api to use by default when calling actions

  • :description - A description of the flow

  • :trace_name - The name to use when creating traces. Defaults to the short name.

  • :short_name - A short name to use for the flow. Defaults to the last to parts of the module name, underscored.

  • :returns - The step or step that should constitute the return value.

argument

argument

An argument to be passed into the flow

Examples:

argument :params, :map do
  default %{}
end
argument :retries, :integer do
  allow_nil? false
end
  • :name - Required. The name to use for the argument

  • :type - Required. The type of the argument

  • :default - A default value to use for the argument if not provided

  • :allow_nil? - Whether or not the argument value may be nil The default value is true.

  • :constraints - Constraints to provide to the type when casting the value. See the type's documentation for more information. The default value is [].

steps

steps

The steps to run.

Examples:

steps do
  # invokes a create action
  create :create_post, MyApp.Post, :create
end

Imports:


map

map

Runs a set of steps for each item in a provided list.

Examples:

map :create_users, range(1, arg(:count)) do
  output :create_user

  create :create_user, Org, :create do
    input %{
      first_name: {Faker.Person, :first_name, []},
      last_name: {Faker.Person, :last_name, []}
    }
  end
end
  • :over - The value to be iterated over. Will be available inside the map step as element(:map_step_name)

  • :output - Which step to use when constructing the output list. Defaults to the last step.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

transaction

Runs a set of steps in a transaction.

Examples:

transaction :create_users do
  create :create_user, User, :create do
    input %{
      first_name: {Faker.Person, :first_name, []},
      last_name: {Faker.Person, :last_name, []}
    }
  end

  create :create_user, Org, :create do
    input %{
      first_name: {Faker.Person, :first_name, []},
      last_name: {Faker.Person, :last_name, []}
    }
  end
end
  • :output - Which step or steps to use when constructing the output list. Defaults to the last step.

  • :timeout - A timeout to apply to the transaction.

  • :resource - The Ash resource to use for the transaction.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :description - A description for the step.

create

Declares a step that will call a create action on a resource.

Examples:

create :create_post, MyApp.Post, :create
  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

debug

Declares a step that will inspect its input and provide additional debug information.

Examples:

debug :show_some_information do
  input %{post: result(:create_post)}
end
  • :input - A template for the input.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :description - A description for the step.

update

Declares a step that will call a update action on a resource.

Examples:

update :update_post, MyApp.Post, :update do
  record result(:get_post)
end
  • :record - Required. The record to be updated, can use template helpers, e.g result(:step_name).
    If the value is nil, the step is skipped and nil is the result of the step. Any other value is used as an input record.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

destroy

Declares a step that will call a destroy action on a resource.

Examples:

destroy :destroy_post, MyApp.Post, :destroy
  • :record - Required. The record to be updated, can use template helpers, e.g result(:step_name).
    If the value is nil, the step is skipped and nil is the result of the step. Any other value is used as an input record.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

read

Declares a step that will call a read action on a resource.

Examples:

read :destroy_post, MyApp.Post, :destroy
  • :get? - Whether or not read action is expected to return a single result or nil. If the action is configured with get? true then this is automatically set to true. The default value is false.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

run_flow

Runs another flow as part of the current flow. The return value of the step is the return value of the flow.

Examples:

run_flow :get_org, GetOrgByName do
  input %{
    name: arg(:org_name)
  }
  • :flow - Required. The flow to run.

  • :input - A template for the input.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

custom

Runs a custom step module.

See Ash.Flow.Step for the necessary callbacks and more information.

Examples:

custom :do_custom_thing, MyApp.DoCustomThing do
  input %{...}
end
custom :do_custom_thing, {MyApp.DoCustomThing, opt1: :foo, opt2: :bar} do
  input %{...}
end
  • :input - A template for the input.

  • :custom - The module that implements the step behaviour

  • :async? - Whether or not this step can be run outside of the current process. Defaults to true. The default value is false.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

create

Declares a step that will call a create action on a resource.

Examples:

create :create_post, MyApp.Post, :create
  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

debug

Declares a step that will inspect its input and provide additional debug information.

Examples:

debug :show_some_information do
  input %{post: result(:create_post)}
end
  • :input - A template for the input.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :description - A description for the step.

update

Declares a step that will call a update action on a resource.

Examples:

update :update_post, MyApp.Post, :update do
  record result(:get_post)
end
  • :record - Required. The record to be updated, can use template helpers, e.g result(:step_name).
    If the value is nil, the step is skipped and nil is the result of the step. Any other value is used as an input record.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

destroy

Declares a step that will call a destroy action on a resource.

Examples:

destroy :destroy_post, MyApp.Post, :destroy
  • :record - Required. The record to be updated, can use template helpers, e.g result(:step_name).
    If the value is nil, the step is skipped and nil is the result of the step. Any other value is used as an input record.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

read

Declares a step that will call a read action on a resource.

Examples:

read :destroy_post, MyApp.Post, :destroy
  • :get? - Whether or not read action is expected to return a single result or nil. If the action is configured with get? true then this is automatically set to true. The default value is false.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

run_flow

Runs another flow as part of the current flow. The return value of the step is the return value of the flow.

Examples:

run_flow :get_org, GetOrgByName do
  input %{
    name: arg(:org_name)
  }
  • :flow - Required. The flow to run.

  • :input - A template for the input.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

custom

Runs a custom step module.

See Ash.Flow.Step for the necessary callbacks and more information.

Examples:

custom :do_custom_thing, MyApp.DoCustomThing do
  input %{...}
end
custom :do_custom_thing, {MyApp.DoCustomThing, opt1: :foo, opt2: :bar} do
  input %{...}
end
  • :input - A template for the input.

  • :custom - The module that implements the step behaviour

  • :async? - Whether or not this step can be run outside of the current process. Defaults to true. The default value is false.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

transaction

transaction

Runs a set of steps in a transaction.

Examples:

transaction :create_users do
  create :create_user, User, :create do
    input %{
      first_name: {Faker.Person, :first_name, []},
      last_name: {Faker.Person, :last_name, []}
    }
  end

  create :create_user, Org, :create do
    input %{
      first_name: {Faker.Person, :first_name, []},
      last_name: {Faker.Person, :last_name, []}
    }
  end
end
  • :output - Which step or steps to use when constructing the output list. Defaults to the last step.

  • :timeout - A timeout to apply to the transaction.

  • :resource - The Ash resource to use for the transaction.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :description - A description for the step.

map

Runs a set of steps for each item in a provided list.

Examples:

map :create_users, range(1, arg(:count)) do
  output :create_user

  create :create_user, Org, :create do
    input %{
      first_name: {Faker.Person, :first_name, []},
      last_name: {Faker.Person, :last_name, []}
    }
  end
end
  • :over - The value to be iterated over. Will be available inside the map step as element(:map_step_name)

  • :output - Which step to use when constructing the output list. Defaults to the last step.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

create

Declares a step that will call a create action on a resource.

Examples:

create :create_post, MyApp.Post, :create
  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

debug

Declares a step that will inspect its input and provide additional debug information.

Examples:

debug :show_some_information do
  input %{post: result(:create_post)}
end
  • :input - A template for the input.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :description - A description for the step.

update

Declares a step that will call a update action on a resource.

Examples:

update :update_post, MyApp.Post, :update do
  record result(:get_post)
end
  • :record - Required. The record to be updated, can use template helpers, e.g result(:step_name).
    If the value is nil, the step is skipped and nil is the result of the step. Any other value is used as an input record.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

destroy

Declares a step that will call a destroy action on a resource.

Examples:

destroy :destroy_post, MyApp.Post, :destroy
  • :record - Required. The record to be updated, can use template helpers, e.g result(:step_name).
    If the value is nil, the step is skipped and nil is the result of the step. Any other value is used as an input record.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

read

Declares a step that will call a read action on a resource.

Examples:

read :destroy_post, MyApp.Post, :destroy
  • :get? - Whether or not read action is expected to return a single result or nil. If the action is configured with get? true then this is automatically set to true. The default value is false.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

run_flow

Runs another flow as part of the current flow. The return value of the step is the return value of the flow.

Examples:

run_flow :get_org, GetOrgByName do
  input %{
    name: arg(:org_name)
  }
  • :flow - Required. The flow to run.

  • :input - A template for the input.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

custom

Runs a custom step module.

See Ash.Flow.Step for the necessary callbacks and more information.

Examples:

custom :do_custom_thing, MyApp.DoCustomThing do
  input %{...}
end
custom :do_custom_thing, {MyApp.DoCustomThing, opt1: :foo, opt2: :bar} do
  input %{...}
end
  • :input - A template for the input.

  • :custom - The module that implements the step behaviour

  • :async? - Whether or not this step can be run outside of the current process. Defaults to true. The default value is false.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

create

Declares a step that will call a create action on a resource.

Examples:

create :create_post, MyApp.Post, :create
  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

debug

Declares a step that will inspect its input and provide additional debug information.

Examples:

debug :show_some_information do
  input %{post: result(:create_post)}
end
  • :input - A template for the input.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :description - A description for the step.

update

Declares a step that will call a update action on a resource.

Examples:

update :update_post, MyApp.Post, :update do
  record result(:get_post)
end
  • :record - Required. The record to be updated, can use template helpers, e.g result(:step_name).
    If the value is nil, the step is skipped and nil is the result of the step. Any other value is used as an input record.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

destroy

Declares a step that will call a destroy action on a resource.

Examples:

destroy :destroy_post, MyApp.Post, :destroy
  • :record - Required. The record to be updated, can use template helpers, e.g result(:step_name).
    If the value is nil, the step is skipped and nil is the result of the step. Any other value is used as an input record.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

read

Declares a step that will call a read action on a resource.

Examples:

read :destroy_post, MyApp.Post, :destroy
  • :get? - Whether or not read action is expected to return a single result or nil. If the action is configured with get? true then this is automatically set to true. The default value is false.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

run_flow

Runs another flow as part of the current flow. The return value of the step is the return value of the flow.

Examples:

run_flow :get_org, GetOrgByName do
  input %{
    name: arg(:org_name)
  }
  • :flow - Required. The flow to run.

  • :input - A template for the input.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

custom

Runs a custom step module.

See Ash.Flow.Step for the necessary callbacks and more information.

Examples:

custom :do_custom_thing, MyApp.DoCustomThing do
  input %{...}
end
custom :do_custom_thing, {MyApp.DoCustomThing, opt1: :foo, opt2: :bar} do
  input %{...}
end
  • :input - A template for the input.

  • :custom - The module that implements the step behaviour

  • :async? - Whether or not this step can be run outside of the current process. Defaults to true. The default value is false.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

create

create

Declares a step that will call a create action on a resource.

Examples:

create :create_post, MyApp.Post, :create
  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

debug

debug

Declares a step that will inspect its input and provide additional debug information.

Examples:

debug :show_some_information do
  input %{post: result(:create_post)}
end
  • :input - A template for the input.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :description - A description for the step.

update

update

Declares a step that will call a update action on a resource.

Examples:

update :update_post, MyApp.Post, :update do
  record result(:get_post)
end
  • :record - Required. The record to be updated, can use template helpers, e.g result(:step_name).
    If the value is nil, the step is skipped and nil is the result of the step. Any other value is used as an input record.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

destroy

destroy

Declares a step that will call a destroy action on a resource.

Examples:

destroy :destroy_post, MyApp.Post, :destroy
  • :record - Required. The record to be updated, can use template helpers, e.g result(:step_name).
    If the value is nil, the step is skipped and nil is the result of the step. Any other value is used as an input record.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

read

read

Declares a step that will call a read action on a resource.

Examples:

read :destroy_post, MyApp.Post, :destroy
  • :get? - Whether or not read action is expected to return a single result or nil. If the action is configured with get? true then this is automatically set to true. The default value is false.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

  • :resource - Required. The resource to call the action on.

  • :action - Required. The action to call on the resource.

  • :api - The api to use when calling the action. Defaults to the api set in the flow section.

  • :tenant - A tenant to use for the operation. May be a template or a literal value.

  • :input - A template for the input.

run_flow

run_flow

Runs another flow as part of the current flow. The return value of the step is the return value of the flow.

Examples:

run_flow :get_org, GetOrgByName do
  input %{
    name: arg(:org_name)
  }
  • :flow - Required. The flow to run.

  • :input - A template for the input.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.

custom

custom

Runs a custom step module.

See Ash.Flow.Step for the necessary callbacks and more information.

Examples:

custom :do_custom_thing, MyApp.DoCustomThing do
  input %{...}
end
custom :do_custom_thing, {MyApp.DoCustomThing, opt1: :foo, opt2: :bar} do
  input %{...}
end
  • :input - A template for the input.

  • :custom - The module that implements the step behaviour

  • :async? - Whether or not this step can be run outside of the current process. Defaults to true. The default value is false.

  • :name - Required. The name of the step. Will be used when expressing dependencies, and step inputs.

  • :wait_for - Ensures that the step happens after the configured step or steps.
    This value is just a template that isn't used, except to determine dependencies, so you can use it like this wait_for [result(:step_one), result(:step_two)] or wait_for result(:step).

  • :touches_resources - A list of resources touched by any custom logic in this step. This is used in the case that this step is run in a transaction. This is primarily only needed for custom steps.

  • :description - A description for the step.