Packages
step_flow
1.6.0
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/models/workflows/step_manager.ex
defmodule StepFlow.Workflows.StepManager do
@moduledoc """
The Step Manager context.
"""
require Logger
use GenServer
alias StepFlow.Repo
alias StepFlow.Step
alias StepFlow.Step.Live
def init(args) do
{:ok, args}
end
def child_spec(_) do
%{
id: StepFlow.Workflows.StepManager,
start: {StepFlow.Workflows.StepManager, :start_link, []}
}
end
def start_link do
GenServer.start_link(__MODULE__, :ok, name: __MODULE__)
end
def check_step_status(message) do
GenServer.cast(__MODULE__, {:check_step_status, message})
end
def check_step_progression(message) do
GenServer.cast(__MODULE__, {:check_step_progression, message})
end
def handle_cast({:check_step_status, %{job_id: job_id}}, state) do
Logger.warn("#{__MODULE__}: check for job #{job_id}")
job = StepFlow.Jobs.get_job!(job_id)
topic = "update_workflow_" <> Integer.to_string(job.workflow_id)
StepFlow.Notification.send(topic, %{workflow_id: job.workflow_id})
if job.is_live do
Live.update_job_live(job_id)
else
job = Repo.preload(job, :workflow)
Step.start_next(job.workflow)
end
{:noreply, state}
end
def handle_cast({:check_step_status, message}, state) do
Logger.error("#{__MODULE__}: unable to handle message: #{inspect(message)}")
{:noreply, state}
end
end