天天看點

WorkFlow常用的一些情形

1、啟用workflow

wf_engine.startprocess(itemtype => l_item_type, itemkey => l_item_key);

WorkFlow常用的一些情形

internal name:就是itemtype     itemkey是自己随意取的,一般都是有流水碼,防止重複

itemkey一般要記錄下來,因為以後我們要對此 workflow修改的時候需要用到此itemkey

2、取消wf

wf_engine.abortprocess(itemtype => 'JW_SHIP', itemkey => l_item_key);

用的也是itemtype and itemkey,如果此wf已經取消或其他,再次取消會報錯,

是以我們取消前最好有一個判斷select * from wf_items,此表中會記錄此itemtype,itemkey的結束時間

如果結束時間有了我們就不需要再去取消了

3、推動wf

       wf_engine.completeactivity(itemtype => 'JW_SHIP',

                             itemkey  => v_attribute3,

                             activity => 'JW_OM_PROCESS:JW_OM_NOTIFICATIONS',

                             RESULT   => 'APPROVE');

       wf_engine.completeactivity(itemtype => 'JW_SHIP',------審批拒絕

                             itemkey  => v_attribute3,

                             activity => 'JW_OM_PROCESS:JW_OM_NOTIFICATIONS',

                             RESULT   => 'REJECT');

   同樣,用的還是itemtype,itemkey,activity:

WorkFlow常用的一些情形
WorkFlow常用的一些情形

冒号後面是此notifications的internal name,result 是此通知的result code

這樣我們就相當于在稽核的時候點了那個按鈕一樣,用代碼實作。

4、functions傳回值問題

在wf中調用一個function時如果直接向下走我們結尾用

resultout := 'COMPLETE';說明完成了

但是如果一個函數的result type :Yes/No

就是說一個function調用完成後可能因為不同的結果走向不同

WorkFlow常用的一些情形

我們就要用

resultout := wf_engine.eng_completed || ':' || 'Y' ;

 resultout := wf_engine.eng_completed || ':' || 'N' ;去判斷走向

5、wf or 和and的功能

這個我們字面看意思就知道or就是有一個條件滿足就繼續走,and就是所有條件滿足才繼續走

WorkFlow常用的一些情形

應該很明了:or就是要麼審批了,要麼确認了,隻要有一個滿足此單就結束

                     and就是要兩個同時滿足此單才會結束

eg:wf的一些标準function:or and我們需要從standard.wft中拖過來使用,完整的代碼可參考我之前的記錄