Friday, May 6, 2016

SQL to Retry OEOH workflow activity

declare
    cursor c_orders_to_retry is
    SELECT P.INSTANCE_LABEL,
           WAS.ITEM_KEY,
           H.ORDER_NUMBER,
           H.ORG_ID,
           was.begin_date
      FROM WF_ITEM_ACTIVITY_STATUSES WAS,
           WF_PROCESS_ACTIVITIES P,
           OE_ORDER_HEADERS_ALL H
    WHERE     TO_NUMBER (WAS.ITEM_KEY) = H.HEADER_ID
           AND WAS.PROCESS_ACTIVITY = P.INSTANCE_ID
           AND P.ACTIVITY_ITEM_TYPE = 'OEOH'
           AND P.ACTIVITY_NAME = 'CLOSE_WAIT_FOR_L'
           AND WAS.ACTIVITY_STATUS = 'NOTIFIED'
           AND WAS.ITEM_TYPE = 'OEOH'
           AND NOT EXISTS
                      (SELECT /*+ NO_UNNEST */
                             1
                         FROM OE_ORDER_LINES_ALL
                        WHERE     HEADER_ID = TO_NUMBER (WAS.ITEM_KEY)
                              AND OPEN_FLAG = 'Y')
           --and h.order_number = '4214653'
           ;
    l_update_flag   varchar2(1) := 'N';      
begin
    dbms_output.put_line('Update Flag : '||l_update_flag);
    for o in c_orders_to_retry
    loop
        if l_update_flag = 'Y' then
            MO_GLOBAL.set_policy_context ('S', o.org_id);
            WF_ENGINE.HANDLEERROR('OEOH', o.ITEM_KEY, o.INSTANCE_LABEL, 'RETRY',NULL);
        end if;
        dbms_output.put_line('Order : '||o.order_number);
    end loop;
    --commit;
exception
when others then
    dbms_output.put_line('Error : '||sqlerrm);

end;    

No comments: