本發(fā)明涉及業(yè)務(wù)流程處理技術(shù)領(lǐng)域,尤其涉及一種分布式程序的業(yè)務(wù)流程協(xié)作系統(tǒng)及方法。
背景技術(shù):
現(xiàn)有技術(shù)中,在異步執(zhí)行多進程的業(yè)務(wù)處理環(huán)境中,多個不同的業(yè)務(wù)操作進程通常由于無法相互獲知操作狀態(tài)以及整個業(yè)務(wù)流程當前的操作進度而呈現(xiàn)出無狀態(tài)無序的執(zhí)行狀態(tài),具體在于不同操作進程之間無法完全按照既定的操作順序接續(xù)進行操作,從而可能導致整個異步執(zhí)行的業(yè)務(wù)流程的某些環(huán)節(jié)出現(xiàn)問題,或者直接造成業(yè)務(wù)流程執(zhí)行失敗,因此降低了業(yè)務(wù)流程的執(zhí)行效率,提升了執(zhí)行風險。
技術(shù)實現(xiàn)要素:
根據(jù)現(xiàn)有技術(shù)中存在的問題,現(xiàn)提供一種分布式程序的的業(yè)務(wù)流程協(xié)作系統(tǒng)及方法的技術(shù)方案,旨在于異步的業(yè)務(wù)操作進程中實現(xiàn)多個操作進程相互有序有狀態(tài)執(zhí)行的目的。
上述技術(shù)方案具體包括:
一種分布式程序的業(yè)務(wù)流程協(xié)作系統(tǒng),其中,包括注冊服務(wù)端和多個客服端,所述注冊服務(wù)端分別與多個所述客服端連接;
每個所述客服端中分別包括:
連接單元,所述客服端通過所述連接單元與所述注冊服務(wù)端之間建立長連接;
流程申請單元,連接所述連接單元,在需要開啟新的業(yè)務(wù)流程時,所述客服端通過所述流程申請單元向所述注冊服務(wù)端發(fā)送所述業(yè)務(wù)流程的開啟申請,所述注冊服務(wù)端在接收到所述開啟申請后生成并保存一唯一對應(yīng)所述業(yè)務(wù)流程的第一標記信息;
每個所述業(yè)務(wù)流程中包括至少一個所述客服端執(zhí)行的流程操作,不同的所述客服端執(zhí)行的所述流程操作之間具有預設(shè)的執(zhí)行順序;
所述第一標記信息中包括所述客服端執(zhí)行所述業(yè)務(wù)流程的執(zhí)行狀態(tài);
更改單元,連接所述連接單元,用于在所述客服端完成所述流程操作后更改所述注冊服務(wù)端中保存的所述第一標記信息中的所述執(zhí)行狀態(tài);
監(jiān)聽單元,連接所述連接單元,用于持續(xù)監(jiān)聽所述注冊服務(wù)端中保存的所述客服端所關(guān)聯(lián)的所述業(yè)務(wù)流程對應(yīng)的所述第一標記信息,并在上一個所述執(zhí)行順序的所述客服端的所述執(zhí)行狀態(tài)被更改時開始執(zhí)行所述流程操作;
終止單元,分別連接所述連接單元、所述更改單元和所述監(jiān)聽單元,用于在所述更改單元更改所述執(zhí)行狀態(tài)后,終止所述監(jiān)聽單元對所述第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)。
優(yōu)選的,該業(yè)務(wù)流程協(xié)作系統(tǒng),其中,所述連接單元包括:
加載模塊,用于加載所述客服端的配置文件,并于所述配置文件中獲取所述注冊服務(wù)端的服務(wù)地址;
第一申請模塊,連接所述加載模塊,用于根據(jù)所述服務(wù)地址向所述注冊服務(wù)端發(fā)送申請建立長連接的連接請求;
連接模塊,用于在所述注冊服務(wù)端批準所述連接請求后與所述注冊服務(wù)端之間建立長連接;
接收模塊,用于在與所述注冊服務(wù)端之間建立長連接后獲取所述注冊服務(wù)端反饋的唯一對應(yīng)所述客服端的客服端標識信息。
優(yōu)選的,該業(yè)務(wù)流程協(xié)作系統(tǒng),其中,申請開啟所述業(yè)務(wù)流程的所述客服端根據(jù)所述開啟申請生成一第二標記信息,所述第二標記信息與所述第一標記信息一一對應(yīng);
所述客服端之間相互連接,于所述客服端之間相互傳遞所述第二標記信息;
每個所述客服端中還包括:
執(zhí)行單元,連接所述流程申請單元,用于執(zhí)行所述業(yè)務(wù)流程中對應(yīng)于所述客服端的所述流程操作;
查詢單元,分別連接所述執(zhí)行單元和所述更改單元,并連接所述連接單元,用于在所述執(zhí)行單元的所述流程操作執(zhí)行完畢時,根據(jù)所述第二標記信息查詢得到所述注冊服務(wù)端中對應(yīng)所述業(yè)務(wù)流程的所述第一標記信息,輸出相應(yīng)的查詢結(jié)果;
所述更改單元根據(jù)所述查詢單元輸出的所述查詢結(jié)果,在所述執(zhí)行單元的所述流程操作執(zhí)行完畢時將所述第一標記信息中的所述執(zhí)行狀態(tài)更改為執(zhí)行結(jié)束。
優(yōu)選的,該業(yè)務(wù)流程協(xié)作系統(tǒng),其中,所述終止單元包括:
第二申請模塊,用于向所述注冊服務(wù)端提出終止所述監(jiān)聽單元對所述第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)的終止申請;
終止模塊,用于在獲取所述注冊服務(wù)端針對所述終止申請的反饋后終止所述監(jiān)聽單元對所述第一標記信息進行持續(xù)監(jiān)聽的狀態(tài);
刪除模塊,連接所述終止模塊,用于在終止所述監(jiān)聽單元對所述第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)后,刪除對所述第一標記信息進行監(jiān)聽的監(jiān)聽事件。
優(yōu)選的,該業(yè)務(wù)流程協(xié)作系統(tǒng),其中,還包括一監(jiān)控端,連接所述注冊服務(wù)端,用于監(jiān)控與所述注冊服務(wù)端建立長連接的所述客服端的工作狀態(tài),以及正在執(zhí)行的所述業(yè)務(wù)流程的執(zhí)行狀態(tài)。
一種業(yè)務(wù)流程協(xié)作方法,其中,包括注冊服務(wù)端和多個客服端,所述注冊服務(wù)端分別與多個所述客服端連接,還包括:
步驟s1,所述客服端與所述注冊服務(wù)端建立長連接;
步驟s2,在需要開啟新的業(yè)務(wù)流程時,所述客服端向所述注冊服務(wù)端發(fā)送所述業(yè)務(wù)流程的開啟申請,所述注冊服務(wù)端在接收到所述開啟申請后生成并保存一唯一對應(yīng)所述業(yè)務(wù)流程的第一標記信息;
每個所述業(yè)務(wù)流程中包括至少一個所述客服端執(zhí)行的流程操作,不同的所述客服端執(zhí)行的所述流程操作之間具有預設(shè)的執(zhí)行順序;
所述第一標記信息中包括所述客服端執(zhí)行所述業(yè)務(wù)流程的執(zhí)行狀態(tài);
步驟s3,在所述客服端完成所述流程操作后,所述客服端更改所述注冊服務(wù)端中保存的所述第一標記信息中的所述執(zhí)行狀態(tài);
所述客服端持續(xù)監(jiān)聽所述注冊服務(wù)端中保存的所述客服端所關(guān)聯(lián)的所述業(yè)務(wù)流程對應(yīng)的所述第一標記信息,并在上一個所述執(zhí)行順序的所述客服端的所述執(zhí)行狀態(tài)被更改時開始執(zhí)行所述流程操作;以及
在所述更改單元更改所述執(zhí)行狀態(tài)后,所述客服端終止所述監(jiān)聽單元對所述第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)。
優(yōu)選的,該業(yè)務(wù)流程協(xié)作方法,其中,所述步驟s1具體包括:
步驟s11,所述客服端加載配置文件,并于所述配置文件中獲取所述注冊服務(wù)端的服務(wù)地址;
步驟s12,所述客服端根據(jù)所述服務(wù)地址向所述注冊服務(wù)端發(fā)送申請建立長連接的連接請求;
步驟s13,在所述注冊服務(wù)端批準所述連接請求后,所述客服端與所述注冊服務(wù)端之間建立長連接;
步驟s14,在與所述注冊服務(wù)端之間建立長連接后,所述客服端獲取所述注冊服務(wù)端反饋的唯一對應(yīng)所述客服端的客服端標識信息,隨后轉(zhuǎn)向所述步驟s2。
優(yōu)選的,該業(yè)務(wù)流程協(xié)作方法,其中,所述步驟s3具體包括:
步驟s31,所述客服端執(zhí)行所述業(yè)務(wù)流程中對應(yīng)的所述流程操作,并在完成所述流程操作后轉(zhuǎn)向步驟s32;
步驟s32,所述客服端查詢得到所述注冊服務(wù)端中對應(yīng)所述業(yè)務(wù)流程的所述第一標記信息,輸出相應(yīng)的查詢結(jié)果;
步驟s33,所述客服端根據(jù)所述查詢結(jié)果將所述第一標記信息中的所述執(zhí)行狀態(tài)更改為執(zhí)行結(jié)束,隨后轉(zhuǎn)向所述步驟s4。
優(yōu)選的,該業(yè)務(wù)流程協(xié)作方法,其中,所述客服端終止所述監(jiān)聽單元對所述第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)的步驟具體包括:
步驟a1,所述客服端向所述注冊服務(wù)端提出終止對所述第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)的終止申請;
步驟a2,所述注冊服務(wù)端在獲取所述注冊服務(wù)端針對所述終止申請的反饋后終止所述監(jiān)聽單元對所述第一標記信息進行持續(xù)監(jiān)聽的狀態(tài);
步驟a3,在終止所述監(jiān)聽單元對所述第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)后,所述客服端刪除對所述第一標記信息進行監(jiān)聽的監(jiān)聽事件。
優(yōu)選的,該業(yè)務(wù)流程協(xié)作方法,其中,于所述客服端和所述注冊服務(wù)端之間建立長連接并執(zhí)行所述流程操作的同時,設(shè)置一連接所述注冊服務(wù)端的監(jiān)控端,并采用所述監(jiān)控端監(jiān)控與所述注冊服務(wù)端建立長連接的所述客服端的工作狀態(tài),以及正在執(zhí)行的所述業(yè)務(wù)流程的執(zhí)行狀態(tài)。
上述技術(shù)方案的有益效果是:
1)提供一種業(yè)務(wù)流程協(xié)作系統(tǒng),能夠于異步的業(yè)務(wù)操作進程中實現(xiàn)多個操作進程相互之間的有序有狀態(tài)執(zhí)行,提升執(zhí)行效率,降低執(zhí)行風險;
2)提供一種業(yè)務(wù)流程協(xié)作方法,能夠支持上述系統(tǒng)正常運行。
附圖說明
圖1是本發(fā)明的較佳的實施例中,一種業(yè)務(wù)流程協(xié)作系統(tǒng)的總體結(jié)構(gòu)示意圖;
圖2是本發(fā)明的較佳的實施例中,于圖1的基礎(chǔ)上,連接單元的具體結(jié)構(gòu)示意圖;
圖3是本發(fā)明的較佳的實施例中,于圖1的基礎(chǔ)上,終止單元的具體結(jié)構(gòu)示意圖;
圖4是本發(fā)明的較佳的實施例中,一種業(yè)務(wù)流程協(xié)作方法的總體流程示意圖;
圖5-7是本發(fā)明的較佳的實施例中,于圖4的基礎(chǔ)上,業(yè)務(wù)流程協(xié)作方法的分步驟流程示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
需要說明的是,在不沖突的情況下,本發(fā)明中的實施例及實施例中的特征可以相互組合。
下面結(jié)合附圖和具體實施例對本發(fā)明作進一步說明,但不作為本發(fā)明的限定。
基于現(xiàn)有技術(shù)中存在的上述問題,現(xiàn)提供一種分布式程序的的業(yè)務(wù)流程協(xié)作系統(tǒng),該系統(tǒng)適用于多進程執(zhí)行異步的業(yè)務(wù)流程的過程中,上文中所述的“分布式程序”可以理解為一個業(yè)務(wù)流程由多個不同的程序(或者進程)異步執(zhí)行。
則該系統(tǒng)具體如圖1所示,包括:
注冊服務(wù)端1和多個客服端2,注冊服務(wù)端1分別與多個客服端2連接;
具體地,每個客服端1中分別包括:
連接單元11,客服端1通過連接單元11與注冊服務(wù)端2之間建立長連接;
流程申請單元12,連接連接單元11,在需要開啟新的業(yè)務(wù)流程時,客服端1通過流程申請單元12向注冊服務(wù)端2發(fā)送業(yè)務(wù)流程的開啟申請,注冊服務(wù)端2在接收到開啟申請后生成并保存一唯一對應(yīng)業(yè)務(wù)流程的第一標記信息;
每個業(yè)務(wù)流程中包括至少一個客服端1執(zhí)行的流程操作,不同的客服端1執(zhí)行的流程操作之間具有預設(shè)的執(zhí)行順序;
第一標記信息中包括客服端1執(zhí)行業(yè)務(wù)流程的執(zhí)行狀態(tài);
更改單元13,連接連接單元11,用于在客服端1完成流程操作后更改注冊服務(wù)端2中保存的第一標記信息中的執(zhí)行狀態(tài);
監(jiān)聽單元14,連接連接單元11,用于持續(xù)監(jiān)聽注冊服務(wù)端中保存的客服端1所關(guān)聯(lián)的業(yè)務(wù)流程對應(yīng)的第一標記信息,并在上一個執(zhí)行順序的客服端1的執(zhí)行狀態(tài)被更改時開始執(zhí)行流程操作;
終止單元15,分別連接連接單元11、更改單元13和監(jiān)聽單元14,用于在更改單元13更改執(zhí)行狀態(tài)后,終止監(jiān)聽單元14對第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)。
具體地,本實施例中,上述每個客服端1分別用于執(zhí)行異步的業(yè)務(wù)流程中的一個流程操作,換言之,每個客服端1可以為上文中所述的多個分布式程序或進程中的一個。
例如,pos機將刷卡收單請求發(fā)送至后臺的交易前置系統(tǒng),該交易前置系統(tǒng)會根據(jù)業(yè)務(wù)規(guī)則向各個客服端1檢查該筆收單交易是否滿足預設(shè)的交易條件,則業(yè)務(wù)流程協(xié)作系統(tǒng)會產(chǎn)生每筆收單交易所關(guān)聯(lián)的第一標記信息,等各個客服端1完成交易校驗后產(chǎn)生對應(yīng)的第一標記信息的值并進行一一對應(yīng)。在完成所有業(yè)務(wù)規(guī)則的校驗之后,通知到上述交易前置系統(tǒng)中處理結(jié)果。
又例如,業(yè)務(wù)流程協(xié)作系統(tǒng)在調(diào)用短信服務(wù)時,在某些特殊場景下需要保證短信已經(jīng)到達,以及了解短信發(fā)送到接收之間的間隔時間。上述信息可以通過循環(huán)查詢短信服務(wù)商在本地搭建的短信數(shù)據(jù)庫,或者接收短信服務(wù)商返回的成功收到短信的結(jié)果消息獲知。業(yè)務(wù)流程協(xié)作系統(tǒng)在發(fā)送短信以及發(fā)送短信線程同步等待短信已接收結(jié)果后,再執(zhí)行業(yè)務(wù)流程協(xié)作系統(tǒng)中的后續(xù)流程。
本實施例中,上述注冊服務(wù)端2為使用netty(一種java開源框架)技術(shù)開發(fā)的非阻塞的tcp(transmissioncontrolprotocol,傳輸控制協(xié)議)服務(wù)器。
則本實施例中,在客服端1執(zhí)行業(yè)務(wù)流程中的流程操作之前,客服端1首先應(yīng)當與注冊服務(wù)端2之間建立長連接,該長連接的建立由連接單元11實現(xiàn)。
本實施例中,在建立長連接之后,若客服端1想要開啟一個新的業(yè)務(wù)流程,則該客服端1會通過流程申請單元12向注冊服務(wù)端2遞交開啟申請。若客服端1只負責執(zhí)行業(yè)務(wù)流程中的某個流程操作,則該客服端1只需要持續(xù)監(jiān)聽注冊服務(wù)端2即可(在下文中會詳述)。
本實施例中,注冊服務(wù)端2在接收到上述客服端1遞交的開啟申請后,會針對該新開啟的業(yè)務(wù)流程生成一個唯一的第一標記信息并保存。本發(fā)明的一個實施例中,上述第一標記信息可以為一個具有唯一標識的token(令牌)。所謂token,是一種在令牌環(huán)網(wǎng)中能夠控制站點占有媒體的特殊幀,則上述關(guān)聯(lián)于一個業(yè)務(wù)流程的token中可以包括該業(yè)務(wù)流程中各個流程操作當前的操作狀態(tài)。
本實施例中,上述注冊服務(wù)端2在保存第一標記信息后,客服端1會將該第一標記信息的相關(guān)信息(在下文中會詳述)在不同的客服端1之間進行傳遞,因此多個上述業(yè)務(wù)流程相關(guān)的客服端1都能夠通過其監(jiān)聽單元14監(jiān)聽到第一標記信息的狀態(tài)變化。
本實施例中,上述正在執(zhí)行流程操作的客服端1在該流程操作執(zhí)行完畢后,會主動查詢得到上述第一標記信息并進行更改,具體為更改該第一標記信息中關(guān)聯(lián)于該客服端1進行的流程操作的執(zhí)行狀態(tài),例如將其改成執(zhí)行完畢。則上述多個監(jiān)聽該第一標記信息的客服端1就能夠獲知此時業(yè)務(wù)流程的執(zhí)行進度。
本實施例中,基于上文中所述的預設(shè)的執(zhí)行順序,監(jiān)聽第一標記信息的客服端1在監(jiān)聽到上一個執(zhí)行順序?qū)?yīng)的客服端1的執(zhí)行狀態(tài)發(fā)生了變化(例如執(zhí)行結(jié)束),則該客服端1開啟自身的流程操作,從而在異步的業(yè)務(wù)流程中實現(xiàn)有序有狀態(tài)的業(yè)務(wù)執(zhí)行過程。
本實施例中,對于已經(jīng)完成流程操作的客服端1而言,其可以通過終止單元15終止其對第一標記信息進行監(jiān)聽的狀態(tài),從而釋放相關(guān)資源。
本發(fā)明的較佳的實施例中,如圖2所示,上述連接單元11包括:
加載模塊111,用于加載客服端的配置文件,并于配置文件中獲取注冊服務(wù)端2的服務(wù)地址;
第一申請模塊112,連接加載模塊111,用于根據(jù)服務(wù)地址向注冊服務(wù)端2發(fā)送申請建立長連接的連接請求;
連接模塊113,用于在注冊服務(wù)端2批準連接請求后與注冊服務(wù)端2之間建立長連接;
接收模塊114,用于在與注冊服務(wù)端2之間建立長連接后獲取注冊服務(wù)端反饋的唯一對應(yīng)客服端1的客服端標識信息。
具體地,本實施例中,上述客服端1與注冊服務(wù)端2之間建立長連接之前,客服端1首先通過上述加載模塊11加載配置文件,該配置文件中包括注冊服務(wù)端2的服務(wù)地址,則上述客服端1在加載配置文件的時候獲取上述服務(wù)地址。
本實施例中,上述客服端1隨后根據(jù)獲取的服務(wù)地址向注冊服務(wù)端2發(fā)送一申請建立長連接的連接請求。注冊服務(wù)端2接收到連接請求后,與客服端1之間建立長連接,隨后注冊服務(wù)端2會根據(jù)每個建立長連接的客服端1生成一個唯一標識該客服端1的客服端標識信息。注冊服務(wù)端2向客服端1下發(fā)客服端標識信息??头?通過接收模塊114獲取該客服端標識信息并保存。
本發(fā)明的較佳的實施例中,上述申請開啟業(yè)務(wù)流程的客服端1會根據(jù)開啟申請生成一第二標記信息,該第二標記信息與第一標記信息一一對應(yīng);
上述多個客服端1之間相互連接,并于多個關(guān)聯(lián)于已經(jīng)開啟的業(yè)務(wù)流程的客服端1之間相互傳遞第二標記信息;
則仍然如圖1所示,上述每個客服端1中還包括:
執(zhí)行單元16,連接流程申請單元12,用于執(zhí)行業(yè)務(wù)流程中對應(yīng)于客服端1的流程操作;
查詢單元17,分別連接執(zhí)行單元16和更改單元13,并連接上述連接單元11,用于在執(zhí)行單元的流程操作執(zhí)行完畢時,根據(jù)第二標記信息查詢得到注冊服務(wù)端2中對應(yīng)業(yè)務(wù)流程的第一標記信息,輸出相應(yīng)的查詢結(jié)果;
則上述更改單元13根據(jù)查詢單元17輸出的查詢結(jié)果,在執(zhí)行單元16的流程操作執(zhí)行完畢時將第一標記信息中的執(zhí)行狀態(tài)更改為執(zhí)行結(jié)束。
具體地,本發(fā)明的較佳的實施例中,當申請開啟業(yè)務(wù)流程的客服端1向注冊服務(wù)端2發(fā)送開啟申請時,該客服端1同時會根據(jù)該開啟申請生成一個第二標記信息,該第二標記信息與上述開啟申請對應(yīng)的第一標記信息一一對應(yīng)。換言之,客服端1可以通過該第二標記信息查詢得到注冊服務(wù)端2生成的第一標記信息。
隨后,該客服端1將上述第二標記信息在其他關(guān)聯(lián)于上述業(yè)務(wù)流程的客服端1之間傳遞,即所有關(guān)聯(lián)于上述業(yè)務(wù)流程(即在上述業(yè)務(wù)流程中負責某個流程操作)的客服端1均能夠獲得上述第二標記信息。
在某個客服端1執(zhí)行完其流程操作后,該客服端1通過其獲得的第二標記信息查詢注冊服務(wù)端2中保存的相應(yīng)的第一標記信息,隨后將該第一標記信息中對應(yīng)該客服端1的流程操作的執(zhí)行狀態(tài)修改為執(zhí)行完畢。
則其他監(jiān)聽該第一標記信息的客服端1根據(jù)上述第一標記信息的變化確定是否需要進行自身的流程操作。
本發(fā)明的較佳的實施例中,如圖3所示,上述終止單元15具體包括:
第二申請模塊151,用于向注冊服務(wù)端2提出終止監(jiān)聽單元14對第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)的終止申請;
終止模塊152,用于在獲取注冊服務(wù)端2針對終止申請的反饋后終止監(jiān)聽單元14對第一標記信息進行持續(xù)監(jiān)聽的狀態(tài);
刪除模塊153,連接終止模塊152,用于在終止監(jiān)聽單元14對第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)后,刪除對第一標記信息進行監(jiān)聽的監(jiān)聽事件。
具體地,本發(fā)明的較佳的實施例中,上述終止單元15通過向注冊服務(wù)端2發(fā)送終止申請的方式請求終止對注冊服務(wù)端2中的第一標記信息進行監(jiān)聽的狀態(tài),并在監(jiān)聽結(jié)束后刪除對上述第一標記信息進行監(jiān)聽的相關(guān)的監(jiān)聽事件。
本發(fā)明的較佳的實施例中,當該業(yè)務(wù)流程中所有的客服端1均完成流程操作后,注冊服務(wù)端2會刪除該業(yè)務(wù)流程對應(yīng)的第一標記信息。
本發(fā)明的較佳的實施例中,仍然如圖1中所示,上述業(yè)務(wù)流程協(xié)作系統(tǒng)中還包括一監(jiān)控端3,該監(jiān)控端3連接注冊服務(wù)端2,用于監(jiān)控與注冊服務(wù)端2建立長連接的客服端1的工作狀態(tài),以及正在執(zhí)行的業(yè)務(wù)流程的執(zhí)行狀態(tài)。
具體地,本發(fā)明的較佳的實施例中,上述監(jiān)控端3可以通過監(jiān)控注冊服務(wù)端2內(nèi)生成的客服端標識信息來獲取與注冊服務(wù)端2建立長連接的客服端1的數(shù)量,并且可以通過查詢注冊服務(wù)端2內(nèi)的第一標記信息來獲取當前正在進行的業(yè)務(wù)流程中各流程操作的執(zhí)行狀態(tài)。上述信息可以顯示在監(jiān)控端3的顯示屏上以供使用者查看。
本發(fā)明的一個較佳的實施例中,詳細描述一個業(yè)務(wù)流程從啟動到順序運行的過程:
客服端1啟動時,首先加載配置文件并且獲取注冊服務(wù)端2的服務(wù)地址。獲取到服務(wù)地址后,客服端1會嘗試申請并成功與注冊服務(wù)端2之間建立長連接。若連接中斷,則客服端1會嘗試再次建立連接。建立長連接后,客服端1會獲得注冊服務(wù)端2反饋的唯一標注客戶端1的客服端標識信息。
標注好客服端1后,客服端1會發(fā)起業(yè)務(wù)流程請求,該請求發(fā)送到注冊服務(wù)端后會生成關(guān)聯(lián)于該業(yè)務(wù)流程的第一標記信息(token),同時在客服端1根據(jù)發(fā)起業(yè)務(wù)流程請求的參數(shù)生成第二標記信息(token唯一標識)。這時客服端1會啟動其他進程的異步代碼并且在客服端1之間傳遞第二標記信息。
當其他進程的異步代碼邏輯結(jié)束后(客服端1的流程操作執(zhí)行完畢),客服端1會用第二標記信息查詢注冊服務(wù)端2的第一標記信息,并且改變第一標記信息中相應(yīng)的執(zhí)行狀態(tài)的狀態(tài)值,最后結(jié)束代碼塊。
隨后該客服端1會觸發(fā)狀態(tài)改變事件,供回調(diào)后續(xù)業(yè)務(wù)邏輯,等后續(xù)業(yè)務(wù)邏輯完成后注銷對于第一標記信息的監(jiān)聽事件,注冊服務(wù)端2會刪除被注銷監(jiān)聽事件的第一標記信息的相關(guān)數(shù)據(jù)。
本發(fā)明的較佳的實施例中,基于上文中所述的業(yè)務(wù)流程協(xié)作系統(tǒng),現(xiàn)提供一種分布式程序的業(yè)務(wù)流程協(xié)作方法,該方法中包括注冊服務(wù)端和多個客服端,注冊服務(wù)端分別與多個客服端連接,還包括如圖4中所示的下述步驟:
步驟s1,客服端與注冊服務(wù)端建立長連接;
步驟s2,在需要開啟新的業(yè)務(wù)流程時,客服端向注冊服務(wù)端發(fā)送業(yè)務(wù)流程的開啟申請,注冊服務(wù)端在接收到開啟申請后生成并保存一唯一對應(yīng)業(yè)務(wù)流程的第一標記信息;
每個業(yè)務(wù)流程中包括至少一個客服端執(zhí)行的流程操作,不同的客服端執(zhí)行的流程操作之間具有預設(shè)的執(zhí)行順序;
第一標記信息中包括客服端執(zhí)行業(yè)務(wù)流程的執(zhí)行狀態(tài);
步驟s3,在客服端完成流程操作后,客服端更改注冊服務(wù)端中保存的第一標記信息中的執(zhí)行狀態(tài);
客服端持續(xù)監(jiān)聽注冊服務(wù)端中保存的客服端所關(guān)聯(lián)的業(yè)務(wù)流程對應(yīng)的第一標記信息,并在上一個執(zhí)行順序的客服端的執(zhí)行狀態(tài)被更改時開始執(zhí)行流程操作;以及
在更改單元更改執(zhí)行狀態(tài)后,客服端終止監(jiān)聽單元對第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)。
本發(fā)明的較佳的實施例中,如圖5中所示,上述步驟s1具體包括:
步驟s11,客服端加載配置文件,并于配置文件中獲取注冊服務(wù)端的服務(wù)地址;
步驟s12,客服端根據(jù)服務(wù)地址向注冊服務(wù)端發(fā)送申請建立長連接的連接請求;
步驟s13,在注冊服務(wù)端批準連接請求后,客服端與注冊服務(wù)端之間建立長連接;
步驟s14,在與注冊服務(wù)端之間建立長連接后,客服端獲取注冊服務(wù)端反饋的唯一對應(yīng)客服端的客服端標識信息,隨后轉(zhuǎn)向步驟s2。
本發(fā)明的較佳的實施例中,如圖6中所示,上述步驟s3具體包括:
步驟s31,客服端執(zhí)行業(yè)務(wù)流程中對應(yīng)的流程操作,并在完成流程操作后轉(zhuǎn)向步驟s32;
步驟s32,客服端查詢得到注冊服務(wù)端中對應(yīng)業(yè)務(wù)流程的第一標記信息,輸出相應(yīng)的查詢結(jié)果;
步驟s33,客服端根據(jù)查詢結(jié)果將第一標記信息中的執(zhí)行狀態(tài)更改為執(zhí)行結(jié)束,隨后轉(zhuǎn)向步驟s4。
本發(fā)明的較佳的實施例中,上述客服端終止監(jiān)聽單元對第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)的步驟具體如圖7中所示,包括:
步驟a1,客服端向注冊服務(wù)端提出終止對第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)的終止申請;
步驟a2,注冊服務(wù)端在獲取注冊服務(wù)端針對終止申請的反饋后終止監(jiān)聽單元對第一標記信息進行持續(xù)監(jiān)聽的狀態(tài);
步驟a3,在終止監(jiān)聽單元對第一標記信息進行持續(xù)監(jiān)聽的狀態(tài)后,客服端刪除對第一標記信息進行監(jiān)聽的監(jiān)聽事件。
本發(fā)明的較佳的實施例中,于客服端和注冊服務(wù)端之間建立長連接并執(zhí)行流程操作的同時,設(shè)置一連接注冊服務(wù)端的監(jiān)控端,并采用監(jiān)控端監(jiān)控與注冊服務(wù)端建立長連接的客服端的工作狀態(tài),以及正在執(zhí)行的業(yè)務(wù)流程的執(zhí)行狀態(tài)。
以上所述僅為本發(fā)明較佳的實施例,并非因此限制本發(fā)明的實施方式及保護范圍,對于本領(lǐng)域技術(shù)人員而言,應(yīng)當能夠意識到凡運用本發(fā)明說明書及圖示內(nèi)容所作出的等同替換和顯而易見的變化所得到的方案,均應(yīng)當包含在本發(fā)明的保護范圍內(nèi)。