Class: DurableFlow::WorkflowStep

Inherits:
ApplicationRecord show all
Includes:
Live::Broadcastable
Defined in:
lib/durable_flow/models/workflow_step.rb

Instance Method Summary collapse

Instance Method Details

#complete!(value) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/durable_flow/models/workflow_step.rb', line 20

def complete!(value)
  update!(
    status: "succeeded",
    result: Serializer.dump(value),
    completed_at: Time.current,
  )
end

#fail!(error) ⇒ Object



28
29
30
31
32
33
# File 'lib/durable_flow/models/workflow_step.rb', line 28

def fail!(error)
  update!(
    status: "failed",
    metadata: .merge("last_error" => error_payload(error)),
  )
end

#live_snapshotObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/durable_flow/models/workflow_step.rb', line 49

def live_snapshot
  {
    id: id,
    workflow_run_id: workflow_run_id,
    name: name,
    status: status,
    attempts: attempts,
    result: result,
    metadata: ,
    started_at: started_at,
    completed_at: completed_at,
    created_at: created_at,
    updated_at: updated_at,
  }
end

#metadata_hashObject



45
46
47
# File 'lib/durable_flow/models/workflow_step.rb', line 45

def 
  .presence || {}
end

#result_valueObject



16
17
18
# File 'lib/durable_flow/models/workflow_step.rb', line 16

def result_value
  Serializer.load(result)
end

#retry!(error, retry_at: nil) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/durable_flow/models/workflow_step.rb', line 35

def retry!(error, retry_at: nil)
   = .merge("last_error" => error_payload(error))
  ["retry_at"] = retry_at.utc.iso8601(9) if retry_at

  update!(
    status: "retrying",
    metadata: ,
  )
end

#succeeded?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/durable_flow/models/workflow_step.rb', line 12

def succeeded?
  status == "succeeded"
end