1、啟用workflow
wf_engine.startprocess(itemtype => l_item_type, itemkey => l_item_key);

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:
冒号後面是此notifications的internal name,result 是此通知的result code
這樣我們就相當于在稽核的時候點了那個按鈕一樣,用代碼實作。
4、functions傳回值問題
在wf中調用一個function時如果直接向下走我們結尾用
resultout := 'COMPLETE';說明完成了
但是如果一個函數的result type :Yes/No
就是說一個function調用完成後可能因為不同的結果走向不同
我們就要用
resultout := wf_engine.eng_completed || ':' || 'Y' ;
resultout := wf_engine.eng_completed || ':' || 'N' ;去判斷走向
5、wf or 和and的功能
這個我們字面看意思就知道or就是有一個條件滿足就繼續走,and就是所有條件滿足才繼續走
應該很明了:or就是要麼審批了,要麼确認了,隻要有一個滿足此單就結束
and就是要兩個同時滿足此單才會結束
eg:wf的一些标準function:or and我們需要從standard.wft中拖過來使用,完整的代碼可參考我之前的記錄