-- -- workflow_case__fire_message_transition/1 -- create or replace function workflow_case__fire_message_transition( integer ) returns int4 as $$ declare fire_message_transition__task_id alias for $1; v_case_id integer; v_transition_name varchar; v_trigger_type varchar; v_journal_id integer; begin select t.case_id, tr.transition_name, tr.trigger_type into v_case_id, v_transition_name, v_trigger_type from wf_tasks t, wf_transitions tr where t.task_id = fire_message_transition__task_id and tr.workflow_key = t.workflow_key and tr.transition_key = t.transition_key; if v_trigger_type != 'message' then raise EXCEPTION '-20000: Transition "%" is not message triggered', v_transition_name; end if; /* Add an entry to the journal */ v_journal_id := journal_entry__new ( null, v_case_id, 'task ' || fire_message_transition__task_id || ' fire', v_transition_name || ' fired', now(), null, null, null ); PERFORM workflow_case__fire_transition_internal( fire_message_transition__task_id, v_journal_id ); PERFORM workflow_case__sweep_automatic_transitions ( v_case_id, v_journal_id ); return 0; end;$$ language plpgsql;