--
-- 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;