流程引擎平臺化觸發(fā)方法
【專利摘要】本發(fā)明涉及流程引擎平臺化觸發(fā)方法,應(yīng)用于流程引擎平臺與業(yè)務(wù)系統(tǒng)之間,包括:業(yè)務(wù)系統(tǒng)接收數(shù)據(jù)請求,對符合預(yù)設(shè)條件的數(shù)據(jù)請求生成相應(yīng)的唯一編碼,并將該數(shù)據(jù)請求發(fā)送至流程引擎平臺中的數(shù)據(jù)庫保存;流程引擎平臺根據(jù)數(shù)據(jù)請求中的執(zhí)行特性將該數(shù)據(jù)請求分配至相應(yīng)的流程節(jié)點并創(chuàng)建環(huán)節(jié)事件;流程引擎平臺直接執(zhí)行或通過API接口執(zhí)行與該環(huán)節(jié)事件對應(yīng)的觸發(fā)器,以使該觸發(fā)器發(fā)送通知至流程節(jié)點所對應(yīng)的用戶;流程引擎平臺具有API接口,業(yè)務(wù)系統(tǒng)中設(shè)有與流程引擎平臺的API接口通信的基于SOA的API接口。本發(fā)明不依賴消息平臺,增強了系統(tǒng)的穩(wěn)定性。業(yè)務(wù)邏輯和消息格式可根據(jù)自己的實際業(yè)務(wù)進行定義,不用和流程引擎平臺事先協(xié)商。
【專利說明】
流程引擎平臺化觸發(fā)方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及流程引擎平臺化觸發(fā)方法。
【背景技術(shù)】
[0002]業(yè)務(wù)建模是以軟件模型方式描述企業(yè)管理和業(yè)務(wù)所涉及的對象和要素、以及它們的屬性、行為和彼此關(guān)系,其目的是為了更好的展現(xiàn)、分析、規(guī)劃、涉及企業(yè)的業(yè)務(wù)流程,以及涉及和構(gòu)架企業(yè)請求系統(tǒng)。
[0003]流程引擎是系統(tǒng)中業(yè)務(wù)實現(xiàn)的強大邏輯層,不僅本身運行機制邏輯復(fù)雜,還有保障業(yè)務(wù)邏輯和自身邏輯系統(tǒng)工作,數(shù)據(jù)一致。因此必須尋求一致方式,來保證數(shù)據(jù)的完整性和一致性。在分布式的架構(gòu)中,流程引擎和業(yè)務(wù)系統(tǒng)是分離構(gòu)建。但流程的處理往往又是和業(yè)務(wù)邏輯緊密結(jié)合的,例如訂單審核通過后,需要短信通知下單人等業(yè)務(wù)需求。這類需求的共同特點就是業(yè)務(wù)方需要流程引擎在特定事件發(fā)生時,觸發(fā)特定的業(yè)務(wù)操作。如果引擎和業(yè)務(wù)系統(tǒng)耦合則不存在實現(xiàn)問題,但如果引擎是平臺化的,與業(yè)務(wù)系統(tǒng)分離構(gòu)建,在現(xiàn)有技術(shù)中是采用發(fā)生消息通知業(yè)務(wù)系統(tǒng)的方式作為聯(lián)系業(yè)務(wù)系統(tǒng)和流程引擎的橋梁。
[0004]但是這種做法需要依賴消息平臺,當(dāng)事件發(fā)生時發(fā)送消息到業(yè)務(wù)系統(tǒng),業(yè)務(wù)系統(tǒng)根據(jù)分析消息內(nèi)容,判斷要執(zhí)行相應(yīng)業(yè)務(wù)操作,所帶來的缺陷是其穩(wěn)定性取決于消息平臺的穩(wěn)定性,消息格式需要與流程引擎平臺協(xié)商事先約定,擴展性不強;如果愿意系統(tǒng)出氣并未平臺化,后期業(yè)務(wù)擴展,需要改造成平臺化會很復(fù)雜;業(yè)務(wù)系統(tǒng)需要增加消息響應(yīng)機制。
【發(fā)明內(nèi)容】
[0005]針對上述技術(shù)問題,本發(fā)明的目的在于提供一種流程引擎平臺化觸發(fā)方法,其不依賴消息平臺,擴展性強。
[0006]為實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
[0007]流程引擎平臺化觸發(fā)方法,應(yīng)用于流程引擎平臺與業(yè)務(wù)系統(tǒng)之間,包括如下步驟:
[0008]步驟一:業(yè)務(wù)系統(tǒng)接收數(shù)據(jù)請求,對符合預(yù)設(shè)條件的數(shù)據(jù)請求生成相應(yīng)的唯一編碼,并將該數(shù)據(jù)請求發(fā)送至流程引擎平臺中的數(shù)據(jù)庫保存;
[0009]步驟二:流程引擎平臺根據(jù)數(shù)據(jù)請求中的執(zhí)行特性將該數(shù)據(jù)請求分配至相應(yīng)的流程節(jié)點并創(chuàng)建環(huán)節(jié)事件;
[0010]步驟三:流程引擎平臺直接執(zhí)行或通過API接口執(zhí)行與該環(huán)節(jié)事件對應(yīng)的觸發(fā)器,以使該觸發(fā)器發(fā)送通知至流程節(jié)點所對應(yīng)的用戶;
[0011]其中,流程引擎平臺具有API接口,業(yè)務(wù)系統(tǒng)中設(shè)有與流程引擎平臺的API接口通信的基于SOA的API接口。
[0012]優(yōu)選的,所述步驟一具體包括如下子步驟:
[0013]步驟11:業(yè)務(wù)系統(tǒng)接收數(shù)據(jù)請求,判斷該數(shù)據(jù)請求是否符合預(yù)設(shè)條件,若是,執(zhí)行步驟12,否則,將該數(shù)據(jù)請求退回至提出數(shù)據(jù)請求的發(fā)起方;
[0014]步驟12:將該數(shù)據(jù)請求生成相應(yīng)的唯一編碼,并將該數(shù)據(jù)請求發(fā)送至流程引擎平臺中的數(shù)據(jù)庫保存。
[0015]優(yōu)選的,步驟三中,當(dāng)與環(huán)節(jié)事件對應(yīng)的觸發(fā)器設(shè)于流程引擎平臺中,流程引擎平臺直接執(zhí)行該觸發(fā)器;當(dāng)與環(huán)節(jié)事件對應(yīng)的觸發(fā)器設(shè)于業(yè)務(wù)系統(tǒng)中,流程引擎平臺通過API接口執(zhí)行該觸發(fā)器。
[0016]優(yōu)選的,所述步驟三中“通過API接口執(zhí)行與該環(huán)節(jié)事件對應(yīng)的觸發(fā)器”具體包括如下子步驟:
[0017]步驟a:流程引擎平臺獲取與該環(huán)節(jié)事件對應(yīng)的觸發(fā)器的名稱,對該名稱進行封裝得到基于SOA的函數(shù)返回值;
[0018]步驟b:將封裝好的基于SOA的函數(shù)返回值通過API接口返回至業(yè)務(wù)系統(tǒng)中;
[0019]步驟c:業(yè)務(wù)系統(tǒng)根據(jù)該基于SOA的函數(shù)返回值直接執(zhí)行與環(huán)節(jié)事件對應(yīng)的觸發(fā)器,以使該觸發(fā)器發(fā)送通知至流程節(jié)點所對應(yīng)的用戶。
[0020]優(yōu)選的,所述觸發(fā)器的名稱為class全路徑名稱。
[0021]優(yōu)選的,所述觸發(fā)器的名稱為spring的beanID。
[0022]相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:
[0023]本發(fā)明不依賴消息平臺,增強了系統(tǒng)的穩(wěn)定性。業(yè)務(wù)邏輯和消息格式可根據(jù)自己的實際業(yè)務(wù)進行定義,不用和流程引擎平臺事先協(xié)商。
【附圖說明】
[0024]圖1為本發(fā)明的流程引擎平臺化觸發(fā)方法的流程圖。
【具體實施方式】
[0025]下面,結(jié)合附圖以及【具體實施方式】,對本發(fā)明做進一步描述:
[0026]流程引擎作為應(yīng)用系統(tǒng)的一部分,并為之提供對各應(yīng)用系統(tǒng)有決定作用的、并根據(jù)角色、分工和條件的不同信息傳遞路由、內(nèi)容等級等核心解決方案。工作流引擎包括了流程的節(jié)點里、流向管理、時限管理等重要功能,是系統(tǒng)中業(yè)務(wù)實現(xiàn)的強大邏輯層。API是應(yīng)用程序編程接口,是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機制的細節(jié)。SOA為面向服務(wù)的體系結(jié)構(gòu),是一個組件模型,它將應(yīng)用程序的不同功能單一(稱為服務(wù))通過這些服務(wù)之間定義良好的接口和契約關(guān)系聯(lián)系起來,接口是采用中立的方式定義的,它應(yīng)該獨立于實現(xiàn)服務(wù)的硬件平臺、操作系統(tǒng)和編程語音,使得構(gòu)建在各種各樣的系統(tǒng)中服務(wù)可以使用一種統(tǒng)一和通用的方式進行交互。
[0027]參見圖1,本發(fā)明提供一種流程引擎平臺化觸發(fā)方法,通過設(shè)置編碼器解決以往需要依賴消息平臺將流程引擎平臺與業(yè)務(wù)系統(tǒng)聯(lián)系起來的缺陷,編碼器實際是編程好的處理程序語言,可以分為本地觸發(fā)器和遠程觸發(fā)器,其包括如下步驟:
[0028]步驟S1:業(yè)務(wù)系統(tǒng)接收數(shù)據(jù)請求,對符合預(yù)設(shè)條件的數(shù)據(jù)請求生成相應(yīng)的唯一編碼,并將該數(shù)據(jù)請求發(fā)送至流程引擎平臺中的數(shù)據(jù)庫保存;本步驟屬于業(yè)務(wù)處理,將本次數(shù)據(jù)請求進行保存,該保存包括緩存,用于后續(xù)階段失敗時該數(shù)據(jù)請求還原操作使用。在數(shù)據(jù)庫都持久化了每個數(shù)據(jù)請求的唯一編碼,使得數(shù)據(jù)不會因并發(fā)導(dǎo)致還原錯誤。
[0029]對于步驟SI,可具體分為如下步驟:
[0030]步驟11:接收數(shù)據(jù)請求,判斷該數(shù)據(jù)請求是否符合預(yù)設(shè)條件,若是,執(zhí)行步驟12,否貝1J,將該數(shù)據(jù)請求退回至提出數(shù)據(jù)請求的發(fā)起方;發(fā)起方提出數(shù)據(jù)請求,系統(tǒng)接到數(shù)據(jù)請求之后進行判斷是否符合預(yù)設(shè)條件;
[0031]步驟12:將該數(shù)據(jù)請求生成相應(yīng)的唯一編碼,并將該數(shù)據(jù)請求保存至數(shù)據(jù)庫中。通過生成唯一編碼,讓系統(tǒng)可以快速判斷并避免同時操作同一流程。
[0032]步驟S2:流程引擎平臺根據(jù)數(shù)據(jù)請求中的執(zhí)行特性將該數(shù)據(jù)請求分配至相應(yīng)的流程節(jié)點并創(chuàng)建環(huán)節(jié)事件;
[0033]流程引擎平臺內(nèi)有業(yè)務(wù)相關(guān)代碼和頁面,例如,發(fā)起的數(shù)據(jù)請求為請假,發(fā)起方通過業(yè)務(wù)系統(tǒng)創(chuàng)建數(shù)據(jù)請求,業(yè)務(wù)系統(tǒng)會發(fā)送給流程引擎平臺處理。而發(fā)起方申請請假,包括了執(zhí)行特性,如請假一天,該天數(shù)即是執(zhí)行特性。
[0034]發(fā)起方發(fā)起請假一天的請求,首先判斷該發(fā)起方還是否有年假,如果有才執(zhí)行下一步流程,如果沒有,就直接退回至發(fā)起方,這里的是否還有年假就是判斷是否符合預(yù)設(shè)條件,假如年假足夠時(足夠年假即為預(yù)設(shè)條件),在流程引擎平臺內(nèi)預(yù)設(shè)的請假業(yè)務(wù)代碼為請假大于一天時分配至經(jīng)理審核的流程節(jié)點,當(dāng)請假天數(shù)等于一天或一天之內(nèi)的分配至主管審核的流程節(jié)點,因而在本舉例中,將數(shù)據(jù)請求分配至主管審核的流程節(jié)點,并創(chuàng)建環(huán)節(jié)事件。
[0035]步驟S3:流程引擎平臺直接執(zhí)行或通過API接口執(zhí)行與該環(huán)節(jié)事件對應(yīng)的觸發(fā)器,以使該觸發(fā)器發(fā)送通知至流程節(jié)點所對應(yīng)的用戶;
[0036]其中,流程引擎平臺具有API接口,業(yè)務(wù)系統(tǒng)中設(shè)有與流程引擎平臺的API接口通信的基于SOA的API接口。
[0037]在步驟S3中,分兩種情況。第一種情況,當(dāng)與環(huán)節(jié)事件對應(yīng)的觸發(fā)器設(shè)于流程引擎平臺中,流程引擎平臺直接執(zhí)行該觸發(fā)器;這種情況屬于集成部署方式,也就是業(yè)務(wù)系統(tǒng)中的業(yè)務(wù)代碼和流程引擎平臺的核心代碼放在一個WEB服務(wù)器中,此時該觸發(fā)器即是本地觸發(fā)器,此時,當(dāng)發(fā)起方的數(shù)據(jù)請求進入至主管審核的流程節(jié)點,由于該觸發(fā)器的代碼和流程引擎平臺的核心代碼都在WEB服務(wù)器中,可直接運行,因此流程引擎平臺只需獲取觸發(fā)器的名稱就可直接執(zhí)行該觸發(fā)器。
[0038]第二種情況,當(dāng)與環(huán)節(jié)事件對應(yīng)的觸發(fā)器設(shè)于業(yè)務(wù)系統(tǒng)中,流程引擎平臺通過API接口執(zhí)行該觸發(fā)器。這種情況下屬于分布式方式部署,也就是說,業(yè)務(wù)系統(tǒng)的業(yè)務(wù)代碼和流程引擎平臺的核心代碼分別處于不同的WEB處理器。由于觸發(fā)器的代碼和流程引擎平臺的核心代碼是分開部署,流程引擎平臺只有定義信息,不可以直接運行,因此流程引擎平臺獲取與該環(huán)節(jié)事件對應(yīng)的觸發(fā)器的名稱,對該名稱進行封裝得到基于SOA的函數(shù)返回值,通過API接口將該封裝好的基于SOA的函數(shù)返回值返回至業(yè)務(wù)系統(tǒng)中,在業(yè)務(wù)系統(tǒng)中的SOA架構(gòu)為流程引擎S0A,因而該流程引擎SOA拿到返回值時可直接執(zhí)行該觸發(fā)器,達到了流程在流程引擎平臺流轉(zhuǎn),而觸發(fā)器在業(yè)務(wù)系統(tǒng)執(zhí)行的目的,這種觸發(fā)器也就是遠程觸發(fā)器。
[0039]執(zhí)行觸發(fā)器后,可發(fā)送通知至對應(yīng)流程節(jié)點的用戶,提醒該用戶對數(shù)據(jù)請求進行處理。
[0040]流程引擎平臺的API接口和業(yè)務(wù)系統(tǒng)中基于SOA的API接口為統(tǒng)一接口,通過Spring的接口注入機制,統(tǒng)一核心接口實現(xiàn)兩套,分別是上述的兩個接口。方便系統(tǒng)實施部署時可做到嵌入式(集成式)部署和分布式平臺部署靈活切換,只需要放入對應(yīng)實現(xiàn)的封裝好的jar機殼,同時,也可以簡化開發(fā)環(huán)境的搭建,使得開發(fā)環(huán)境簡潔,無需因為現(xiàn)場是分布式平臺部署,開發(fā)人員就必須搭建分布式平臺部署的開發(fā)環(huán)境才能開發(fā)。由于兩種部署方式都是API兼容的,因此可以在嵌入式部署的簡單開發(fā)環(huán)境下開發(fā)流程,直接可將開發(fā)好的流程代碼升級到現(xiàn)場分布式平臺部署正式運營環(huán)境中運行。
[0041 ]觸發(fā)器的名稱為class全路徑名稱或spring的beanID,這種名稱簡單,同時可支持spring框架和非spring框架開發(fā),無線另外一套唯一標(biāo)示規(guī)則,就能達到編碼唯一。
[0042]對本領(lǐng)域的技術(shù)人員來說,可根據(jù)以上描述的技術(shù)方案以及構(gòu)思,做出其它各種相應(yīng)的改變以及形變,而所有的這些改變以及形變都應(yīng)該屬于本發(fā)明權(quán)利要求的保護范圍之內(nèi)。
【主權(quán)項】
1.流程引擎平臺化觸發(fā)方法,應(yīng)用于流程引擎平臺與業(yè)務(wù)系統(tǒng)之間,其特征在于,包括如下步驟: 步驟一:業(yè)務(wù)系統(tǒng)接收數(shù)據(jù)請求,對符合預(yù)設(shè)條件的數(shù)據(jù)請求生成相應(yīng)的唯一編碼,并將該數(shù)據(jù)請求發(fā)送至流程引擎平臺中的數(shù)據(jù)庫保存; 步驟二:流程引擎平臺根據(jù)數(shù)據(jù)請求中的執(zhí)行特性將該數(shù)據(jù)請求分配至相應(yīng)的流程節(jié)點并創(chuàng)建環(huán)節(jié)事件; 步驟三:流程引擎平臺直接執(zhí)行或通過API接口執(zhí)行與該環(huán)節(jié)事件對應(yīng)的觸發(fā)器,以使該觸發(fā)器發(fā)送通知至流程節(jié)點所對應(yīng)的用戶; 其中,流程引擎平臺具有API接口,業(yè)務(wù)系統(tǒng)中設(shè)有與流程引擎平臺的API接口通信的基于SOA的API接口。2.如權(quán)利要求1所述的流程引擎平臺化觸發(fā)方法,其特征在于,所述步驟一具體包括如下子步驟: 步驟11:業(yè)務(wù)系統(tǒng)接收數(shù)據(jù)請求,判斷該數(shù)據(jù)請求是否符合預(yù)設(shè)條件,若是,執(zhí)行步驟12,否則,將該數(shù)據(jù)請求退回至提出數(shù)據(jù)請求的發(fā)起方; 步驟12:將該數(shù)據(jù)請求生成相應(yīng)的唯一編碼,并將該數(shù)據(jù)請求發(fā)送至流程引擎平臺中的數(shù)據(jù)庫保存。3.如權(quán)利要求1所述的流程引擎平臺化觸發(fā)方法,其特征在于,步驟三中,當(dāng)與環(huán)節(jié)事件對應(yīng)的觸發(fā)器設(shè)于流程引擎平臺中,流程引擎平臺直接執(zhí)行該觸發(fā)器;當(dāng)與環(huán)節(jié)事件對應(yīng)的觸發(fā)器設(shè)于業(yè)務(wù)系統(tǒng)中,流程引擎平臺通過API接口執(zhí)行該觸發(fā)器。4.如權(quán)利要求1所述的流程引擎平臺化觸發(fā)方法,其特征在于,所述步驟三中“通過API接口執(zhí)行與該環(huán)節(jié)事件對應(yīng)的觸發(fā)器”具體包括如下子步驟: 步驟a:流程引擎平臺獲取與該環(huán)節(jié)事件對應(yīng)的觸發(fā)器的名稱,對該名稱進行封裝得到基于SOA的函數(shù)返回值; 步驟b:將封裝好的基于SOA的函數(shù)返回值通過API接口返回至業(yè)務(wù)系統(tǒng)中; 步驟c:業(yè)務(wù)系統(tǒng)根據(jù)該基于SOA的函數(shù)返回值直接執(zhí)行與環(huán)節(jié)事件對應(yīng)的觸發(fā)器,以使該觸發(fā)器發(fā)送通知至流程節(jié)點所對應(yīng)的用戶。5.如權(quán)利要求4所述的流程引擎平臺化觸發(fā)方法,其特征在于,所述觸發(fā)器的名稱為class全路徑名稱。6.如權(quán)利要求4所述的流程引擎平臺化觸發(fā)方法,其特征在于,所述觸發(fā)器的名稱為spring的beanIDo
【文檔編號】G06F9/44GK105893055SQ201610261402
【公開日】2016年8月24日
【申請日】2016年4月22日
【發(fā)明人】楊學(xué)剛, 楊志成, 曹雄, 朱江, 凌宏喜, 樊冠群, 任占山
【申請人】廣東凱通軟件開發(fā)有限公司