-- -- workflow_case__clear_task_assignments/2 -- create or replace function workflow_case__clear_task_assignments( integer, boolean ) returns int4 as $$ declare clear_task_assignments__task_id alias for $1; clear_task_assignments__permanent_p alias for $2; v_case_id integer; v_transition_key varchar; v_role_key wf_roles.role_key%TYPE; v_workflow_key varchar; v_context_key varchar; v_callback varchar; v_custom_arg varchar; begin -- get some information select ta.case_id, ta.transition_key, tr.role_key, ta.workflow_key, c.context_key into v_case_id, v_transition_key, v_role_key, v_workflow_key, v_context_key from wf_tasks ta, wf_transitions tr, wf_cases c where ta.task_id = clear_task_assignments__task_id and tr.workflow_key = ta.workflow_key and tr.transition_key = ta.transition_key and c.case_id = ta.case_id; -- make the unassignment stick as a manual assignment if clear_task_assignments__permanent_p = 't' then perform workflow_case__clear_manual_assignments ( v_case_id, v_role_key ); end if; -- delete the rows delete from wf_task_assignments where task_id = clear_task_assignments__task_id; -- fire the unassigned callback select unassigned_callback, unassigned_custom_arg into v_callback, v_custom_arg from wf_context_transition_info where workflow_key = v_workflow_key and context_key = v_context_key and transition_key = v_transition_key; PERFORM workflow_case__execute_unassigned_callback ( v_callback, clear_task_assignments__task_id, v_custom_arg ); return 0; end;$$ language plpgsql;