# File lib/ruote/part/block_participant.rb, line 75
    def on_workitem

      block = get_block('on_workitem', 'block')

      r = if block.arity == 1

        block.call(workitem)

      else

        block.call(
          workitem, Ruote::Exp::FlowExpression.fetch(@context, workitem.h.fei))
      end

      if r != nil && r != workitem
        workitem.result = (Rufus::Json.dup(r) rescue nil)
      end

      reply_to_engine(workitem)
    end