def flunk(workitem, error_class_or_instance_or_message, *err_arguments)
err = error_class_or_instance_or_message
if err.is_a?(String)
err = RuntimeError.new(err)
err.set_backtrace(caller)
elsif err.is_a?(Class)
err = err.new(*err_arguments)
err.set_backtrace(caller)
end
workitem = workitem.h if workitem.respond_to?(:h)
@context.storage.put_msg(
'raise',
'fei' => workitem['fei'],
'wfid' => workitem['wfid'],
'msg' => {
'action' => 'dispatch',
'fei' => workitem['fei'],
'participant_name' => workitem['participant_name'],
'participant' => nil,
'workitem' => workitem
},
'error' => {
'class' => err.class.name,
'message' => err.message,
'trace' => err.backtrace
})
end