def launch_sub(pos, subtree, opts={})
i = h.fei.merge(
'subid' => Ruote.generate_subid(h.fei.inspect),
'expid' => pos)
if ci = opts[:child_id]
i['subid'] = "#{i['subid']}k#{ci}"
end
forget = opts[:forget]
register_child(i) unless forget
variables = (
forget ? compile_variables : {}
).merge!(opts[:variables] || {})
@context.storage.put_msg(
'launch',
'fei' => i,
'parent_id' => forget ? nil : h.fei,
'tree' => subtree,
'workitem' => opts[:workitem] || h.applied_workitem,
'variables' => variables,
'forgotten' => forget)
end