-- -- workflow_case__delete/1 -- create or replace function workflow_case__delete( integer ) returns int4 as $$ declare delete__case_id alias for $1; v_workflow_case_table varchar; begin /* delete attribute_value_audit, tokens, tasks */ delete from wf_attribute_value_audit where case_id = delete__case_id; delete from wf_case_assignments where case_id = delete__case_id; delete from wf_case_deadlines where case_id = delete__case_id; delete from wf_tokens where case_id = delete__case_id; delete from wf_task_assignments where task_id in (select task_id from wf_tasks where case_id = delete__case_id); delete from wf_tasks where case_id = delete__case_id; /* delete the journal */ PERFORM journal_entry__delete_for_object(delete__case_id); /* delete from the workflow-specific cases table */ select table_name into v_workflow_case_table from acs_object_types ot, wf_cases c where c.case_id = delete__case_id and object_type = c.workflow_key; execute 'delete from ' || v_workflow_case_table || ' where case_id = ' || delete__case_id; /* delete from the generic cases table */ delete from wf_cases where case_id = delete__case_id; /* delete from acs-objects */ PERFORM acs_object__delete(delete__case_id); return 0; end;$$ language plpgsql;