API Reference flexflow v0.1.8

Modules

Usage

defmodule Review do
  @vsn "1.0.1"
  use Flexflow.Process

  defmodule Reviewing do
    use Flexflow.Event
  end

  defmodule Submit do
    use Flexflow.Gateway
  end

  ## Start event
  event {Start, :draft}
  ## End event, `async` mode means this gateway run's in a separated elixir process.
  event {End, :reviewed}, async: true
  event {End, :canceled}
  ## Intermediate event
  event :rejected
  ## Custom event
  event Reviewing

  ## Define a gateway
  ## `a ~> b` is a shortcut of `{a, b}`
  gateway :modify1, :draft ~> :draft
  gateway :cancel1, :draft ~> :canceled

  ## Custom gateway
  gateway Submit, :draft ~> Reviewing

  gateway :modify2, :rejected ~> :rejected
  gateway :cancel2, :rejected ~> :canceled

  ## With custom name
  gateway {Submit, :submit2}, :rejected ~> Reviewing

  gateway :reject, Reviewing ~> :rejected
  gateway :agree, Reviewing ~> :reviewed
end

Default value:

  • max_loop_limit: 1000
  • telemetry_default_handler: true

HookDispatcher

ModuleRegistry

ProcessManager

ProcessParentManager

Examples

iex> defmodule DemoRegistry do
...>   use Elixir.Flexflow.ProcessRegistry
...> end
...> match?({:via, Registry, {Elixir.Flexflow.ProcessRegistry, {DemoRegistry, :abc}}}, DemoRegistry.via_tuple(:abc))
true

ProcessServer

Telemetry