class WorkflowRb::WorkflowBuilder

Attributes

initial_step[RW]
steps[RW]

Public Class Methods

new() click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 9
def initialize
  @steps = []
end

Public Instance Methods

add_step(step) click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 23
def add_step(step)
  step.id = @steps.length
  @steps << step
end
build(id, version, data_class) click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 13
def build(id, version, data_class)
  result = WorkflowDefinition.new
  result.id = id
  result.version = version
  result.data_class = data_class
  result.steps = @steps
  result.initial_step = @initial_step
  result
end
start_step(&body) click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 45
def start_step(&body)
  start_with(body)
end
start_with(body, &setup) click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 28
def start_with(body, &setup)
  new_step = WorkflowStep.new
  new_step.body = body

  if body.kind_of?(Class)
    new_step.name = body.name
  end

  add_step(new_step)
  @initial_step = new_step.id
  new_builder = StepBuilder.new(self, new_step)
  if setup
    setup.call(new_builder)
  end
  new_builder
end