基于流程圖的流程化業(yè)務(wù)實現(xiàn)方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計算機應(yīng)用技術(shù)領(lǐng)域,特別是涉及基于流程圖的流程化業(yè)務(wù)實現(xiàn)方法 和裝置。
【背景技術(shù)】
[0002] 隨著業(yè)務(wù)的擴大、需求變更的增多,往往導(dǎo)致業(yè)務(wù)代碼變得膝腫,與此同時,業(yè)務(wù) 代碼中的業(yè)務(wù)邏輯也變得復(fù)雜,從而也使軟件開發(fā)人員不容易對業(yè)務(wù)代碼進行維護。
[0003] 為了解決業(yè)務(wù)代碼不易維護的問題,目前,很多應(yīng)用系統(tǒng)通過一些流程工具巧口, 比較流行的jbpm和activity開源流程框架)實現(xiàn)流程化業(yè)務(wù)。具體實現(xiàn)方式為;軟件開發(fā) 人員先借助于流程工具繪制業(yè)務(wù)流程圖,并且,根據(jù)業(yè)務(wù)流程圖中各流程節(jié)點的業(yè)務(wù)邏輯, 編寫對應(yīng)的化va代碼片段。應(yīng)用服務(wù)器根據(jù)業(yè)務(wù)流程圖中各流程節(jié)點的上下游關(guān)系進行 流轉(zhuǎn),每到達一個流程節(jié)點時,需要先讀取該流程節(jié)點的狀態(tài)和相關(guān)信息,然后根據(jù)該流程 節(jié)點的相關(guān)信息調(diào)用該流程節(jié)點對應(yīng)的化va代碼片段,最后還要根據(jù)化va代碼片段的執(zhí) 行結(jié)果更新該流程節(jié)點的狀態(tài)和相關(guān)信息。
[0004] 但是,本發(fā)明的發(fā)明人在研究中發(fā)現(xiàn),該種流程化業(yè)務(wù)的實現(xiàn)方式適用于各流程 節(jié)點的業(yè)務(wù)邏輯不需要連續(xù)執(zhí)行,并且流程節(jié)點之間有人工參與的情況。而對于各流程節(jié) 點的業(yè)務(wù)邏輯需要連續(xù)執(zhí)行,并且流程節(jié)點之間無需人工參與的情況,該種流程化業(yè)務(wù)的 實現(xiàn)方式需要應(yīng)用服務(wù)器在每執(zhí)行一個流程節(jié)點的業(yè)務(wù)邏輯時,都要讀取該流程節(jié)點的狀 態(tài)和相關(guān)信息、調(diào)用該流程節(jié)點對應(yīng)的化va代碼片段,W及根據(jù)化va代碼片段的執(zhí)行結(jié)果 更新該流程節(jié)點的狀態(tài)和相關(guān)信息,也就是說,應(yīng)用服務(wù)器在每執(zhí)行一個流程節(jié)點的業(yè)務(wù) 邏輯都需要執(zhí)行多次10操作,而該些10操作會浪費應(yīng)用服務(wù)器過多的系統(tǒng)開銷。
【發(fā)明內(nèi)容】
[0005] 為了解決上述技術(shù)問題,本發(fā)明實施例提供了基于流程圖的流程化業(yè)務(wù)實現(xiàn)方法 和裝置,W解決現(xiàn)有技術(shù)中流程化業(yè)務(wù)的實現(xiàn)方式中由于需要執(zhí)行過多的10操作而導(dǎo)致 應(yīng)用服務(wù)器的系統(tǒng)開銷浪費的問題。
[0006] 在本發(fā)明實施方式的第一方面中,提供了一種基于流程圖的流程化業(yè)務(wù)實現(xiàn)方 法,包括:
[0007] 根據(jù)已編輯的業(yè)務(wù)流程圖,生成可擴展標記語言XML格式的業(yè)務(wù)流程文件,所述 業(yè)務(wù)流程文件中的所有XML標記構(gòu)成所述業(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯;
[0008] 將所述XML格式的業(yè)務(wù)流程文件轉(zhuǎn)化為任意一種程序語言文件,所述程序語言文 件中的業(yè)務(wù)邏輯為所述業(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯;
[0009] 將所述程序語言文件加載到對應(yīng)的運行環(huán)境中運行,W便在運行所述程序語言文 件時執(zhí)行所述業(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯。
[0010] 結(jié)合本發(fā)明實施方式的第一方面,本發(fā)明實施方式還具有第一種可能,即所述XML 格式的業(yè)務(wù)流程文件為具有預(yù)設(shè)的后綴名,所述后綴名用于流程設(shè)計器的識別。
[0011] 結(jié)合本發(fā)明實施方式的第一方面,本發(fā)明實施方式還具有第二種可能,即所述程 序語言文件為化va文件,所述對應(yīng)的運行環(huán)境為化va運行環(huán)境。
[0012] 結(jié)合本發(fā)明實施方式的第一方面的第二種可能,本發(fā)明還具有第H種可能,即所 述業(yè)務(wù)流程文件中的各個XML標記標注所述業(yè)務(wù)流程圖中的各個流程節(jié)點和流程上下文 的化va語言元素。
[0013] 結(jié)合本發(fā)明實施方式的第一方面的第H種可能,本發(fā)明實施方式還具有第四種可 能,即所述將所述XML格式的業(yè)務(wù)流程文件轉(zhuǎn)化為化va文件,所述化va文件中的業(yè)務(wù)邏輯 為所述業(yè)務(wù)流程文件定義的業(yè)務(wù)邏輯,包括:
[0014] 從所述XML格式的業(yè)務(wù)流程文件中的各個XML標記中提取各個流程節(jié)點和流程上 下文的化va語言元素;
[0015] 根據(jù)各個流程節(jié)點和流程上下文的化va語言元素,生成各個流程節(jié)點和流程上 下文的化va代碼片段;
[0016] 將各個業(yè)務(wù)流程節(jié)點和流程上下文的化va代碼片段組合成一個化va文件。
[0017] 結(jié)合本發(fā)明實施方式的第一方面的第二種可能,本發(fā)明實施方式還具有第五種可 能,即所述將所述化va文件加載到化va運行環(huán)境中運行,W便在運行所述化va文件時執(zhí) 行所述業(yè)務(wù)流程定義的業(yè)務(wù)邏輯,包括:
[0018] 將所述化va文件編譯為類文件;
[0019] 將所述類文件作為內(nèi)存對象裝載在內(nèi)存中執(zhí)行,W便在執(zhí)行所述內(nèi)存對象的方法 時執(zhí)行所述業(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯。
[0020] 結(jié)合本發(fā)明實施方式的第一方面的第五種可能,本發(fā)明實施方式還具有第六種可 能,即所述將所述化va文件編譯為類文件具體為:
[0021] 在應(yīng)用程序啟動時,將所述化va文件編譯為類文件;
[002引或者,
[0023] 響應(yīng)于應(yīng)用程序?qū)λ鰳I(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯的調(diào)用請求,將所述化va文 件編譯為類文件。
[0024] 在本發(fā)明實施方式的第二方面中,提供了一種基于流程圖的流程化業(yè)務(wù)實現(xiàn)裝 置,包括:
[00巧]生成模塊,用于根據(jù)已編輯的業(yè)務(wù)流程圖,生成可擴展標記語言XML格式的業(yè)務(wù) 流程文件,所述業(yè)務(wù)流程文件中的所有XML標記構(gòu)成所述業(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯;
[0026] 轉(zhuǎn)化模塊,用于將所述XML格式的業(yè)務(wù)流程文件轉(zhuǎn)化為任意一種程序語言文件, 所述程序語言文件中的業(yè)務(wù)邏輯為所述業(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯;
[0027] 運行模塊,用于將所述程序語言文件加載到對應(yīng)的運行環(huán)境中運行,W便在運行 所述程序語言文件時執(zhí)行所述業(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯。
[0028] 結(jié)合本發(fā)明實施方式的第二方面,本發(fā)明實施方式還具有第一種可能,即所述XML 格式的業(yè)務(wù)流程文件為具有預(yù)設(shè)的后綴名,所述后綴名用于流程設(shè)計器的識別。
[0029] 結(jié)合本發(fā)明實施方式的第二方面,本發(fā)明實施方式還具有第二種可能,即所述程 序語言文件為化va文件,所述對應(yīng)的運行環(huán)境為化va運行環(huán)境。
[0030] 結(jié)合本發(fā)明實施方式的第二方面的第二種可能,本發(fā)明實施方式還具有第H種可 能,即所述業(yè)務(wù)流程文件中的各個XML標記標注所述業(yè)務(wù)流程圖中的各個流程節(jié)點和流程 上下文的化va語言元素。
[0031] 結(jié)合本發(fā)明實施方式的第二方面的第H種可能,本發(fā)明實施方式還具有第四種可 能,即所述轉(zhuǎn)化模塊包括:
[0032] 提取子模塊,用于從所述XML格式的業(yè)務(wù)流程文件中的各個XML標記中提取各個 流程節(jié)點和流程上下文的化va語言元素;
[0033] 生成子模塊,用于根據(jù)各個流程節(jié)點和流程上下文的化va語言元素,生成各個流 程節(jié)點和流程上下文的化va代碼片段;
[0034] 組合子模塊,用于將各個流程節(jié)點和流程上下文的化va代碼片段組合成一個 化va文件。
[0035] 結(jié)合本發(fā)明實施方式的第二方面的第二種可能,本發(fā)明實施方式還具有第五種可 能,即所述運行模塊包括:
[0036] 編譯子模塊,用于將所述化va文件編譯為類文件;
[0037]裝載子模塊,用于將所述類文件作為內(nèi)存對象裝載在內(nèi)存中執(zhí)行,W便在執(zhí)行所 述內(nèi)存對象的方法時執(zhí)行所述業(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯。
[0038] 結(jié)合本發(fā)明實施方式的第二方面的第五種可能,本發(fā)明實施方式還具有第六種可 能,即所述編譯子模塊具體用于,在應(yīng)用程序啟動時,將所述化va文件編譯為類文件;或 者,所述編譯子模塊具體用于,響應(yīng)于應(yīng)用程序?qū)λ鰳I(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯的調(diào)用 請求,將所述化va文件編譯為類文件。
[0039] 由上述實施例可W看出,與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:
[0040] 先根據(jù)業(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯,生成一個XML格式的業(yè)務(wù)流程文件,再將XML 格式的業(yè)務(wù)流程文件轉(zhuǎn)化為一個程序語言文件,如,^va文件。對于應(yīng)用服務(wù)器而言,當(dāng)可 W將該程序語言文件直接加載到對應(yīng)的運行環(huán)境中運行,如,化va文件加載到化va運行環(huán) 境中。該樣就可W在運行該程序語言文件時連續(xù)執(zhí)行業(yè)務(wù)流程圖定義的業(yè)務(wù)邏輯,因此,應(yīng) 用服務(wù)器不需要執(zhí)行過多10操作,從而避免了因執(zhí)行過多的10操作而導(dǎo)致應(yīng)用服務(wù)器的 系統(tǒng)開銷浪費的問題。
【附圖說明】
[0041] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可 W根據(jù)該些附圖獲得其他的附圖。
[0042] 圖1為本發(fā)明實施例一提供的一種基于流程圖的流程化業(yè)務(wù)邏輯實現(xiàn)方法的流 程圖;
[0043] 圖2為本發(fā)明中通過標簽定義流程節(jié)點"支付寶代扣"的化va語言元素的操作示 意圖;
[0044] 圖3為本發(fā)明中通過標簽定義流程上下文的化va語言元素的操作示意圖;
[0045] 圖4為本發(fā)明中一種將XML格式的業(yè)務(wù)流程文件轉(zhuǎn)化為化va文件的方法的流程 圖;
[0046]圖5為本發(fā)明實施例二提供的另一種基于流程圖的流程化業(yè)務(wù)實現(xiàn)方法的流程 圖;