Flexflow (flexflow v0.2.0) View Source

Usage

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

  defmodule Reviewing do
    use Flexflow.State
  end

  defmodule Submit do
    use Flexflow.Event
  end

  ## Start state
  state {Start, :draft}
  state {End, :reviewed}
  state {End, :canceled}
  ## Bypass state
  state :rejected
  ## Custom state
  state Reviewing

  ## Define a event
  ## `a ~> b` is a shortcut of `{a, b}`
  event :modify1, :draft ~> :draft
  event :cancel1, :draft ~> :canceled, results: [:foo]

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

  event :modify2, :rejected ~> :rejected
  event :cancel2, :rejected ~> :canceled, results: [:foo]

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

  event :reject, Reviewing ~> :rejected
  event :agree, Reviewing ~> :reviewed, results: [:foo]
end

Link to this section Summary

Link to this section Types

Specs

id() :: String.t()

Specs

name() :: atom()

Specs

process_args() :: map()

Specs

process_identity() :: process_key() | pid()

Specs

process_key() :: {module(), id()}

Specs

state_key() :: name()

Specs

state_type() :: {module(), name()}
Link to this type

state_type_or_module()

View Source

Specs

state_type_or_module() :: state_type() | module()

Link to this section Functions