--
-- workflow__add_role/4
--
create or replace function workflow__add_role(
  character varying,
  character varying,
  character varying,
  integer
) returns int4 as $$

declare
  add_role__workflow_key	   alias for $1;
  add_role__role_key		   alias for $2;
  add_role__role_name		   alias for $3;
  add_role__sort_order		   alias for $4;
  v_sort_order			   integer;
begin
        if add_role__sort_order is null then
            select coalesce(max(sort_order)+1, 1)
              into v_sort_order
              from wf_roles
	     where workflow_key = add_role__workflow_key;
        else
            v_sort_order := add_role__sort_order;
        end if;
        insert into wf_roles (
            workflow_key, role_key, role_name, sort_order
        ) values (
            add_role__workflow_key, add_role__role_key, add_role__role_name, v_sort_order
        );
        return 0; 
end;$$ language plpgsql;