Showing posts with label Workflow. Show all posts
Showing posts with label Workflow. Show all posts

Friday, February 21, 2014

Sample Subscription Package used for Business event in Oracle applications.

CREATE OR REPLACE PACKAGE xx_delivery_subscription_pkg
AS
   FUNCTION subscription(
      p_subscription_guid        IN             RAW
    , p_event                    IN OUT NOCOPY  wf_event_t
   )
      RETURN VARCHAR2;
END xx_delivery_subscription_pkg;
/

CREATE OR REPLACE PACKAGE BODY xx_delivery_subscription_pkg
AS
   FUNCTION subscription(
      p_subscription_guid        IN             RAW
    , p_event                    IN OUT NOCOPY  wf_event_t
   )
      RETURN VARCHAR2
   IS
      l_event_name                                      VARCHAR2(2000);
      l_event_key                                       VARCHAR2(2000);
      l_err_text                                        VARCHAR2(3000);
      l_param_list                                      wf_parameter_list_t;
      l_param_name                                      VARCHAR2(240);
      l_param_value                                     VARCHAR2(2000);
      l_order_number                                    VARCHAR2(50);
   BEGIN
      l_param_list                                   := p_event.getparameterlist;
      l_event_name                                   := p_event.geteventname();
      l_event_key                                    := p_event.geteventkey();

      IF l_param_list IS NOT NULL
      THEN
         FOR i IN l_param_list.FIRST .. l_param_list.LAST
         LOOP
            l_param_name                                   := l_param_list(i).getname;
            l_param_value                                  := l_param_list(i).getvalue;
            DBMS_OUTPUT.put_line('Parameter Name : ' || l_param_name || 'Parameter Value : ' || l_param_value);

            BEGIN
               SELECT oh.order_number
                 INTO l_order_number
                 FROM wsh_delivery_details wdd
                    , oe_order_headers_all oh
                    , wsh_delivery_assignments wda
                    , wsh_new_deliveries wnd
                WHERE wdd.source_header_id = oh.header_id
                  AND wdd.delivery_detail_id = wda.delivery_detail_id
                  AND wnd.delivery_id = wda.delivery_id
                  AND wnd.delivery_id = l_param_value
                  AND wnd.status_code <> 'OP'
                  AND wdd.source_code = 'OE'
                  AND wdd.released_status = 'C';
            EXCEPTION
               WHEN OTHERS
               THEN
                  DBMS_OUTPUT.put_line('Unexpected Error : ' || SUBSTR(SQLERRM
                                                                     , 1
                                                                     , 250
                                                                      ));
            END;

            INSERT INTO xx_shiment_notification_stg
                 VALUES (l_param_value
                       , l_order_number
                        );
         END LOOP;

         COMMIT;
      END IF;

      RETURN 'SUCCESS';
   EXCEPTION
      WHEN OTHERS
      THEN
         RETURN 'ERROR';
   END subscription;
END xx_delivery_subscription_pkg;