Packages
step_flow
1.6.0-rc2
1.9.0-rc2
1.9.0-rc1
1.9.0-rc0
1.8.2
1.8.1
1.8.1-rc8
1.8.1-rc7
1.8.1-rc6
1.8.1-rc5
1.8.1-rc4
1.8.1-rc3
1.8.1-rc2
1.8.1-rc1
1.8.1-rc0
1.8.0
1.8.0-rc3
1.8.0-rc2
1.8.0-rc1
1.8.0-rc0
1.7.3
1.7.3-rc4
1.7.3-rc3
1.7.3-rc2
1.7.3-rc1
1.7.3-rc0
1.7.2
1.7.2-rc4
1.7.2-rc3
1.7.2-rc2
1.7.2-rc1
1.7.2-rc0
1.7.1
1.7.0
1.7.0-rc1
1.7.0-rc0
1.6.1
1.6.1-rc1
1.6.1-rc0
1.6.0
1.6.0-rc9
1.6.0-rc8
1.6.0-rc7
1.6.0-rc6
1.6.0-rc5
1.6.0-rc4
1.6.0-rc3
1.6.0-rc20
1.6.0-rc2
1.6.0-rc19
1.6.0-rc18
1.6.0-rc17
1.6.0-rc16
1.6.0-rc15
1.6.0-rc14
1.6.0-rc13
1.6.0-rc12
1.6.0-rc11
1.6.0-rc10
1.6.0-rc1
1.5.0
1.5.0-rc1
1.4.2-rc2
1.4.2-rc1
1.4.1
1.4.1-rc1
1.4.0
1.4.0-rc4
1.4.0-rc3
1.4.0-rc2
1.4.0-rc1
1.3.1
1.3.0
1.3.0-rc
1.2.0
1.1.0
1.0.0
1.0.0-rc9
1.0.0-rc8
1.0.0-rc7
1.0.0-rc6
1.0.0-rc5
1.0.0-rc1
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.4
0.0.3
0.0.2
0.0.1
Step flow manager for Elixir applications
Current section
Files
Jump to
Current section
Files
lib/step_flow/application.ex
defmodule StepFlow.Application do
# See https://hexdocs.pm/elixir/Application.html
# for more information on OTP Applications
@moduledoc false
use Application
alias StepFlow.Metrics
alias StepFlow.Migration
alias StepFlow.WorkflowDefinitions
require Logger
def start(_type, _args) do
# See https://hexdocs.pm/elixir/Supervisor.html
# for other strategies and supported options
opts = [strategy: :one_for_one, name: StepFlow.Supervisor]
supervisor =
Supervisor.start_link(
[],
opts
)
# Starts the database supervisor and set it up
{:ok, _pid} = Supervisor.start_child(StepFlow.Supervisor, StepFlow.Repo)
Migration.All.apply_migrations()
WorkflowDefinitions.load_workflows_in_database()
# Uncomment the following line to dump the Application supervision tree into the logs regularly
# Supervisor.start_child(StepFlow.Supervisor, StepFlow.Repo.SupervisionTree)
# Once the database is ready, starts the other processes supervisor
{:ok, _pid} = Supervisor.start_child(StepFlow.Supervisor, StepFlow.Repo.Checker)
{:ok, _pid} = Supervisor.start_child(StepFlow.Supervisor, StepFlow.ProcessManager)
# AMQP supervisor and workers will be started last
{:ok, _pid} = Supervisor.start_child(StepFlow.Supervisor, StepFlow.Amqp.Supervisor)
# Start prometheus exporter and instrumenters
if StepFlow.Configuration.metrics_enabled?() do
Metrics.WorkflowInstrumenter.setup()
Metrics.JobInstrumenter.setup()
StepFlow.MetricController.setup()
end
supervisor
end
# Tell Phoenix to update the endpoint configuration
# whenever the application is updated.
def config_change(changed, _new, removed) do
StepFlow.Endpoint.config_change(changed, removed)
:ok
end
end