本公開涉及計(jì)算機(jī)領(lǐng)域,具體地,涉及一種流程引擎的指令調(diào)度方法及裝置。
背景技術(shù):
隨著企業(yè)信息化的快速發(fā)展,業(yè)務(wù)流程管理(Business Process Management,簡(jiǎn)稱BPM)在信息化過(guò)程中的作用越來(lái)越突出。流程引擎是一種計(jì)算機(jī)化的標(biāo)識(shí)模型,是能夠完全或者部分自動(dòng)執(zhí)行經(jīng)營(yíng)過(guò)程的有限狀態(tài)機(jī),其作用是根據(jù)一系列過(guò)程規(guī)則,文檔、信息或任務(wù)在不同的執(zhí)行者之間進(jìn)行傳遞與執(zhí)行。
流程引擎有很多操作指令,有的操作較為復(fù)雜,有的操作相對(duì)簡(jiǎn)單,由于現(xiàn)有引擎都是一個(gè)線程池,引擎會(huì)不加區(qū)分的獲取一個(gè)線程,然后按照不同的指令進(jìn)行解釋執(zhí)行,這會(huì)導(dǎo)致如果有大量的復(fù)雜操作且在高并發(fā)情況下,流程引擎的線程池長(zhǎng)時(shí)間占用無(wú)法釋放,流程引擎無(wú)法響應(yīng)更多的服務(wù)請(qǐng)求。另外由于執(zhí)行周期過(guò)長(zhǎng),無(wú)法有效定位性能瓶頸點(diǎn),從而不能有針對(duì)性的解決某個(gè)長(zhǎng)邏輯的性能問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本公開的目的是提供一種流程引擎的指令調(diào)度方法及裝置,用于解決由于現(xiàn)有的流程引擎只存在一個(gè)線程池中,流程引擎操作復(fù)雜導(dǎo)致線程資源長(zhǎng)時(shí)間得不到釋放,無(wú)法響應(yīng)更多引擎操作的問(wèn)題。
為了實(shí)現(xiàn)上述目的,本公開提供一種流程引擎的指令調(diào)度方法,所述流程引擎包括多個(gè)子線程池,所述指令調(diào)度方法包括:
將輸入的流程指令解析為多個(gè)子操作指令;
根據(jù)執(zhí)行所述子操作指令的先后順序,將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中;
控制所述當(dāng)前子線程池分配線程,以執(zhí)行所述當(dāng)前子操作指令;
在所述當(dāng)前子操作指令執(zhí)行完畢后,釋放所述當(dāng)前子線程池分配的所述線程;
將下一個(gè)所述子操作指令分配到對(duì)應(yīng)的所述子線程池中以執(zhí)行下一個(gè)所述子操作指令,直至所有的所述子操作指令執(zhí)行完畢。
可選地,所述流程引擎還包括與所述子線程池一一對(duì)應(yīng)的子操作緩沖池;
所述將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中,包括:
將所述當(dāng)前子操作指令分配到所述當(dāng)前子線程池對(duì)應(yīng)所述子操作緩沖池中;
在執(zhí)行所述當(dāng)前子操作指令時(shí),將所述當(dāng)前子操作指令從對(duì)應(yīng)的所述子操作緩沖池分配到所述當(dāng)前子線程池中。
可選地,所述在所述當(dāng)前子操作指令執(zhí)行完畢后,所述指令調(diào)度方法還包括:確定下一個(gè)所述子操作指令所對(duì)應(yīng)的所述子操作緩沖池。
可選地,所述流程引擎還包括多級(jí)實(shí)例對(duì)象;
所述將輸入的流程指令解析為多個(gè)子操作指令,包括:
將所述流程指令分解為所述多級(jí)實(shí)例對(duì)象所對(duì)應(yīng)的所述子操作指令。
可選地,所述控制當(dāng)前子操作指令所對(duì)應(yīng)的當(dāng)前子線程池分配線程之前,所述指令調(diào)度方法還包括:
將所述多級(jí)實(shí)例對(duì)象所對(duì)應(yīng)的所述子操作指令串聯(lián)起來(lái),形成邏輯鏈條;
根據(jù)所述邏輯鏈條,確定所述子操作指令的先后順序。
可選地,所述指令調(diào)度方法還包括:
在執(zhí)行所述當(dāng)前子操作指令時(shí),監(jiān)控所述當(dāng)前子線程池中是否有空閑狀態(tài)線程;
當(dāng)所述當(dāng)前子線程池中有所述空閑狀態(tài)線程時(shí),釋放所述空閑狀態(tài)線程。
本公開還提供了一種流程引擎的指令調(diào)度裝置,所述流程引擎包括多個(gè)子線程池,所述指令調(diào)度裝置包括:
解析模塊,用于將輸入的流程指令解析為多個(gè)子操作指令;
分配模塊,用于根據(jù)執(zhí)行所述子操作指令的先后順序,將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中;
控制模塊,用于控制所述當(dāng)前子線程池分配線程,以執(zhí)行所述當(dāng)前子操作指令;
第一釋放模塊,用于在所述當(dāng)前子操作指令執(zhí)行完畢后,釋放所述當(dāng)前子線程池分配的所述線程;
執(zhí)行模塊,用于將下一個(gè)所述子操作指令分配到對(duì)應(yīng)的所述子線程池中以執(zhí)行下一個(gè)所述子操作指令,直至所有的所述子操作指令執(zhí)行完畢。
可選地,所述流程引擎還包括與所述子線程池一一對(duì)應(yīng)的子操作緩沖池;
所述分配模塊包括:
第一分配子模塊,用于將所述當(dāng)前子操作指令分配到所述當(dāng)前子線程池對(duì)應(yīng)所述子操作緩沖池中;
第二分配子模塊,用于在執(zhí)行所述當(dāng)前子操作指令時(shí),將所述當(dāng)前子操作指令從對(duì)應(yīng)的所述子操作緩沖池分配到所述當(dāng)前子線程池中。
可選地,所述指令調(diào)度裝置還包括:第一確定模塊,用于在所述當(dāng)前子操作指令執(zhí)行完畢后,確定下一個(gè)所述子操作指令所對(duì)應(yīng)的所述子操作緩沖池。
可選地,所述流程引擎還包括多級(jí)實(shí)例對(duì)象;
所述解析模塊用于將所述流程指令分解為所述多級(jí)實(shí)例對(duì)象所對(duì)應(yīng)的所述子操作指令。
可選地,所述指令調(diào)度裝置還包括:
串聯(lián)模塊,用于將所述多級(jí)實(shí)例對(duì)象所對(duì)應(yīng)的所述子操作指令串聯(lián)起來(lái),形成邏輯鏈條;
第二確定模塊,用于根據(jù)所述邏輯鏈條,確定所述子操作指令的先后順序。
可選地,所述指令調(diào)度裝置還包括:
監(jiān)控模塊,用于在執(zhí)行所述當(dāng)前子操作指令時(shí),監(jiān)控所述當(dāng)前子線程池中是否有空閑狀態(tài)線程;
第二釋放模塊,用于當(dāng)所述當(dāng)前子線程池中有空閑狀態(tài)線程時(shí),釋放所述空閑狀態(tài)線程。
本公開的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:
本公開通過(guò)將解析后的多個(gè)子操作指令,根據(jù)執(zhí)行所述子操作指令的先后順序,將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中,并控制所述當(dāng)前子線程池分配線程,以執(zhí)行所述當(dāng)前子操作指令,以及在所述當(dāng)前子操作指令執(zhí)行完畢后,釋放所述當(dāng)前子線程池分配的所述線程。因此,每執(zhí)行一個(gè)子操作指令后,分配給該子操作指令的所述線程就會(huì)被釋放,以供其它的流程指令使用,提高了流程引擎的工作效率,解決了由于現(xiàn)有的流程引擎只存在一個(gè)線程池中,流程引擎操作復(fù)雜導(dǎo)致線程資源長(zhǎng)時(shí)間得不到釋放,無(wú)法響應(yīng)更多引擎操作的問(wèn)題。
本公開的其他特征和優(yōu)點(diǎn)將在隨后的具體實(shí)施方式部分予以詳細(xì)說(shuō)明。
附圖說(shuō)明
附圖是用來(lái)提供對(duì)本公開的進(jìn)一步理解,并且構(gòu)成說(shuō)明書的一部分,與下面的具體實(shí)施方式一起用于解釋本公開,但并不構(gòu)成對(duì)本公開的限制。在附圖中:
圖1是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度方法的流程圖。
圖2是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度方法包括的步驟中將子操作指令分配到子線程池的流程圖。
圖3是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度方法的另一流程圖。
圖4是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度方法的另一流程圖。
圖5是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度方法的示意圖。
圖6是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度裝置的框圖。
圖7是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度裝置的分配模塊的框圖。
圖8是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度裝置的另一框圖。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
圖1是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度方法的流程圖,所述流程引擎包括多個(gè)子線程池,如圖1所示,流程引擎的指令調(diào)度方法包括以下步驟。
在步驟S11中,將輸入的流程指令解析為多個(gè)子操作指令。
在步驟S12中,根據(jù)執(zhí)行所述子操作指令的先后順序,將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中;所述當(dāng)前子操作指令為當(dāng)前執(zhí)行的所述子操作指令。
在步驟S13中,控制所述當(dāng)前子線程池分配線程,以執(zhí)行所述當(dāng)前子操作指令。
在步驟S14中,在所述當(dāng)前子操作指令執(zhí)行完畢后,釋放所述當(dāng)前子線程池分配的所述線程。
在步驟S15中,將下一個(gè)所述子操作指令分配到對(duì)應(yīng)的所述子線程池中以執(zhí)行下一個(gè)所述子操作指令,直至所有的所述子操作指令執(zhí)行完畢。
本公開流程引擎的指令調(diào)度方法可以用在電子設(shè)備中,所述電子設(shè)備可能是筆記本電腦、智能手機(jī)、智能手表、平板電腦等。
所述流程指令是由可以枚舉的一組子操作指令組裝而來(lái),當(dāng)用戶通過(guò)操作所述電子設(shè)備使得所述流程引擎接收所述流程指令時(shí),執(zhí)行步驟S11,將所述流程指令解析為多個(gè)子操作指令。接收所述流程指令后,所述流程引擎去執(zhí)行所述流程指令所指示的相關(guān)引擎操作,將引擎操作進(jìn)行分解成一個(gè)個(gè)的子操作。
當(dāng)所述流程指令被解析成多個(gè)子操作指令后,執(zhí)行步驟S12,根據(jù)執(zhí)行所述子操作指令的先后順序,將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中。所述當(dāng)前子操作指令為當(dāng)前需要執(zhí)行的所述子操作指令。相比于現(xiàn)有的只有一個(gè)線程池的流程引擎,本公開的流程引擎包括了多個(gè)子線程池。所述流程引擎包括的所述子線程池?cái)?shù)大于或等于一個(gè)流程指令所包括的子操作指令數(shù),即所述流程引擎包括的所述子線程池對(duì)應(yīng)于所有可能的子操作指令,每一個(gè)所述子操作指令分配一個(gè)不同的所述子線程池。其中,本公開的所述流程引擎所包括的子線程池可通過(guò)以下方式進(jìn)行設(shè)置:首先,在執(zhí)行步驟S11之前,將所有可能的流程引擎指令分解為若干個(gè)相互獨(dú)立的子操作指令(此處子操作指令為全集,即包括了所有可能的子操作指令);接著,根據(jù)所述子操作指令的類型建立與所述子操作指令一一對(duì)應(yīng)的子線程池。
舉例來(lái)講,流程引擎包括子線程池A、子線程池B、子線程池C和子線程池D,流程指令甲包括子操作指令a和子操作指令c。輸入所述流程指令甲后,首先,將所述流程指令甲分解為子操作指令a和子操作指令c;然后,假設(shè)子操作指令a先執(zhí)行,則先將子操作指令a放入對(duì)應(yīng)的子線程池A中,當(dāng)所述子操作指令a執(zhí)行完畢后,再將子操作指令c放入對(duì)應(yīng)的子線程池C中。
當(dāng)所述前子操作指令分配到所述當(dāng)前子線程池后,執(zhí)行步驟S13,控制所述當(dāng)前子線程池分配線程,以執(zhí)行所述當(dāng)前子操作指令。所述流程指令解析后的多個(gè)子操作指令直接具有先后的邏輯順序,根據(jù)所述邏輯順序,所述當(dāng)前子操作指令在被執(zhí)行時(shí),所述當(dāng)前子線程池分配線程給所述當(dāng)前子操作指令去執(zhí)行。在所述當(dāng)前子操作指令執(zhí)行完畢后,執(zhí)行步驟S14,釋放所述當(dāng)前子線程池分配的所述線程。在釋放所述線程后,執(zhí)行下一個(gè)所述子操作指令,直至所有的所述子操作指令執(zhí)行完畢。
舉例來(lái)講,流程引擎包括子線程池A、子線程池B、子線程池C和子線程池D,流程指令甲包括子操作指令a和子操作指令c,假設(shè)先執(zhí)行子操作指令a,后執(zhí)行子操作指令c。輸入所述流程指令甲后,首先,將所述流程指令甲分解為子操作指令a和子操作指令c;然后,將子操作指令a放入對(duì)應(yīng)的子線程池A中;接著,子線程池A分配線程給子操作指令a,當(dāng)子操作指令a執(zhí)行完畢后,釋放子線程池A分配的線程;然后,將子操作指令c放入對(duì)應(yīng)的子線程池C中;接著,子線程池C分配線程給子操作指令c,當(dāng)子操作指令c執(zhí)行完畢后,釋放子線程池C分配的線程。
當(dāng)流程引擎接收包括了子操作指令a和子操作指令b的流程指令乙時(shí),由于當(dāng)所述流程指令甲的子操作指令a執(zhí)行完畢后,釋放了子線程池A分配的線程,此時(shí),子線程池A和子線程池B處于可以使用狀態(tài),即流程引擎可以在處理流程指令甲的過(guò)程中,同時(shí)處理流程指令乙,提高了流程引擎的工作效率。
本公開通過(guò)將解析后的多個(gè)子操作指令,根據(jù)執(zhí)行所述子操作指令的先后順序,將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中,并控制所述當(dāng)前子線程池分配線程,以執(zhí)行所述當(dāng)前子操作指令,以及在所述當(dāng)前子操作指令執(zhí)行完畢后,釋放所述當(dāng)前子線程池分配的所述線程。因此,每執(zhí)行一個(gè)子操作指令后,分配給該子操作指令的所述線程就會(huì)被釋放,以供其它的流程指令使用,提高了流程引擎的工作效率,解決了由于現(xiàn)有的流程引擎只存在一個(gè)線程池中,流程引擎操作復(fù)雜導(dǎo)致線程資源長(zhǎng)時(shí)間得不到釋放,無(wú)法響應(yīng)更多引擎操作的問(wèn)題。
圖2是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度方法包括的步驟中將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中的流程圖。如圖2所示,所述流程引擎還包括與所述子線程池一一對(duì)應(yīng)的子操作緩沖池;所述將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中,可以包括以下步驟。
在步驟S121中,將所述當(dāng)前子操作指令分配到所述當(dāng)前子線程池對(duì)應(yīng)所述子操作緩沖池中;
在步驟S122中,在執(zhí)行所述當(dāng)前子操作指令時(shí),將所述當(dāng)前子操作指令從對(duì)應(yīng)的所述子操作緩沖池分配到所述當(dāng)前子線程池中。
所述流程引擎除了包括多個(gè)子線程池外,還包括與所述子線程池一一對(duì)應(yīng)的子操作緩沖池。輸入的流程指令解析為多個(gè)子操作指令后,首先,根據(jù)執(zhí)行所述子操作指令的先后順序,將所述當(dāng)前子操作指令分配到所述當(dāng)前子線程池對(duì)應(yīng)所述子操作緩沖池中;接著,在所述當(dāng)前子操作指令需要被執(zhí)行時(shí),將所述當(dāng)前子操作指令所在的子操作緩沖池提取出來(lái),并放入當(dāng)前子線程池中;然后,當(dāng)前子線程池分配線程給所述當(dāng)前子操作指令去執(zhí)行;接著,在所述當(dāng)前子操作指令執(zhí)行完畢后,釋放所述當(dāng)前子線程池分配的線程。可選地,在釋放所述當(dāng)前子線程池分配的線程后,根據(jù)執(zhí)行所述子操作指令的先后順序,確定下一個(gè)所述子操作指令所對(duì)應(yīng)的所述子操作緩沖池;然后,將下一個(gè)所述子操作指令放入對(duì)應(yīng)的所述子操作緩沖池。
圖3是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度方法的另一流程圖。如圖3所示,所述流程引擎還包括多級(jí)實(shí)例對(duì)象,流程引擎的指令調(diào)度方法可以包括以下步驟。
在步驟S21中,將所述流程指令分解為所述多級(jí)實(shí)例對(duì)象所對(duì)應(yīng)的所述子操作指令。
在步驟S22中,將所述多級(jí)實(shí)例對(duì)象所對(duì)應(yīng)的所述子操作指令串聯(lián)起來(lái),形成邏輯鏈條。
在步驟S23中,根據(jù)所述邏輯鏈條,確定所述子操作指令的先后順序。
在步驟S24中,根據(jù)執(zhí)行所述子操作指令的先后順序,將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中。
在步驟S25中,控制所述當(dāng)前子線程池分配線程,以執(zhí)行所述當(dāng)前子操作指令。
在步驟S26中,在所述當(dāng)前子操作指令執(zhí)行完畢后,釋放所述當(dāng)前子線程池分配的所述線程。
在步驟S27中,將下一個(gè)所述子操作指令分配到對(duì)應(yīng)的所述子線程池中以執(zhí)行下一個(gè)所述子操作指令,直至所有的所述子操作指令執(zhí)行完畢。
本公開的流程引擎可以包括三級(jí)實(shí)例對(duì)象,所述三級(jí)實(shí)例對(duì)象可以包括:流程實(shí)例對(duì)象、節(jié)點(diǎn)實(shí)例對(duì)象和工作項(xiàng)對(duì)象。每一級(jí)實(shí)例對(duì)象包括了多個(gè)子操作,即所述流程指令所包括的多個(gè)子操作指令都能對(duì)應(yīng)于實(shí)例對(duì)象的子操作。當(dāng)一個(gè)流程指令到達(dá)之后,所述流程引擎將這三個(gè)實(shí)例對(duì)象的不同子操作所對(duì)應(yīng)的子操作指令串聯(lián)起來(lái),形成一個(gè)邏輯鏈條。根據(jù)所述邏輯鏈條,就可以確定執(zhí)行所述子操作指令的先后順序。通過(guò)將原本復(fù)雜的流程操作分解成不同實(shí)例對(duì)象的不同子操作所對(duì)應(yīng)的子操作指令,起到了流程引擎解耦的作用。
圖4是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度方法的另一流程圖。如圖4所示,流程引擎的指令調(diào)度方法可以包括以下步驟。
在步驟S31中,將輸入的流程指令解析為多個(gè)子操作指令。
在步驟S32中,根據(jù)執(zhí)行所述子操作指令的先后順序,將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中。
在步驟S33中,控制所述當(dāng)前子線程池分配線程,以執(zhí)行所述當(dāng)前子操作指令。
在步驟S34中,在執(zhí)行所述當(dāng)前子操作指令時(shí),監(jiān)控所述當(dāng)前子線程池中是否有空閑狀態(tài)線程。
在步驟S35中,當(dāng)所述當(dāng)前子線程池中有所述空閑狀態(tài)線程時(shí),釋放所述空閑狀態(tài)線程。
在步驟S36中,在所述當(dāng)前子操作指令執(zhí)行完畢后,釋放所述當(dāng)前子線程池分配的所述線程。
在步驟S37中,執(zhí)行下一個(gè)所述子操作指令,直至所有的所述子操作指令執(zhí)行完畢。
本公開通過(guò)將引擎操作進(jìn)行分解成一個(gè)個(gè)的子操作,然后按照?qǐng)?zhí)行順序進(jìn)行排序,每個(gè)子操作都會(huì)有一個(gè)獨(dú)立的子線程池,每個(gè)子線程池根據(jù)當(dāng)前子操作的復(fù)雜度配置不同的線程數(shù),使得每個(gè)子操作執(zhí)行的周期縮短,能夠有效定位性能瓶頸點(diǎn),進(jìn)而能有針對(duì)性的解決某個(gè)長(zhǎng)邏輯的性能問(wèn)題。在當(dāng)前子線程池中有空閑狀態(tài)線程時(shí),即當(dāng)前子操作指令并不需要占用當(dāng)前子線程池中的所有線程,因此,可以通過(guò)釋放所述空閑狀態(tài)線程給其它的流程指令使用,進(jìn)一步提高了流程引擎的工作效率。
接下來(lái),舉一個(gè)完整的例子來(lái)描述本公開的流程引擎的指令調(diào)度方法。請(qǐng)參考圖5,圖5是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度方法的示意圖。
如圖5所示,首先,流程指令輸入到流程引擎中,流程引擎將輸入的流程指令解析為N個(gè)子操作指令;
接著,根據(jù)執(zhí)行所述子操作指令的先后順序,先執(zhí)行子操作指令1時(shí),流程引擎將子操作指令1放入子操作緩沖池1中;
然后,將子操作指令1從子操作緩沖池1中提取出來(lái),子線程池1分配線程給子操作指令1去執(zhí)行;
接著,當(dāng)子操作指令1執(zhí)行完畢后,釋放子線程池1分配的所述線程;
然后,確定下一個(gè)子操作指令所對(duì)應(yīng)的緩沖池,即確定子操作指令2所對(duì)應(yīng)的子操作緩沖池2;
接著,將子操作指令2放入子操作緩沖池2中;
然后,將子操作指令2從子操作緩沖池2中提取出來(lái),子線程池2分配線程給子操作指令2去執(zhí)行;
接著,重復(fù)上述子操作指令從子操作緩沖池提取出來(lái)以執(zhí)行的步驟,直至子操作指令N執(zhí)行完畢后,輸出所述流程指令。
圖6是根據(jù)一示例性實(shí)施例示出的一種流程引擎的指令調(diào)度裝置的框圖。參照?qǐng)D6,該指令調(diào)度裝置600包括解析模塊601、分配模塊602、控制模塊603、第一釋放模塊604和執(zhí)行模塊605。
解析模塊601,用于將輸入的流程指令解析為多個(gè)子操作指令;
分配模塊602,用于根據(jù)執(zhí)行所述子操作指令的先后順序,將當(dāng)前子操作指令分配到對(duì)應(yīng)的當(dāng)前子線程池中;所述當(dāng)前子操作指令為當(dāng)前執(zhí)行的所述子操作指令;
控制模塊603,用于控制所述當(dāng)前子線程池分配線程,以執(zhí)行所述當(dāng)前子操作指令;
第一釋放模塊604,用于在所述當(dāng)前子操作指令執(zhí)行完畢后,釋放所述當(dāng)前子線程池分配的所述線程;
執(zhí)行模塊605,用于將下一個(gè)所述子操作指令分配到對(duì)應(yīng)的所述子線程池中以執(zhí)行下一個(gè)所述子操作指令,直至所有的所述子操作指令執(zhí)行完畢。
可選地,所述流程引擎還包括與所述子線程池一一對(duì)應(yīng)的子操作緩沖池。如圖7所示,所述分配模塊602包括:
第一分配子模塊6021,用于將所述當(dāng)前子操作指令分配到所述當(dāng)前子線程池對(duì)應(yīng)所述子操作緩沖池中;
第二分配子模塊6022,用于在執(zhí)行所述當(dāng)前子操作指令時(shí),將所述當(dāng)前子操作指令從對(duì)應(yīng)的所述子操作緩沖池分配到的所述當(dāng)前子線程池中。
可選地,如圖8所示,所述指令調(diào)度裝置600除包括解析模塊601、分配模塊602、控制模塊603、第一釋放模塊604和執(zhí)行模塊605外,還可以包括:
第一確定模塊610,用于在所述當(dāng)前子操作指令執(zhí)行完畢后,確定下一個(gè)所述子操作指令所對(duì)應(yīng)的所述子操作緩沖池。
可選地,所述流程引擎還包括多級(jí)實(shí)例對(duì)象;所述解析模塊用于將所述流程指令分解為所述多級(jí)實(shí)例對(duì)象所對(duì)應(yīng)的所述子操作指令。
可選地,如圖8所示,所述指令調(diào)度裝置600除包括解析模塊601、分配模塊602、控制模塊603、第一釋放模塊604、執(zhí)行模塊605和第一確定模塊610外,還可以包括:
串聯(lián)模塊606,用于將所述多級(jí)實(shí)例對(duì)象所對(duì)應(yīng)的所述子操作指令串聯(lián)起來(lái),形成邏輯鏈條;
第二確定模塊607,用于根據(jù)所述邏輯鏈條,確定所述子操作指令的先后順序。
可選地,如圖8所示,所述指令調(diào)度裝置600除包括解析模塊601、分配模塊602、控制模塊603、第一釋放模塊604、執(zhí)行模塊605、第一確定模塊610、串聯(lián)模塊606和第二確定模塊607外,還可以包括:
監(jiān)控模塊608,用于在執(zhí)行所述當(dāng)前子操作指令時(shí),監(jiān)控所述當(dāng)前子線程池中是否有空閑狀態(tài)線程;
第二釋放模塊609,用于當(dāng)所述當(dāng)前子線程池中有所述空閑狀態(tài)線程時(shí),釋放所述空閑狀態(tài)線程。
以上結(jié)合附圖詳細(xì)描述了本公開的優(yōu)選實(shí)施方式,但是,本公開并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本公開的技術(shù)構(gòu)思范圍內(nèi),可以對(duì)本公開的技術(shù)方案進(jìn)行多種簡(jiǎn)單變型,這些簡(jiǎn)單變型均屬于本公開的保護(hù)范圍。
另外需要說(shuō)明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過(guò)任何合適的方式進(jìn)行組合。為了避免不必要的重復(fù),本公開對(duì)各種可能的組合方式不再另行說(shuō)明。
此外,本公開的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本公開的思想,其同樣應(yīng)當(dāng)視為本公開所公開的內(nèi)容。