Packages
step_flow
1.3.0-rc
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.WorkflowDefinition
require Logger
def start(_type, _args) do
import Supervisor.Spec
options = %{
keepalive: 10_000,
name: :step_flow_slack_bot,
scope: "identify,incoming-webhook"
}
children = [
supervisor(StepFlow.Repo, []),
supervisor(StepFlow.Amqp.Supervisor, []),
supervisor(StepFlow.Workers.Supervisor, []),
worker(StepFlow.Workflows.StepManager, [])
]
children =
case Application.get_env(:step_flow, StepFlow.Endpoint) do
nil ->
children
_ ->
children ++
[
{Phoenix.PubSub, [name: StepFlow.PubSub, adapter: Phoenix.PubSub.PG2]},
supervisor(StepFlow.Endpoint, [])
]
end
children =
StepFlow.Configuration.get_slack_token()
|> case do
nil ->
children
slack_token ->
Logger.info("Starting Slack Bot")
List.insert_at(
children,
-1,
worker(Slack.Bot, [StepFlow.SlackBot, [], slack_token, options], restart: :transient)
)
end
# 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(children, opts)
Migration.All.apply_migrations()
WorkflowDefinition.load_workflows_in_database()
# 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