本發(fā)明涉及計算機(jī),特別涉及工作流引擎業(yè)務(wù)處理方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、工作流引擎業(yè)務(wù)處理過程中,核心線程池都是同步執(zhí)行每個流程節(jié)點,假如核心線程池中的核心線程處理當(dāng)前流程節(jié)點a需要耗時10分鐘,核心線程會同步等待10分鐘,直到處理完成后,才會繼續(xù)執(zhí)行下一流程節(jié)點b,而在這10分鐘內(nèi)該核心線程處于等待狀態(tài),未做其他操作,目前核心線程池是固定的線程數(shù)(例如50個線程),1萬多的業(yè)務(wù)同時開始處理后,會出現(xiàn)50個線程卡在當(dāng)前流程節(jié)點a,而其他節(jié)點都處于阻塞狀態(tài)。這是因為沒有空閑的核心線程可以去執(zhí)行其他業(yè)務(wù)里的節(jié)點,只有當(dāng)前流程節(jié)點a返回結(jié)果并釋放出線程后,其他業(yè)務(wù)才會繼續(xù)被執(zhí)行,可見這是很大的性能浪費。
2、綜上可見,如何提高工作流引擎業(yè)務(wù)處理的性能和效率是本領(lǐng)域有待解決的問題。
技術(shù)實現(xiàn)思路
1、有鑒于此,本發(fā)明的目的在于提供一種工作流引擎業(yè)務(wù)處理方法、裝置、設(shè)備及介質(zhì),提高工作流引擎業(yè)務(wù)處理的性能和效率。其具體方案如下:
2、第一方面,本技術(shù)公開了一種工作流引擎業(yè)務(wù)處理方法,包括:
3、將當(dāng)前工作流引擎業(yè)務(wù)的業(yè)務(wù)邏輯進(jìn)行拆分,以得到輸入流程節(jié)點、等待流程節(jié)點以及輸出流程節(jié)點;
4、利用核心線程池中的第一核心線程處理所述輸入流程節(jié)點,并將得到的所述當(dāng)前工作流引擎業(yè)務(wù)的待處理請求發(fā)送至響應(yīng)式編程功能組件后,釋放所述第一核心線程;
5、基于所述待處理請求觸發(fā)所述響應(yīng)式編程功能組件處理所述等待流程節(jié)點,得到所述當(dāng)前工作流引擎業(yè)務(wù)的處理結(jié)果,并基于所述處理結(jié)果向所述核心線程池發(fā)送線程申請請求;
6、調(diào)用所述核心線程池基于所述線程申請請求確定的第二核心線程處理所述輸出流程節(jié)點,并釋放所述第二核心線程。
7、可選的,所述響應(yīng)式編程功能組件包括工作線程池、事件發(fā)布者以及事件訂閱者;
8、所述基于所述待處理請求觸發(fā)所述響應(yīng)式編程功能組件處理所述等待流程節(jié)點,得到所述當(dāng)前工作流引擎業(yè)務(wù)的處理結(jié)果,并基于所述處理結(jié)果向所述核心線程池發(fā)送線程申請請求,包括:
9、基于所述待處理請求觸發(fā)所述工作線程池處理所述等待流程節(jié)點,以得到封裝后待處理請求;
10、利用所述事件發(fā)布者將所述封裝后待處理請求發(fā)送至業(yè)務(wù)處理端,以獲取所述當(dāng)前工作流引擎業(yè)務(wù)的處理結(jié)果;
11、利用所述事件訂閱者將所述處理結(jié)果發(fā)送至所述核心線程池,以基于所述處理結(jié)果向所述核心線程池發(fā)送線程申請請求。
12、可選的,所述利用所述事件發(fā)布者將所述封裝后待處理請求發(fā)送至業(yè)務(wù)處理端,以獲取所述當(dāng)前工作流引擎業(yè)務(wù)的處理結(jié)果,包括:
13、利用所述事件發(fā)布者將所述封裝后待處理請求發(fā)送至業(yè)務(wù)處理端,并確定所述封裝后待處理請求的發(fā)送時間;
14、判斷當(dāng)前時間與所述發(fā)送時間之間的時間間隔是否大于預(yù)設(shè)閾值;
15、若所述當(dāng)前時間與所述發(fā)送時間之間的時間間隔不大于所述預(yù)設(shè)閾值,則等待所述業(yè)務(wù)處理端返回所述當(dāng)前工作流引擎業(yè)務(wù)的處理結(jié)果;
16、若所述當(dāng)前時間與所述發(fā)送時間之間的時間間隔大于所述預(yù)設(shè)閾值,則生成處理超時結(jié)果,并將所述處理超時結(jié)果確定為所述當(dāng)前工作流引擎業(yè)務(wù)的處理結(jié)果。
17、可選的,所述利用所述事件發(fā)布者將所述封裝后待處理請求發(fā)送至業(yè)務(wù)處理端之后,還包括:
18、掛起所述響應(yīng)式編程功能組件與所述業(yè)務(wù)處理端之間的通信連接;
19、相應(yīng)的,所述等待所述業(yè)務(wù)處理端返回所述當(dāng)前工作流引擎業(yè)務(wù)的處理結(jié)果,包括:
20、等待所述業(yè)務(wù)處理端通過所述通信連接返回所述當(dāng)前工作流引擎業(yè)務(wù)的處理結(jié)果。
21、可選的,所述工作線程池包括多個線程單元,所述線程單元包括選擇器、任務(wù)隊列以及執(zhí)行線程;
22、相應(yīng)的,所述基于所述待處理請求觸發(fā)所述工作線程池處理所述等待流程節(jié)點,以得到封裝后待處理請求,包括:
23、從多個所述線程單元中確定目標(biāo)線程單元,并將所述待處理請求添加至所述目標(biāo)線程單元的所述任務(wù)隊列中,以便所述目標(biāo)線程單元的所述選擇器從所述任務(wù)隊列存儲的各所述待處理請求中選擇目標(biāo)待處理請求,并基于所述目標(biāo)待處理請求觸發(fā)所述目標(biāo)線程單元的所述執(zhí)行線程處理所述等待流程節(jié)點,以得到封裝后待處理請求。
24、可選的,所述釋放所述第一核心線程之后,還包括:
25、監(jiān)測是否存在下一工作流引擎業(yè)務(wù),若存在所述下一工作流引擎業(yè)務(wù),則將所述下一工作流引擎業(yè)務(wù)確定為新的當(dāng)前工作流引擎業(yè)務(wù),并重新跳轉(zhuǎn)至所述將當(dāng)前工作流引擎業(yè)務(wù)的業(yè)務(wù)邏輯進(jìn)行拆分的步驟。
26、可選的,所述調(diào)用所述核心線程池基于所述線程申請請求確定的第二核心線程處理所述輸出流程節(jié)點,包括:
27、通過所述核心線程池基于所述線程申請請求從空閑的各核心線程中篩選出第二核心線程,調(diào)用所述第二核心線程處理所述輸出流程節(jié)點。
28、第二方面,本技術(shù)公開了一種工作流引擎業(yè)務(wù)處理裝置,包括:
29、業(yè)務(wù)邏輯拆分模塊,用于將當(dāng)前工作流引擎業(yè)務(wù)的業(yè)務(wù)邏輯進(jìn)行拆分,以得到輸入流程節(jié)點、等待流程節(jié)點以及輸出流程節(jié)點;
30、第一節(jié)點執(zhí)行模塊,用于利用核心線程池中的第一核心線程處理所述輸入流程節(jié)點,并將得到的所述當(dāng)前工作流引擎業(yè)務(wù)的待處理請求發(fā)送至響應(yīng)式編程功能組件后,釋放所述第一核心線程;
31、第二節(jié)點執(zhí)行模塊,用于基于所述待處理請求觸發(fā)所述響應(yīng)式編程功能組件處理所述等待流程節(jié)點,得到所述當(dāng)前工作流引擎業(yè)務(wù)的處理結(jié)果,并基于所述處理結(jié)果向所述核心線程池發(fā)送線程申請請求;
32、第三節(jié)點執(zhí)行模塊,用于調(diào)用所述核心線程池基于所述線程申請請求確定的第二核心線程處理所述輸出流程節(jié)點,并釋放所述第二核心線程。
33、第三方面,本技術(shù)公開了一種電子設(shè)備,包括:
34、存儲器,用于保存計算機(jī)程序;
35、處理器,用于執(zhí)行所述計算機(jī)程序,以實現(xiàn)前述公開的工作流引擎業(yè)務(wù)處理方法的步驟。
36、第四方面,本技術(shù)公開了一種計算機(jī)可讀存儲介質(zhì),用于存儲計算機(jī)程序;其中,所述計算機(jī)程序被處理器執(zhí)行時實現(xiàn)前述公開的工作流引擎業(yè)務(wù)處理方法的步驟。
37、本技術(shù)有益效果為:本技術(shù)將當(dāng)前工作流引擎業(yè)務(wù)的業(yè)務(wù)邏輯進(jìn)行拆分,以得到輸入流程節(jié)點、等待流程節(jié)點以及輸出流程節(jié)點;利用核心線程池中的第一核心線程處理所述輸入流程節(jié)點,并將得到的所述當(dāng)前工作流引擎業(yè)務(wù)的待處理請求發(fā)送至響應(yīng)式編程功能組件后,釋放所述第一核心線程;基于所述待處理請求觸發(fā)所述響應(yīng)式編程功能組件處理所述等待流程節(jié)點,得到所述當(dāng)前工作流引擎業(yè)務(wù)的處理結(jié)果,并基于所述處理結(jié)果向所述核心線程池發(fā)送線程申請請求;調(diào)用所述核心線程池基于所述線程申請請求確定的第二核心線程處理所述輸出流程節(jié)點,并釋放所述第二核心線程。由此可見,本技術(shù)將當(dāng)前工作流引擎業(yè)務(wù)的業(yè)務(wù)邏輯進(jìn)行拆分,核心線程池中的第一核心線程、第二核心線程只需要處理輸入流程節(jié)點、輸出流程節(jié)點,而輸入流程節(jié)點、輸出流程節(jié)點所需處理時間較短,所以第一核心線程、第二核心線可以很快被釋放,以處理其他工作流引擎業(yè)務(wù)的輸入流程節(jié)點,降低核心線程的占用時間,提高了系統(tǒng)并發(fā)處理能力,而響應(yīng)式編程功能組件來處理所需等待時間較長的等待流程節(jié)點,響應(yīng)式編程功能組件會一直檢查是否有新的待處理請求,并基于處理請求觸發(fā)等待流程節(jié)點的處理,并一直檢查是否獲取處理結(jié)果,以基于處理結(jié)果向所述核心線程池發(fā)送線程申請請求,這種機(jī)制使得系統(tǒng)資源得到了更加充分的利用,避免了因等待流程節(jié)點所需較長的等待時間而導(dǎo)致的資源閑置,提高工作流引擎業(yè)務(wù)處理的性能和效率。