class Swarm::ConcurrenceExpression

Public Instance Methods

all_children_replied?() click to toggle source
# File lib/swarm/expressions/concurrence_expression.rb, line 19
def all_children_replied?
  replied_children.count == tree.size
end
array_combination_method() click to toggle source
# File lib/swarm/expressions/concurrence_expression.rb, line 37
def array_combination_method
  arguments.fetch("combine_arrays", "uniq")
end
merge_child_workitem(child) click to toggle source
# File lib/swarm/expressions/concurrence_expression.rb, line 31
def merge_child_workitem(child)
  self.workitem = Swarm::Support.deep_merge(
    workitem, child.workitem, :combine_arrays => array_combination_method
  )
end
move_on_from(child) click to toggle source
# File lib/swarm/expressions/concurrence_expression.rb, line 23
def move_on_from(child)
  merge_child_workitem(child)
  save
  if all_children_replied?
    reply
  end
end
ready_to_proceed?() click to toggle source
# File lib/swarm/expressions/concurrence_expression.rb, line 13
def ready_to_proceed?
  required_replies = arguments.fetch("required_replies", nil)
  return all_children_replied? unless required_replies
  replied_children.count >= required_replies
end
replied_children() click to toggle source
# File lib/swarm/expressions/concurrence_expression.rb, line 9
def replied_children
  children.select(&:replied_at)
end
work() click to toggle source
# File lib/swarm/expressions/concurrence_expression.rb, line 5
def work
  kick_off_children(tree.each_index.to_a)
end