# File lib/ruote/exp/fe_concurrence.rb, line 332 def reply(workitem) workitem = Ruote.fulldup(workitem) # # since workitem field merging might happen, better to work on # a copy of the workitem (so that history, coming afterwards, # doesn't see a modified version of the workitem) if h.wait_for && tag = workitem['fields']['__left_tag__'] h.wait_for.delete(tag) end over = h.over h.over = over || over?(workitem) keep(workitem) # is done after the over? determination for its looks at 'winner' if (not over) && h.over # # just became 'over' reply_to_parent(nil) elsif h.over && h.remaining == 'wait' reply_to_parent(nil) elsif h.children.empty? do_unpersist || return @context.storage.put_msg( 'ceased', 'wfid' => h.fei['wfid'], 'fei' => h.fei, 'workitem' => workitem) else do_persist end end