對於starting new task 意思就是開啟新的異步處理進程
業務背景:
前期開發了一個遠程調用接口,RF端 + 后台,這里RF端在准備好所有的數據之后,做提交動作,
將數據提交后台,后台接收到數據之后,開始進行功能處理(TO的確認、過賬等,這兩個順序不能顛倒),
處理完成之后,進行自建表的更新,然后將結果返回至RF端。在這個過程中,牽扯到前端和后端的交互,所以就
需要考慮交互相應時間,時間過長,會導致RF端長時間得不到相應,影響用戶體驗
這個時候就需要提高后台的相應處理時間,由於TO確認是針對單個 tanum 進行的,對於大批量的tanum,這
個時候沒有可優化的空間,這個時候,我們把該標准function做成異步處理,會使得LES接口的相應時間減少
異步處理機制原理,異步處理在本質上還是需要處理,只是處理的時間不再記到函數執行時間里
start new of task 的使用方法如下:
data: l_taskname type char10.
loop at it_output into ih_output .
..........
l_taskname = to_confirm && sy-tabix.
call function 'TO_CONFIRM' starting new task l_taskname
exporting
................
importing
.................
if sy-subrc <> 0.
..................
endif.
endloop.
這樣進行異步處理時,我們需考慮以下問題:
1、該接口是否能做成異步處理方式?並非所有的function都能做成異步處理,原因是,該接口執行完成后,后續
邏輯是否依賴於該接口的執行結果,如果相互之間有牽連,則不能做成異步處理
2、進行異步處理的時候,進程會在后台開啟多少?
3、系統資源是否夠用,是否能夠承載異步處理方式(比如,內存是否夠用,在系統壓力很大的時候,系統資源分配
均衡?)?