Flexflow (flexflow v0.1.4) View Source

Usage

defmodule Verify do
  @moduledoc false

  defmodule Uncertified do
    use Flexflow.Node
  end

  defmodule Certified do
    use Flexflow.Node
  end

  defmodule Rejected do
    use Flexflow.Node
  end

  defmodule Canceled do
    use Flexflow.Node
  end

  defmodule Cert do
    use Flexflow.Transition
    @impl true
    def handle_enter(_, _, _), do: :pass
  end

  defmodule Modify do
    use Flexflow.Transition
    @impl true
    def handle_enter(_, _, _), do: :pass
  end

  defmodule Reject do
    use Flexflow.Transition
    @impl true
    def handle_enter(_, _, _), do: :pass
  end

  defmodule Cancel do
    use Flexflow.Transition
    @impl true
    def handle_enter(_, _, _), do: :pass
  end

  use Flexflow.Process, version: 1

  defnode Uncertified
  defnode Certified
  defnode Rejected
  defnode Canceled

  deftransition Cert, {Uncertified, Certified}
  deftransition Modify, {Uncertified, Uncertified}
  deftransition Reject, {Uncertified, Rejected}
  deftransition Cancel, {Uncertified, Canceled}
  deftransition Modify, {Rejected, Uncertified}
  deftransition Cancel, {Rejected, Canceled}
end

Link to this section Summary

Link to this section Types

Specs

id() :: String.t()

Specs

key() :: key_normalize() | module()

Specs

key_normalize() :: {module(), name()}

Specs

name() :: String.t()

Specs

node_opts() :: keyword()

Specs

nodes() :: %{required(key_normalize()) => Flexflow.Node.t()}

Specs

process_args() :: map()

Specs

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

Specs

transitions() :: %{required(key_normalize()) => Flexflow.Transition.t()}

Link to this section Functions