class WorkflowRb::StepBuilder

Attributes

step[RW]

Public Class Methods

new(workflow_builder, step) click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 55
def initialize(workflow_builder, step)
  @workflow_builder = workflow_builder
  @step = step
end

Public Instance Methods

input(step_property, &value) click to toggle source

Map workflow instance data to a property on the step

@param step_property [Symbol] the attribute on the step body class

# File lib/workflow_rb/services/workflow_builder.rb, line 105
def input(step_property, &value)
  mapping = IOMapping.new
  mapping.property = step_property
  mapping.value = value
  @step.inputs << mapping
  self
end
name(name) click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 60
def name(name)
  @step.name = name
end
output(data_property, &value) click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 113
def output(data_property, &value)
  mapping = IOMapping.new
  mapping.property = data_property
  mapping.value = value
  @step.outputs << mapping
  self
end
then(body, &setup) click to toggle source

Adds a new step to the workflow

@param body [Class] the step body implementation class

# File lib/workflow_rb/services/workflow_builder.rb, line 67
def then(body, &setup)
  new_step = WorkflowStep.new
  new_step.body = body

  @workflow_builder.add_step(new_step)
  new_builder = StepBuilder.new(@workflow_builder, new_step)

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

  if setup
    setup.call(new_builder)
  end

  new_outcome = StepOutcome.new
  new_outcome.next_step = new_step.id
  new_outcome.value = nil
  @step.outcomes << new_outcome

  new_builder
end
then_step(&body) click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 90
def then_step(&body)
  self.then(body)
end
wait_for(event_name, event_key) click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 121
def wait_for(event_name, event_key)
  new_step = SubscriptionStep.new
  new_step.event_name = event_name
  new_step.event_key = event_key

  @workflow_builder.add_step(new_step)
  new_builder = StepBuilder.new(@workflow_builder, new_step)
  new_step.name = 'WaitFor'

  new_outcome = StepOutcome.new
  new_outcome.next_step = new_step.id
  new_outcome.value = nil
  @step.outcomes << new_outcome

  new_builder
end
when(value) click to toggle source
# File lib/workflow_rb/services/workflow_builder.rb, line 94
def when(value)
  new_outcome = StepOutcome.new
  new_outcome.value = value
  @step.outcomes << new_outcome
  new_builder = OutcomeBuilder.new(@workflow_builder, new_outcome)
  new_builder
end