# File lib/ruote/part/engine_participant.rb, line 126
    def consume(workitem)

      wi = workitem.to_h
      fexp = Ruote::Exp::FlowExpression.fetch(@context, wi['fei'])
      params = wi['fields'].delete('params')

      forget = (fexp.attribute(:forget).to_s == 'true')

      @storage.put_msg(
        'launch',
        'wfid' => wi['fei']['wfid'],
        'parent_id' => forget ? nil : wi['fei'],
        'tree' => determine_tree(fexp, params),
        'workitem' => wi,
        'variables' => fexp.compile_variables)

      fexp.unpersist if forget
        #
        # special behaviour here in case of :forget => true :
        # parent_id of remote expression is set to nil and local expression
        # is unpersisted immediately
    end