有 RxJS 的 concatAll,從高階流串行展平到 ABAP 隊(duì)列與任務(wù)編排的完整映射)
當(dāng)前正在討論的這個(gè)問(wèn)題,其實(shí)正好落在 Angular 前端與 SAP ABAP 后端兩種編程范式的交界處。concatAll看起來(lái)只是 RxJS 中一個(gè)不算復(fù)雜的Operator,可一旦把它放進(jìn) ABAP、ABAP Cloud、aRFC、bgRFC 以及 SAP HANA 的語(yǔ)境里,問(wèn)題就不再是尋找一個(gè)名字相同的 API,而是判斷 ABAP 有沒(méi)有能力表達(dá)同一種執(zhí)行語(yǔ)義。結(jié)論可以直接擺出來(lái)。ABAP 無(wú)論是傳統(tǒng) SAP ABAP On-Premise,還是 SAP BTP ABAP Environment 中的 ABAP Cloud,都沒(méi)有一個(gè)原生名稱叫concatAll的語(yǔ)言結(jié)構(gòu),也沒(méi)有 RxJS 那種原生ObservableObservableT類型體系,因此不存在可以一對(duì)一翻譯的concatAll Operator。但concatAll最關(guān)鍵的幾個(gè)能力,尤其是高階結(jié)構(gòu)展平、嚴(yán)格串行執(zhí)行、前一個(gè)任務(wù)完成后再啟動(dòng)下一個(gè)任務(wù)、保持原始任務(wù)順序,這些能力在 ABAP 中完全可以實(shí)現(xiàn)。根據(jù)具體場(chǎng)景,可以用普通LOOP與同步方法調(diào)用、顯式任務(wù)編排、aRFC 加WAIT FOR ASYNCHRONOUS TASKS、帶順序保證的 bgRFC,以及 ABAP Cloud 的 Application Job 等方式組合出來(lái)。SAP 官方文檔當(dāng)前提供的異步能力集中在這些 ABAP 運(yùn)行時(shí)機(jī)制上,而 RxJS 官方 API 則明確把concatAll定義為把高