class Kuroko2::Workflow::Task::Retry

Public Instance Methods

execute() click to toggle source
# File lib/autoload/kuroko2/workflow/task/retry.rb, line 5
def execute
  retry_option = parse_option(option)
  token.context['RETRY'] ||= {}
  node.children.each do |child|
    token.context['RETRY'][child.path] = {
      retried_count: 0,
      count: retry_option['count'].to_i,
      sleep_time: retry_option['sleep_time'].to_i
    }
  end

  :next
end
validate() click to toggle source
# File lib/autoload/kuroko2/workflow/task/retry.rb, line 19
def validate
  retry_option = parse_option(option)

  unless retry_option.has_key?("count")
    raise Workflow::AssertionError, "Syntax error option value of retry: #{option} [count option is required]"
  end
end

Private Instance Methods

parse_option(option) click to toggle source

e.g count=5 sleep_time=30

# File lib/autoload/kuroko2/workflow/task/retry.rb, line 30
def parse_option(option)
  raise_assertion_error unless option
  retry_option = { "sleep_time" => 0 }
  scanner = StringScanner.new(option)
  until scanner.eos?
    if scanner.scan(/count=(\d+)/)
      retry_option["count"] = scanner[1].to_i
    elsif scanner.scan(/sleep_time=(\d+)/)
      retry_option["sleep_time"] = scanner[1].to_i
    elsif scanner.scan(/\s+|,/)
      # do nothing
    else
      raise_assertion_error
    end
  end

  retry_option
end
raise_assertion_error() click to toggle source
# File lib/autoload/kuroko2/workflow/task/retry.rb, line 49
def raise_assertion_error
  raise Workflow::AssertionError, "Syntax error option value of retry: #{option}"
end