Wednesday, November 19, 2014

WF: BE: Code snippet: Know the parameters passed from a Business Event

CREATE OR REPLACE FUNCTION xx_capture_event_parameters(p_subscription_guid IN RAW,
                                                  p_event             IN OUT NOCOPY wf_event_t)
  RETURN VARCHAR2 IS
  l_wf_parameter_list_t        wf_parameter_list_t;
  l_parameter_name             VARCHAR2(30);
  l_parameter_value            VARCHAR2(4000);
  n_total_number_of_parameters INTEGER;
  n_current_parameter_position NUMBER := 1;
BEGIN
  --Clear the debug table to begin with 
  xx_debug('DELETE');
  l_wf_parameter_list_t        := p_event.getparameterlist();
  n_total_number_of_parameters := l_wf_parameter_list_t.COUNT();
  xx_debug('Name of the event is =>' || p_event.geteventname());
  xx_debug('Key of the event is =>' || p_event.geteventkey());
  xx_debug('Event Data is =>' || p_event.EVENT_DATA);
  xx_debug('Total number of parameters passed to event are =>' ||
           n_total_number_of_parameters);
  WHILE (n_current_parameter_position <= n_total_number_of_parameters) LOOP
    l_parameter_name  := l_wf_parameter_list_t(n_current_parameter_position)
                        .getname();
    l_parameter_value := l_wf_parameter_list_t(n_current_parameter_position)
                        .getvalue();
    xx_debug('Parameter Name=>' || l_parameter_name || ' has value =>' ||
             l_parameter_value);
    n_current_parameter_position := n_current_parameter_position + 1;
  END LOOP;
  RETURN 'SUCCESS';
EXCEPTION
  WHEN OTHERS THEN
    xx_debug('Unhandled Exception=>' || SQLERRM);
END xx_capture_event_parameters;

No comments:

Post a Comment