-- -- workflow_case__cancel_task/2 -- create or replace function workflow_case__cancel_task( integer, integer ) returns int4 as $$ declare cancel_task__task_id alias for $1; cancel_task__journal_id alias for $2; v_case_id integer; begin PERFORM workflow_case__ensure_task_in_state (cancel_task__task_id, 'started'); select case_id into v_case_id from wf_tasks where task_id = cancel_task__task_id; /* Mark the task canceled */ update wf_tasks set state = 'canceled', canceled_date = now() where task_id = cancel_task__task_id; /* Release our reserved tokens */ PERFORM workflow_case__release_token ( cancel_task__task_id, cancel_task__journal_id ); /* The workflow state has now changed, so we must run this */ PERFORM workflow_case__sweep_automatic_transitions ( v_case_id, cancel_task__journal_id ); return 0; end;$$ language plpgsql;