-- -- workflow_case__evaluate_guard/7 -- create or replace function workflow_case__evaluate_guard( character varying, character varying, integer, character varying, character varying, character varying, character varying ) returns bool as $$ declare evaluate_guard__callback alias for $1; evaluate_guard__custom_arg alias for $2; evaluate_guard__case_id alias for $3; evaluate_guard__workflow_key alias for $4; evaluate_guard__transition_key alias for $5; evaluate_guard__place_key alias for $6; evaluate_guard__direction alias for $7; v_guard_happy_p boolean; v_rec record; v_str text default ''; begin if evaluate_guard__callback = '' or evaluate_guard__callback is null then -- null guard evaluates to true return 't'; else if evaluate_guard__callback = '#' then return 'f'; else v_str := 'select ' || evaluate_guard__callback || '(' || evaluate_guard__case_id || ',' || quote_literal(evaluate_guard__workflow_key) || ',' || quote_literal(evaluate_guard__transition_key) || ',' || quote_literal(evaluate_guard__place_key) || ',' || quote_literal(evaluate_guard__direction) || ',' || coalesce(quote_literal(evaluate_guard__custom_arg),'null') || ') as guard_happy_p'; raise notice 'str = %', v_str; for v_rec in execute v_str LOOP return v_rec.guard_happy_p; end LOOP; end if; end if; return null; end;$$ language plpgsql;