2015年3月6日 星期五

Oracle EBS workflow: WF_ENGINE.AbortProcess

針對已過很久都未結束的workflow, 可用WF_ENGINE.AbortProcess來處理, 以讓資料符合被purge的條件.

測試時覺得OK,資料筆數真的減少了, 但在正式區有個問題, 對PO的workflow作abort時, 會發通知信給廠商, 說明原先的作業已終止(例如原先有由系統發信要求廠商回應), 而且標題是以Cancelled開頭, 造成廠商感到困惑而詢問, 採購也來問是什麼問題. 還好只先作了兩萬筆.

程式可參考以下:



declare
  cursor c1 is
  select item_type, item_key
    from wf_items
   where begin_date < (sysdate - 1000)
     and end_date is null;

  v_count number:=0;    
begin
  dbms_output.put_line('Begin: '||to_char(sysdate,'yyyymmdd hh24:mi:ss'));
  for c_rec in C1 loop
    WF_ENGINE.AbortProcess(c_rec.item_type, c_rec.item_key);
   
    if v_count<50 then
      v_count := v_count+1;
    else
      v_count := 1 ;
      wf_purge.total;
      commit;
    end if; 
  end loop;
  dbms_output.put_line('End:   '||to_char(sysdate,'yyyymmdd hh24:mi:ss'));

end;


沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。