-- -- workflow_case__sweep_automatic_transitions/2 -- create or replace function workflow_case__sweep_automatic_transitions( integer, integer ) returns int4 as $$ declare sweep_automatic_transitions__case_id alias for $1; sweep_automatic_transitions__journal_id alias for $2; v_done_p boolean:='f'; v_finished_p boolean; task_rec record; begin PERFORM workflow_case__enable_transitions(sweep_automatic_transitions__case_id); while v_done_p != 't' loop v_done_p := 't'; v_finished_p := workflow_case__finished_p ( sweep_automatic_transitions__case_id, sweep_automatic_transitions__journal_id); if v_finished_p = 'f' then for task_rec in select task_id from wf_tasks ta, wf_transitions tr where tr.workflow_key = ta.workflow_key and tr.transition_key = ta.transition_key and tr.trigger_type = 'automatic' and ta.state = 'enabled' and ta.case_id = sweep_automatic_transitions__case_id LOOP PERFORM workflow_case__fire_transition_internal ( task_rec.task_id, sweep_automatic_transitions__journal_id ); v_done_p := 'f'; end loop; PERFORM workflow_case__enable_transitions(sweep_automatic_transitions__case_id); end if; end loop; return 0; end;$$ language plpgsql;