一種使遺留系統(tǒng)具備工作流處理能力的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種使遺留系統(tǒng)具備工作流處理能力的方法及系統(tǒng),該方法包括截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù),并將業(yè)務(wù)表單對象參數(shù)存儲至一方法調(diào)用堆棧數(shù)據(jù)庫中;根據(jù)所述業(yè)務(wù)表單對象參數(shù),判斷該業(yè)務(wù)表單操作是否需要進(jìn)行工作流處理;如否,則完成該業(yè)務(wù)表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用;如是,則發(fā)起并執(zhí)行工作流,然后判斷所述工作流是否成功結(jié)束;如否,則使所述業(yè)務(wù)表單操作以失敗結(jié)束;如是,則完成該業(yè)務(wù)表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用。本發(fā)明可以使現(xiàn)有不具備工作流處理能力的遺留系統(tǒng)具備工作流處理能力,而且不需要修改業(yè)務(wù)表單代碼。
【專利說明】一種使遺留系統(tǒng)具備工作流處理能力的方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于業(yè)務(wù)表單【技術(shù)領(lǐng)域】,具體涉及一種使遺留系統(tǒng)具備工作流處理能力的 方法及系統(tǒng)。
【背景技術(shù)】
[0002] 業(yè)務(wù)表單,也可以叫電子表單,是采用信息化的手段對現(xiàn)實(shí)世界中紙張表單(比 如請假單、報(bào)銷單)的抽象。它是應(yīng)用系統(tǒng)中進(jìn)行數(shù)據(jù)采集和展示的主要方式和手段,也是 工作流系統(tǒng)中主要處理對象,主要包含三部分內(nèi)容:
[0003] (1)表單標(biāo)簽:這里面包含了處理表單數(shù)據(jù)所用CGI/JSP/ASP等程序的URL以及 數(shù)據(jù)提交到服務(wù)器的方法。
[0004] (2)表單域:包含了文本框、密碼框、隱藏域、多行文本框、復(fù)選框、單選框、下拉選 擇框和文件上傳框等。
[0005] (3)表單按鈕:包括提交按鈕、復(fù)位按鈕和一般按鈕;用于將數(shù)據(jù)傳送到服務(wù)器上 的CGI/JSP/ASP等腳本或者取消輸入,還可以用表單按鈕來控制其他定義了處理腳本的處 理工作。其中提交按鈕就對應(yīng)著表單的新建、修改、刪除等操作。
[0006] 工作流(Work Flow)就是工作流程的計(jì)算模型,即將工作流程中的工作如何前后 組織在一起的邏輯和規(guī)則在計(jì)算機(jī)中以恰當(dāng)?shù)哪P瓦M(jìn)行表示并對其實(shí)施計(jì)算。工作流要解 決的主要問題是:為實(shí)現(xiàn)某個業(yè)務(wù)目標(biāo),在多個參與者之間,利用計(jì)算機(jī),按某種預(yù)定規(guī)則 自動傳遞文檔、信息或者任務(wù)。簡單地說,工作流就是一系列相互銜接、自動進(jìn)行的業(yè)務(wù)活 動或任務(wù)。我們可以將整個業(yè)務(wù)過程看作是一條河,其中流過的河水就是待審核的業(yè)務(wù)表 單。
[0007] 工作流引擎(Work Flow Engine)是為了實(shí)現(xiàn)工作流的操縱方式,將流程操作處理 進(jìn)行了封裝,對應(yīng)用系統(tǒng)提供服務(wù),使得業(yè)務(wù)系統(tǒng)能夠?qū)崿F(xiàn)工作流的操作方式。
[0008] 遺留系統(tǒng)(legacy system),是對以前建立的系統(tǒng),或者舊版本的系統(tǒng)的泛稱。如 果遺留系統(tǒng)不具有工作流處理的能力,那么如果要使得遺留系統(tǒng)具有工作流的處理能力, 目前的做法就是對遺留的業(yè)務(wù)代碼進(jìn)行修改。不具有工作流處理的能力體現(xiàn)在一個客戶端 提交一個業(yè)務(wù)表單后,業(yè)務(wù)表單的信息保存在一個數(shù)據(jù)庫中,不會主動推送到其他客戶終 端進(jìn)行下一步處理。而具有工作流處理的能力體現(xiàn)在一個客戶端提交一個業(yè)務(wù)表單后,業(yè) 務(wù)表單信息就會根據(jù)工作流設(shè)定的節(jié)點(diǎn)自動往下傳輸,直至工作流結(jié)束。
[0009] 工作流處理能力功能的添加相當(dāng)于將業(yè)務(wù)表單的操作按照工作流設(shè)定的節(jié)點(diǎn)進(jìn) 行了切分,使得業(yè)務(wù)表單的操作不是馬上生效的,必須等到工作流處理完畢之后業(yè)務(wù)表單 操作才能最終生效。所以,已有的技術(shù)對不具有工作流能力的業(yè)務(wù)表單操作添加工作流能 力,是需要修改源代碼的。
[0010] 比如遺留系統(tǒng)中的請假單,具有表單按鈕"提交",點(diǎn)擊提交按鈕之后,該請假單將 立即生效,即是:對于現(xiàn)有不遺留系統(tǒng)的業(yè)務(wù)表單,一旦用戶點(diǎn)擊"提交"按鈕后,就會將該 業(yè)務(wù)表單的數(shù)據(jù)直接保存至DB數(shù)據(jù)庫中,DB數(shù)據(jù)庫中的數(shù)據(jù)是可以被其他人查閱的。 toon] 如果將提交請假單添加工作流的處理能力,則需要修改提交請假單的業(yè)務(wù)代碼。 在已有的請假單申請的業(yè)務(wù)代碼中,需要調(diào)用工作流引擎的功能,用來發(fā)起某一個工作流。 與此同時,提交的請假單不能馬上被查詢到,必須等到請假單工作流處理全部完成后,才能 被查詢到。因此,查詢請假單的代碼也需要進(jìn)行修改,需要添加該請假單是否在工作流處理 中的業(yè)務(wù)代碼來進(jìn)行判斷。
[0012] 從以上例子可以看出,遺留的業(yè)務(wù)表單添加工作流的處理能力是一件很繁瑣和效 率低下的工作,需要對已有的業(yè)務(wù)代碼進(jìn)行修改,并且使得業(yè)務(wù)表單的代碼與工作流的代 碼進(jìn)行耦合。
【發(fā)明內(nèi)容】
[0013] 為了解決上述問題,本發(fā)明的目的在于提供一種使遺留系統(tǒng)具備工作流處理能力 的方法及系統(tǒng),可以使現(xiàn)有不具備工作流處理能力的遺留系統(tǒng)具備工作流處理能力,而且 不需要修改業(yè)務(wù)表單代碼。
[0014] 為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明采用的技術(shù)方案如下:
[0015] 一種使遺留系統(tǒng)具備工作流處理能力的方法,包括:
[0016] 截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù),并將業(yè)務(wù)表單對象參數(shù)存儲至一方法 調(diào)用堆棧數(shù)據(jù)庫中;
[0017] 根據(jù)所述業(yè)務(wù)表單對象參數(shù),判斷該業(yè)務(wù)表單操作是否需要進(jìn)行工作流處理;
[0018] 如否,則從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表單對象參數(shù)以完成該業(yè)務(wù) 表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用;
[0019] 如是,則發(fā)起并執(zhí)行工作流,然后判斷所述工作流是否成功結(jié)束;
[0020] 如否,則使所述業(yè)務(wù)表單操作以失敗結(jié)束,同時獲取到該業(yè)務(wù)表單控制狀態(tài)信息, 執(zhí)行"拒絕"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換;
[0021] 如是,則從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表單對象參數(shù)以完成該業(yè)務(wù) 表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用,同時獲取到該業(yè)務(wù)表單 控制狀態(tài)信息,執(zhí)行"接受"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換。
[0022] 進(jìn)一步的,所述業(yè)務(wù)表單對象參數(shù)包括調(diào)用類名、調(diào)用方法名和調(diào)用方法參數(shù)。
[0023] 進(jìn)一步的,在截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù)后還包括:根據(jù)所述業(yè)務(wù) 表單對象參數(shù)生成業(yè)務(wù)表單控制狀態(tài)信息,所述業(yè)務(wù)表單控制狀態(tài)信息包括在一定操作條 件下可相互轉(zhuǎn)換的八種控制狀態(tài):新建狀態(tài)、新建工作流處理中狀態(tài)、新建失敗狀態(tài)、正常 狀態(tài)、修改工作流處理中狀態(tài)、修改失敗裝置、刪除工作流處理中狀態(tài)以及被刪除狀態(tài)。
[0024] 進(jìn)一步的,還包括遺留系統(tǒng)的查看業(yè)務(wù)表單數(shù)據(jù)的步驟,具體如下:
[0025] 執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,加載業(yè)務(wù)表單的數(shù)據(jù);
[0026] 檢查所述業(yè)務(wù)表單控制狀態(tài)信息,是否包含該業(yè)務(wù)表單數(shù)據(jù);
[0027] 如不包含,則將業(yè)務(wù)表單的數(shù)據(jù)送業(yè)務(wù)表單處理頁面顯示;
[0028] 如包含,則根據(jù)業(yè)務(wù)表單控制狀態(tài)信息,修改業(yè)務(wù)表單處理頁面的狀態(tài)。
[0029] 進(jìn)一步的,還包括工作流處理中查看業(yè)務(wù)表單數(shù)據(jù)的步驟,具體如下:
[0030] 在工作流處理頁面中顯示即將發(fā)生變化的業(yè)務(wù)表單信息;
[0031] 在接收到工作流處理頁面顯示請求后,將執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,力口 載并顯示業(yè)務(wù)表單數(shù)據(jù);
[0032] 判斷業(yè)務(wù)表單操作類型,所述業(yè)務(wù)表單操作類型包括新建、刪除和修改三種類 型;
[0033] 如果是刪除,則將業(yè)務(wù)表單數(shù)據(jù)送工作流處理中的頁面中進(jìn)行顯示;
[0034] 如果是新建或修改,則將前述加載的業(yè)務(wù)表單數(shù)據(jù)替換為新建或修改后的業(yè)務(wù)表 單數(shù)據(jù)。
[0035] 本發(fā)明還提供了與前述方法完全對應(yīng)一致的使遺留系統(tǒng)具備工作流處理能力的 系統(tǒng),其包括:
[0036] 業(yè)務(wù)表單操作截取模塊,用于截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù),并將業(yè) 務(wù)表單對象參數(shù)存儲至一方法調(diào)用堆棧數(shù)據(jù)庫中;
[0037] 工作流判斷模塊,用于根據(jù)所述業(yè)務(wù)表單對象參數(shù),判斷該業(yè)務(wù)表單操作是否需 要進(jìn)行工作流處理,如否,則執(zhí)行完成業(yè)務(wù)表單邏輯操作模塊,如是,則執(zhí)行工作流發(fā)起與 結(jié)束判斷模塊;
[0038] 完成業(yè)務(wù)表單邏輯操作模塊,用于從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表 單對象參數(shù)以完成該業(yè)務(wù)表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào) 用;
[0039] 工作流發(fā)起和結(jié)束判斷模塊,用于發(fā)起并執(zhí)行工作流,然后判斷所述工作流是否 成功結(jié)束,如否,則執(zhí)行失敗結(jié)束模塊,如是,則執(zhí)行成功結(jié)束模塊;
[0040] 失敗結(jié)束模塊,用于使所述業(yè)務(wù)表單操作以失敗結(jié)束,同時獲取到該業(yè)務(wù)表單控 制狀態(tài)信息,執(zhí)行"拒絕"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換;
[0041] 成功結(jié)束模塊,用于從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表單對象參數(shù)以 完成該業(yè)務(wù)表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用,同時獲取到 該業(yè)務(wù)表單控制狀態(tài)信息,執(zhí)行"接受"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換。
[0042] 進(jìn)一步的,所述業(yè)務(wù)表單對象參數(shù)包括調(diào)用類名、調(diào)用方法名和調(diào)用方法參數(shù)。
[0043] 進(jìn)一步的,所述業(yè)務(wù)表單操作截取模塊,在截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象 參數(shù)后還包括:根據(jù)所述業(yè)務(wù)表單對象參數(shù)生成業(yè)務(wù)表單控制狀態(tài)信息,所述業(yè)務(wù)表單控 制狀態(tài)信息包括在一定操作條件下可相互轉(zhuǎn)換的八種控制狀態(tài):新建狀態(tài)、新建工作流處 理中狀態(tài)、新建失敗狀態(tài)、正常狀態(tài)、修改工作流處理中狀態(tài)、修改失敗裝置、刪除工作流處 理中狀態(tài)以及被刪除狀態(tài)。
[0044] 進(jìn)一步的,還包括遺留系統(tǒng)的查看業(yè)務(wù)表單數(shù)據(jù)的模塊,用于具體執(zhí)行如下動 作:
[0045] 執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,加載業(yè)務(wù)表單的數(shù)據(jù);
[0046] 檢查所述業(yè)務(wù)表單控制狀態(tài)信息,是否包含該業(yè)務(wù)表單數(shù)據(jù);
[0047] 如不包含,則將業(yè)務(wù)表單的數(shù)據(jù)送業(yè)務(wù)表單處理頁面顯示;
[0048] 如包含,則根據(jù)業(yè)務(wù)表單控制狀態(tài)信息,修改業(yè)務(wù)表單處理頁面的狀態(tài)。
[0049] 進(jìn)一步的,還包括工作流處理中查看業(yè)務(wù)表單數(shù)據(jù)的模塊,用于具體執(zhí)行如下動 作:
[0050] 在工作流處理頁面中顯示即將發(fā)生變化的業(yè)務(wù)表單信息;
[0051] 在接收到工作流處理頁面顯示請求后,將執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,力口 載并顯示業(yè)務(wù)表單數(shù)據(jù)
[0052] 判斷業(yè)務(wù)表單操作類型,所述業(yè)務(wù)表單操作類型包括新建、刪除和修改三種類 型;
[0053] 如果是刪除,則將業(yè)務(wù)表單數(shù)據(jù)送工作流處理中的頁面中進(jìn)行顯示;
[0054] 如果是新建或修改,則將前述加載的業(yè)務(wù)表單數(shù)據(jù)替換為新建或修改后的業(yè)務(wù)表 單數(shù)據(jù)。
[0055] 現(xiàn)有遺留系統(tǒng)業(yè)務(wù)表單的處理流程:提交業(yè)務(wù)表單操作后,業(yè)務(wù)表單就會立即生 效,即是提交后業(yè)務(wù)表單對象參數(shù)將被保存至業(yè)務(wù)表單數(shù)據(jù)庫中,可以被其他用戶查詢調(diào) 用,即可被其他用戶查詢到。
[0056] 然而,本發(fā)明通過截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù),并將業(yè)務(wù)表單對象 參數(shù)存儲至一方法調(diào)用堆棧數(shù)據(jù)庫,而不直接存儲至業(yè)務(wù)表單數(shù)據(jù)庫中,使之不會立即生 效。同時,本發(fā)明利用方法調(diào)用堆棧數(shù)據(jù)庫中存儲的數(shù)據(jù),發(fā)起和執(zhí)行相應(yīng)的工作流,工作 流執(zhí)行結(jié)束后才存儲至業(yè)務(wù)表單數(shù)據(jù)庫中,使之能夠被其他用戶查詢調(diào)用。即是,本發(fā)明是 將業(yè)務(wù)表單提交操作的數(shù)據(jù)截取出來,存儲至一個中間數(shù)據(jù)庫(方法調(diào)用堆棧數(shù)據(jù)庫)中, 然后再對其添加工作流處理能力,從而可以看出本發(fā)明可以不改動業(yè)務(wù)表單原有的表單標(biāo) 簽、表單域、表單按鈕的情況下,使得業(yè)務(wù)表單能夠在工作流中進(jìn)行處理,從而減少系統(tǒng)編 程的開發(fā),提高開發(fā)效率。
【專利附圖】
【附圖說明】
[0057] 此【專利附圖】
【附圖說明】所提供的圖片用來輔助對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部 分,并不構(gòu)成對本發(fā)明的不當(dāng)限定,在附圖中:
[0058] 圖1為本發(fā)明的整體流程原理示意圖;
[0059] 圖2為業(yè)務(wù)表單進(jìn)行工作流發(fā)起時的流程示意圖;
[0060] 圖3為業(yè)務(wù)表單進(jìn)行工作流處理結(jié)束時的流程示意圖;
[0061] 圖4為遺留系統(tǒng)中查看業(yè)務(wù)表單數(shù)據(jù)的流程示意圖;
[0062] 圖5為工作流處理中查看業(yè)務(wù)表單數(shù)據(jù)的流程示意圖;
[0063] 圖6為業(yè)務(wù)表單進(jìn)行工作流發(fā)起時的控制裝置示意圖;
[0064] 圖7為業(yè)務(wù)表單進(jìn)行工作流處理結(jié)束時的控制裝置示意圖;
[0065] 圖8為查看業(yè)務(wù)表單數(shù)據(jù)的裝置示意圖;
[0066] 圖9為業(yè)務(wù)表單控制狀態(tài)機(jī)示意圖。
【具體實(shí)施方式】
[0067] 如圖1所示,本實(shí)施例公開了一種使遺留系統(tǒng)具備工作流處理能力的方法,包括: [0068] 11、截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù),并將業(yè)務(wù)表單對象參數(shù)存儲至一 方法調(diào)用堆棧數(shù)據(jù)庫中,所述業(yè)務(wù)表單對象參數(shù)包括調(diào)用類名、調(diào)用方法名和調(diào)用方法參 數(shù);
[0069] 12、根據(jù)所述業(yè)務(wù)表單對象參數(shù),判斷該業(yè)務(wù)表單操作是否需要進(jìn)行工作流處 理;
[0070] 如否,則執(zhí)行131 :從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表單對象參數(shù)以 完成該業(yè)務(wù)表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用;
[0071] 如是,則執(zhí)行132 :發(fā)起并執(zhí)行工作流,然后判斷所述工作流是否成功結(jié)束;
[0072] 如否,則執(zhí)行141 :使所述業(yè)務(wù)表單操作以失敗結(jié)束,同時獲取到該業(yè)務(wù)表單控制 狀態(tài)信息,執(zhí)行"拒絕"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換;
[0073] 如是,則執(zhí)行142 :從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表單對象參數(shù)以 完成該業(yè)務(wù)表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用,同時獲取到 該業(yè)務(wù)表單控制狀態(tài)信息,執(zhí)行"接受"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換。
[0074] 為了控制業(yè)務(wù)表單的操作以及在工作流中處理流轉(zhuǎn),在截取業(yè)務(wù)表單操作中的業(yè) 務(wù)表單對象參數(shù)后還包括:根據(jù)所述業(yè)務(wù)表單對象參數(shù)生成業(yè)務(wù)表單控制狀態(tài)信息,所述 業(yè)務(wù)表單控制狀態(tài)信息包括在一定操作條件下可相互轉(zhuǎn)換的八種控制狀態(tài):新建狀態(tài)、新 建工作流處理中狀態(tài)、新建失敗狀態(tài)、正常狀態(tài)、修改工作流處理中狀態(tài)、修改失敗裝置、刪 除工作流處理中狀態(tài)以及被刪除狀態(tài)。
[0075] 為了屏蔽或者轉(zhuǎn)換遺留系統(tǒng)中的業(yè)務(wù)表單顯示的信息,使得能夠與工作流處理能 力進(jìn)行匹配,還包括遺留系統(tǒng)的查看業(yè)務(wù)表單數(shù)據(jù)的步驟,具體如下:
[0076] 執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,加載業(yè)務(wù)表單的數(shù)據(jù);
[0077] 檢查所述業(yè)務(wù)表單控制狀態(tài)信息,是否包含該業(yè)務(wù)表單數(shù)據(jù);
[0078] 如不包含,則將業(yè)務(wù)表單的數(shù)據(jù)送業(yè)務(wù)表單處理頁面顯示;
[0079] 如包含,則根據(jù)業(yè)務(wù)表單控制狀態(tài)信息,修改業(yè)務(wù)表單處理頁面的狀態(tài)。
[0080] 為了便于工作流處理過程中查看業(yè)務(wù)表單數(shù)據(jù),還包括工作流處理中查看業(yè)務(wù)表 單數(shù)據(jù)的步驟,具體如下:
[0081] 在工作流處理頁面中顯示即將發(fā)生變化的業(yè)務(wù)表單信息;
[0082] 在接收到工作流處理頁面顯示請求后,將執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,力口 載并顯示業(yè)務(wù)表單數(shù)據(jù);
[0083] 判斷業(yè)務(wù)表單操作類型,所述業(yè)務(wù)表單操作類型包括新建、刪除和修改三種類 型;
[0084] 如果是刪除,則將業(yè)務(wù)表單數(shù)據(jù)送工作流處理中的頁面中進(jìn)行顯示;
[0085] 如果是新建或修改,則將前述加載的業(yè)務(wù)表單數(shù)據(jù)替換為新建或修改后的業(yè)務(wù)表 單數(shù)據(jù)。
[0086] 本實(shí)施例還公開了一種與前述方法完全對應(yīng)一致的使遺留系統(tǒng)具備工作流處理 能力的系統(tǒng),其包括:
[0087] 業(yè)務(wù)表單操作截取模塊,用于截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù),并將業(yè) 務(wù)表單對象參數(shù)存儲至一方法調(diào)用堆棧數(shù)據(jù)庫中,所述業(yè)務(wù)表單對象參數(shù)包括調(diào)用類名、 調(diào)用方法名和調(diào)用方法參數(shù);
[0088] 工作流判斷模塊,用于根據(jù)所述業(yè)務(wù)表單對象參數(shù),判斷該業(yè)務(wù)表單操作是否需 要進(jìn)行工作流處理,如否,則執(zhí)行完成業(yè)務(wù)表單邏輯操作模塊,如是,則執(zhí)行工作流發(fā)起與 結(jié)束判斷模塊;
[0089] 完成業(yè)務(wù)表單邏輯操作模塊,用于從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表 單對象參數(shù)以完成該業(yè)務(wù)表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào) 用;
[0090] 工作流發(fā)起和結(jié)束判斷模塊,用于發(fā)起并執(zhí)行工作流,然后判斷所述工作流是否 成功結(jié)束,如否,則執(zhí)行失敗結(jié)束模塊,如是,則執(zhí)行成功結(jié)束模塊;
[0091] 失敗結(jié)束模塊,用于使所述業(yè)務(wù)表單操作以失敗結(jié)束,同時獲取到該業(yè)務(wù)表單控 制狀態(tài)信息,執(zhí)行"拒絕"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換;
[0092] 成功結(jié)束模塊,用于從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表單對象參數(shù)以 完成該業(yè)務(wù)表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用,同時獲取到 該業(yè)務(wù)表單控制狀態(tài)信息,執(zhí)行"接受"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換。
[0093] 為了控制業(yè)務(wù)表單的操作以及在工作流中處理流轉(zhuǎn),所述業(yè)務(wù)表單操作截取模 塊,在截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù)后還包括:根據(jù)所述業(yè)務(wù)表單對象參數(shù)生 成業(yè)務(wù)表單控制狀態(tài)信息,所述業(yè)務(wù)表單控制狀態(tài)信息包括在一定操作條件下可相互轉(zhuǎn)換 的八種控制狀態(tài):新建狀態(tài)、新建工作流處理中狀態(tài)、新建失敗狀態(tài)、正常狀態(tài)、修改工作流 處理中狀態(tài)、修改失敗裝置、刪除工作流處理中狀態(tài)以及被刪除狀態(tài)。
[0094] 為了屏蔽或者轉(zhuǎn)換遺留系統(tǒng)中的業(yè)務(wù)表單顯示的信息,使得能夠與工作流處理能 力進(jìn)行匹配,還包括遺留系統(tǒng)的查看業(yè)務(wù)表單數(shù)據(jù)的模塊,用于具體執(zhí)行如下動作:
[0095] 執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,加載業(yè)務(wù)表單的數(shù)據(jù);
[0096] 檢查所述業(yè)務(wù)表單控制狀態(tài)信息,是否包含該業(yè)務(wù)表單數(shù)據(jù);
[0097] 如不包含,則將業(yè)務(wù)表單的數(shù)據(jù)送業(yè)務(wù)表單處理頁面顯示;
[0098] 如包含,則根據(jù)業(yè)務(wù)表單控制狀態(tài)信息,修改業(yè)務(wù)表單處理頁面的狀態(tài)。
[0099] 為了便于工作流處理過程中查看業(yè)務(wù)表單數(shù)據(jù),還包括工作流處理中查看業(yè)務(wù)表 單數(shù)據(jù)的模塊,用于具體執(zhí)行如下動作:
[0100] 在工作流處理頁面中顯示即將發(fā)生變化的業(yè)務(wù)表單信息;
[0101] 在接收到工作流處理頁面顯示請求后,將執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,力口 載并顯示業(yè)務(wù)表單數(shù)據(jù)
[0102] 判斷業(yè)務(wù)表單操作類型,所述業(yè)務(wù)表單操作類型包括新建、刪除和修改三種類 型;
[0103] 如果是刪除,則將業(yè)務(wù)表單數(shù)據(jù)送工作流處理中的頁面中進(jìn)行顯示;
[0104] 如果是新建或修改,則將前述加載的業(yè)務(wù)表單數(shù)據(jù)替換為新建或修改后的業(yè)務(wù)表 單數(shù)據(jù)。
[0105] 當(dāng)然上述使遺留系統(tǒng)具備工作流處理能力的方法還可以將其劃分為四個階段的 處理流程:工作流發(fā)起階段流程、工作流完成階段流程、工作流處理中的業(yè)務(wù)表單數(shù)據(jù)查看 流程、遺留系統(tǒng)中業(yè)務(wù)表單數(shù)據(jù)查看流程。
[0106] 其中,工作流發(fā)起階段流程的主要作用是對遺留業(yè)務(wù)表單操作進(jìn)行截取,并插入 工作流發(fā)起的邏輯。比如新建報(bào)銷單操作時,需要將原有的業(yè)務(wù)邏輯進(jìn)行截取,并發(fā)起新建 報(bào)銷單的工作流處理。
[0107] 其中,工作流完成階段流程的主要作用是在工作流完成的基礎(chǔ)上,完成對業(yè)務(wù)表 單的操作。比如新建報(bào)銷單工作流處理完成時,需要繼續(xù)執(zhí)行之前截取的業(yè)務(wù)邏輯操作,完 成報(bào)銷單的新建操作。
[0108] 其中,工作流處理中的業(yè)務(wù)表單數(shù)據(jù)查看流程的主要作用是在工作流處理中,處 理人要查看的業(yè)務(wù)表單需要做進(jìn)一步的處理才能符合顯示要求。比如新建報(bào)銷單操作后, 由于在工作流發(fā)起階段中截取了新建報(bào)銷單操作,使得在報(bào)銷單庫中并不存在該報(bào)銷單, 而是存儲在另外的數(shù)據(jù)庫中,那么當(dāng)需要在工作流處理中查看該新建的報(bào)銷單信息時,就 必須進(jìn)行額外的處理,才能看到該新建的報(bào)銷單信息。
[0109] 其中,遺留系統(tǒng)中業(yè)務(wù)表單數(shù)據(jù)查看流程的主要作用是屏蔽或者轉(zhuǎn)換遺留系統(tǒng)中 的業(yè)務(wù)表單顯示的信息,使得能夠與工作流處理能力進(jìn)行匹配。比如將報(bào)銷單的報(bào)銷金額 從1000元修改為2000元,遺留系統(tǒng)修改完畢之后就馬上生效,并且修改后的報(bào)銷單金額 2000元能夠被財(cái)務(wù)專員看到了。但是如果添加了工作流處理能力,那么該報(bào)銷單金額2000 元是不能被財(cái)務(wù)專員馬上查看到的,必須等到整個工作流處理完成之后,才能看到2000 J Li 〇
[0110] 如圖2所示,工作流發(fā)起階段具體包括以下步驟:
[0111] 步驟S110,點(diǎn)擊業(yè)務(wù)表單的按鈕,將會執(zhí)行后端的業(yè)務(wù)邏輯操作。常用的業(yè)務(wù)邏輯 操作有新建、刪除、修改、查看等。比如,點(diǎn)擊請假表單的"提交"按鈕,那么對應(yīng)后端的新建 操作邏輯會將該請假表單的數(shù)據(jù)存入到數(shù)據(jù)庫中。
[0112] 步驟S120,截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù),基于該業(yè)務(wù)表單對象生成 業(yè)務(wù)表單控制狀態(tài)信息,按照面向?qū)ο笏枷?,?zhí)行業(yè)務(wù)表單控制狀態(tài)信息對象的提交操作, 在該對象的提交操作中,主要是改變業(yè)務(wù)表單的控制狀態(tài)和設(shè)置變化后的業(yè)務(wù)表單數(shù)據(jù)。 截取參數(shù)一般可以采用Α0Ρ(面向方面編程)技術(shù),將方法的參數(shù)抓取出來。
[0113] 步驟S130,判斷該業(yè)務(wù)表單操作是否需要進(jìn)行工作流處理。如果不進(jìn)行工作流處 理,則執(zhí)行步驟S140,否則執(zhí)行步驟S160。
[0114] 步驟S140,完成S110中的業(yè)務(wù)表單邏輯操作。
[0115] 步驟S150,按照面向?qū)ο笏枷?,將S120中的業(yè)務(wù)表單控制狀態(tài)信息作為對象,執(zhí) 行該對象的接受操作。在該對象的接受操作中,主要是改變業(yè)務(wù)表單的控制狀態(tài)和清空變 化后的業(yè)務(wù)表單數(shù)據(jù)。
[0116] 步驟S160,停止業(yè)務(wù)表單的后端邏輯操作,并將該后端邏輯操作的方法調(diào)用堆棧 信息進(jìn)行保存。方法調(diào)用堆棧信息的保存使得工作成功完成時,能夠再次被調(diào)出來和執(zhí)行, 完成業(yè)務(wù)表單的邏輯操作。方法調(diào)用堆棧信息包括調(diào)用方法名、方法參數(shù)對象等。如果是 面向?qū)ο蟮恼Z言比如Java編寫的,還包括調(diào)用類的名稱。
[0117] 步驟S170,發(fā)起工作流。
[0118] 如圖3所示,工作流完成階段具體包括以下步驟:
[0119] 步驟S210,判斷工作流是否成功結(jié)束,如果以失敗結(jié)束,則執(zhí)行步驟S220,如果以 成功結(jié)束則執(zhí)行步驟S240。
[0120] 步驟S220,將業(yè)務(wù)表單操作對應(yīng)的方法堆棧丟棄,使得業(yè)務(wù)表單的操作失敗。
[0121] 步驟S230,按照面向?qū)ο笏枷?,將S120中的業(yè)務(wù)表單控制狀態(tài)信息作為對象,執(zhí) 行該對象的拒絕操作。在該對象的拒絕操作中,主要是改變業(yè)務(wù)表單的控制狀態(tài)和清空變 化后的業(yè)務(wù)表單數(shù)據(jù)。
[0122] 步驟S240,取出方法調(diào)用堆棧,繼續(xù)執(zhí)行業(yè)務(wù)表單的操作,使得業(yè)務(wù)表單的操作成 功。比如執(zhí)行新建報(bào)銷單的操作,在步驟S130中判斷該新建報(bào)銷單需要執(zhí)行工作流操作, 并在步驟S160將新建報(bào)銷單的后端邏輯操作的方法調(diào)用堆棧進(jìn)行了保存。在步驟S240 時,將之前保存的調(diào)用堆棧取出來,并執(zhí)行,使得新建報(bào)銷單最終生效,并能夠被用戶所查 看到。
[0123] 步驟S250,按照面向?qū)ο笏枷?,將S120中的業(yè)務(wù)表單控制狀態(tài)信息作為對象,執(zhí) 行該對象的接受操作。在該對象的接受操作中,主要是改變業(yè)務(wù)表單的控制狀態(tài)和清空變 化后的業(yè)務(wù)表單數(shù)據(jù)。
[0124] 如圖4所示,遺留系統(tǒng)的查看業(yè)務(wù)表單數(shù)據(jù)的流程具體包括以下步驟:
[0125] 步驟S310,執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,加載業(yè)務(wù)表單的數(shù)據(jù)。比如,根據(jù) 報(bào)銷單的ID,查詢對應(yīng)的報(bào)銷單的信息。
[0126] 步驟S320,檢查S120中的業(yè)務(wù)表單控制狀態(tài)信息,是否包含該業(yè)務(wù)表單數(shù)據(jù),如 果不包含則執(zhí)行步驟S340,如果包含則執(zhí)行步驟S330。
[0127] 步驟S330,根據(jù)業(yè)務(wù)表單控制狀態(tài)信息,修改業(yè)務(wù)表單的狀態(tài)顯示。比如業(yè)務(wù)表單 中有一個"狀態(tài)"表單域,根據(jù)控制狀態(tài)信息將其設(shè)置為"修改審批中"。
[0128] 步驟S340,將業(yè)務(wù)表單的數(shù)據(jù)顯示到頁面上。
[0129] 如圖5所示,工作流處理中查看業(yè)務(wù)表單數(shù)據(jù)的流程具體包括以下步驟:
[0130] 步驟S410,工作流處理用戶點(diǎn)擊進(jìn)入某一個業(yè)務(wù)表單的工作流處理頁面,在其中 將顯示即將發(fā)生變化的業(yè)務(wù)表單信息。比如,新建報(bào)銷單的工作流處理頁面中,將報(bào)銷單的 信息顯示出來。
[0131] 步驟S420,系統(tǒng)在接收到工作流處理頁面顯示請求后,將執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表 單查詢方法,加載并顯示業(yè)務(wù)表單數(shù)據(jù)。
[0132] 步驟S430,業(yè)務(wù)表單操作有新建、刪除和修三種基本類型,判斷業(yè)務(wù)表單操作類 型,如果是進(jìn)行的業(yè)務(wù)表單的刪除操作的工作流,則執(zhí)行步驟S450,如果是進(jìn)行的業(yè)務(wù)表單 新建和修改的工作流,則執(zhí)行步驟S440。
[0133] 步驟S440,步驟S420加載的業(yè)務(wù)表單數(shù)據(jù)替換為新建或修改后的業(yè)務(wù)表單數(shù)據(jù)。 新建或修改后的業(yè)務(wù)表單數(shù)據(jù)也就是步驟S120中截取的業(yè)務(wù)表單對象參數(shù)。
[0134] 步驟S450,將業(yè)務(wù)表單數(shù)據(jù)顯示到工作流處理中的頁面中。
[0135] 同樣,前述使遺留系統(tǒng)具備工作流處理能力的系統(tǒng),還可以按照以下方式進(jìn)行劃 分:主要包含相關(guān)的數(shù)據(jù)庫表、工作流發(fā)起模塊、工作流完成模塊和業(yè)務(wù)表單數(shù)據(jù)查看轉(zhuǎn)換 模塊。
[0136] 數(shù)據(jù)庫表包括方法調(diào)用堆棧庫210、業(yè)務(wù)表單控制信息庫220、業(yè)務(wù)表單庫230,見 圖6,圖7,圖8。
[0137] 方法調(diào)用堆棧庫210對業(yè)務(wù)表單操作的后端操作邏輯的方法執(zhí)行堆棧進(jìn)行了存 儲,主要包括調(diào)用類、調(diào)用方法名、調(diào)用方法參數(shù)集合信息。
[0138] 比如新建請假表單的后端操作邏輯的執(zhí)行方法為:LeaveFormService. newLeaveForm(LeaveForm form),則調(diào)用類為 LeaveFormService,調(diào)用方法名為 newLeaveForm,調(diào)用方法名參數(shù)集合為LeaveForm form。
[0139] 業(yè)務(wù)表單控制信息庫220對業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行了存儲,主要包含業(yè)務(wù)表 單類型、業(yè)務(wù)表單id、變化后的業(yè)務(wù)表單數(shù)據(jù)、業(yè)務(wù)表單的控制狀態(tài)等四個字段。
[0140] 業(yè)務(wù)表單類型字段可以區(qū)分業(yè)務(wù)表單類型,使得業(yè)務(wù)表單控制信息庫220能夠存 儲任意類型的業(yè)務(wù)表單的控制狀態(tài)信息。
[0141] 業(yè)務(wù)表單id字段可以區(qū)分同一個業(yè)務(wù)表單類型中的不同業(yè)務(wù)表單。
[0142] 變化后的業(yè)務(wù)表單數(shù)據(jù)字段用來暫存新建和修改的業(yè)務(wù)表單數(shù)據(jù)。對于新建和修 改操作,在進(jìn)行工作流處理時,其業(yè)務(wù)表單數(shù)據(jù)內(nèi)容是不能生效的,必須當(dāng)工作流以成功完 成時,業(yè)務(wù)表單的新建和修改操作才能生效。變化后的業(yè)務(wù)表單數(shù)據(jù)字段可以采用序列化 的方式將業(yè)務(wù)表單的數(shù)據(jù)信息整體轉(zhuǎn)換成二進(jìn)制字節(jié)碼并進(jìn)行存儲。
[0143] 業(yè)務(wù)表單的控制狀態(tài)主要有八個,見圖9,主要包含NewState (新建狀 態(tài))、NewProcessState (新建工作流處理中狀態(tài))、NewFailState (新建失敗狀 態(tài))、NormalState (正常狀態(tài))、ModifyProcessState (修改工作流處理中狀態(tài))、 ModifyFailState (修改失敗狀態(tài))、DelProcessState (刪除工作流處理中狀態(tài))、 DeletedState(被刪除狀態(tài))狀態(tài),每個狀態(tài)之間在一定的操作條件下能夠進(jìn)行轉(zhuǎn)移。操作 包括提交、刪除、接受和拒絕四種操作。其中提交操作可以用來處理新建和修改操作,刪除 操作用來處理刪除操作,接受和拒絕操作能夠用來處理新建、修改和刪除操作。
[0144] 優(yōu)選的,業(yè)務(wù)表單的控制狀態(tài)可以根據(jù)需要進(jìn)行添加,比如 ModifyWaitProcessState,表示還沒有經(jīng)過一次工作流處理的修改業(yè)務(wù)表單狀態(tài)。
[0145] 優(yōu)選的,DeletedState狀態(tài)不是必須的。當(dāng)業(yè)務(wù)表單的刪除之后,可以從業(yè)務(wù)表 單庫中完全刪除。
[0146] 按照面向?qū)ο笏枷?,業(yè)務(wù)表單控制狀態(tài)信息不但可以包含業(yè)務(wù)表單類型、業(yè)務(wù)表 單id、變化后的業(yè)務(wù)表單數(shù)據(jù)、業(yè)務(wù)表單的控制狀態(tài)等四個屬性,還包含提交操作、接受操 作和拒絕操作。
[0147] 在操作提交處理器110、操作接受處理器130、操作拒絕處理器160中將基于業(yè)務(wù) 表單的控制狀態(tài)來進(jìn)行業(yè)務(wù)表單處理操作控制。業(yè)務(wù)表單處理操作控制的含義是當(dāng)業(yè)務(wù)表 單處于不同的控制狀態(tài)時,控制業(yè)務(wù)表單能夠執(zhí)行的操作行為。
[0148] 比如,當(dāng)處于NormalState時,執(zhí)行提交操作,將狀態(tài)遷移到 ModifyProcessState,并且在ModifyProcessState不能再進(jìn)行提交操作,只能進(jìn)行接受和 拒絕操作?;谶@樣的狀態(tài)控制,就能夠?qū)崿F(xiàn)同一個業(yè)務(wù)表單不能在同時被多次修改,避免 了業(yè)務(wù)表單操作可能造成的數(shù)據(jù)沖突。
[0149] 業(yè)務(wù)表單庫230存儲了任意類型的、異構(gòu)結(jié)構(gòu)的業(yè)務(wù)表單。異構(gòu)結(jié)構(gòu)的含義是表 單域、表單標(biāo)簽和表單按鈕時不同的。比如請假表單包含表單標(biāo)簽"請假時間",報(bào)銷表單包 含表單標(biāo)簽"報(bào)銷金額"。
[0150] 工作流發(fā)起模塊包含遺留系統(tǒng)的業(yè)務(wù)表單操作執(zhí)行器110、操作提交處理器120、 工作流發(fā)起攔截器130、操作接受處理器140,見圖6。
[0151] 遺留系統(tǒng)的業(yè)務(wù)表單操作執(zhí)行器110處理業(yè)務(wù)表單的操作邏輯,主要參數(shù)為變化 后的業(yè)務(wù)表單數(shù)據(jù)。如果是新建操作,則該業(yè)務(wù)表單數(shù)據(jù)是構(gòu)造出來的數(shù)據(jù)。如果是修改 操作,則該業(yè)務(wù)表單數(shù)據(jù)是根據(jù)舊業(yè)務(wù)表單數(shù)據(jù)修改之后的數(shù)據(jù)。如果是刪除操作,則該業(yè) 務(wù)表單數(shù)據(jù)是舊業(yè)務(wù)表單數(shù)據(jù)。
[0152] 操作提交處理器120從業(yè)務(wù)表單控制信息庫220中查詢是否有當(dāng)前業(yè)務(wù)表單的控 制信息。如果沒有對應(yīng)的業(yè)務(wù)表單的控制信息,或者如果有對應(yīng)的業(yè)務(wù)表單的控制信息,并 且業(yè)務(wù)表單控制狀態(tài)是 NewState、NewFailState、NormalState 和 ModifyFailState 這四種 狀態(tài)之一,則根據(jù)當(dāng)前業(yè)務(wù)表單數(shù)據(jù)生成業(yè)務(wù)表單控制狀態(tài)信息,并且執(zhí)行"提交"操作。
[0153] 如果業(yè)務(wù)表單操作類型為新建操作,則執(zhí)行"提交"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)NewProcessState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0154] 如果業(yè)務(wù)表單操作類型為修改操作,則執(zhí)行"提交"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)ModifyProcessState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0155] 如果業(yè)務(wù)表單操作類型為刪除操作,則執(zhí)行"提交"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)DelProcessState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0156] 如果業(yè)務(wù)表單控制信息庫220中查詢到有當(dāng)前業(yè)務(wù)表單的控制信息,并且業(yè)務(wù)表 單控制狀態(tài)不是 NewState、NewFailState、NormalState 和 ModifyFailState 這四種狀態(tài), 則拋出異常提示"不能執(zhí)行業(yè)務(wù)表單的XXX操作",并中斷后續(xù)模塊的執(zhí)行。
[0157] 工作流發(fā)起攔截器130攔截遺留系統(tǒng)的業(yè)務(wù)表單操作執(zhí)行器110中參數(shù),包括操 作類型、調(diào)用類、調(diào)用方法名、調(diào)用方法參數(shù)集合,根據(jù)這些參數(shù)判斷是否要發(fā)起工作流。如 果要發(fā)起工作流,則將以上參數(shù)保存到方法調(diào)用堆棧210中。
[0158] 如果不需要發(fā)起工作流,操作接受處理器140基于操作提交處理器120中獲取的 業(yè)務(wù)表單控制狀態(tài)信息執(zhí)行"接受"操作,并且執(zhí)行完業(yè)務(wù)表單的操作,將業(yè)務(wù)表單數(shù)據(jù)存 入業(yè)務(wù)表單庫230中。
[0159] 如果業(yè)務(wù)表單操作類型為新建操作,則執(zhí)行"接受"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)NormalState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0160] 如果業(yè)務(wù)表單操作類型為修改操作,則執(zhí)行"接受"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)NormalState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0161] 如果業(yè)務(wù)表單操作類型為刪除操作,則執(zhí)行"接受"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)DeletedState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0162] 優(yōu)選的,當(dāng)業(yè)務(wù)表單控制狀態(tài)處于NormalState時,可以將該業(yè)務(wù)表單控制狀態(tài) 從220中刪除。
[0163] 工作流結(jié)束模塊包含工作流完成處理器150、操作接受處理器140、操作拒絕處理 器 160。
[0164] 當(dāng)工作流完成時,工作流完成處理器150從業(yè)務(wù)表單控制信息庫220和方法調(diào)用 堆棧庫210中分別取出業(yè)務(wù)表單控制狀態(tài)信息和業(yè)務(wù)表單操作方法調(diào)用堆棧。
[0165] 如果是以成功結(jié)束,將方法調(diào)用堆棧210中取出保存的調(diào)用堆棧,采用反射技術(shù) 執(zhí)行,將業(yè)務(wù)表單數(shù)據(jù)存入業(yè)務(wù)表單庫230中。同時,在操作接受處理器140中將業(yè)務(wù)表單 控制狀態(tài)信息執(zhí)行"接受"操作。
[0166] 如果業(yè)務(wù)表單操作類型為新建操作,則執(zhí)行"接受"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)NormalState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0167] 如果業(yè)務(wù)表單操作類型為修改操作,則執(zhí)行"接受"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)NormalState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0168] 如果業(yè)務(wù)表單操作類型為刪除操作,則執(zhí)行"接受"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)DeletedState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0169] 優(yōu)選的,當(dāng)業(yè)務(wù)表單控制狀態(tài)處于NormalState時,可以將該業(yè)務(wù)表單控制狀態(tài) 從220中刪除。
[0170] 如果是以失敗結(jié)束,在操作拒絕處理器160中將業(yè)務(wù)表單控制狀態(tài)信息執(zhí)行"拒 絕"操作。
[0171] 如果業(yè)務(wù)表單操作類型為新建操作,則執(zhí)行"拒絕"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)NewFailState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0172] 如果業(yè)務(wù)表單操作類型為修改操作,則執(zhí)行"拒絕"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)NormalState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0173] 優(yōu)選的,將該業(yè)務(wù)表單控制信息進(jìn)行拷貝生成一個新的業(yè)務(wù)表單控制信息,其中 業(yè)務(wù)表單類型、業(yè)務(wù)表單id、變化后的業(yè)務(wù)表單數(shù)據(jù)這三個字段值不變,將業(yè)務(wù)表單的控制 狀態(tài)字段設(shè)置為ModifyFailState。用戶可以基于該修改失敗的業(yè)務(wù)表單數(shù)據(jù)進(jìn)行編輯后, 再次提交。
[0174] 如果業(yè)務(wù)表單操作類型為刪除操作,則執(zhí)行"拒絕"操作后,業(yè)務(wù)表單控制狀態(tài)將 轉(zhuǎn)換到狀態(tài)NormalState,并且存儲到業(yè)務(wù)表單控制信息庫220中。
[0175] 優(yōu)選的,當(dāng)業(yè)務(wù)表單控制狀態(tài)處于NormalState時,可以將該業(yè)務(wù)表單控制狀態(tài) 從220中刪除。
[0176] 業(yè)務(wù)表單數(shù)據(jù)查看轉(zhuǎn)換模塊包含業(yè)務(wù)表單信息查看器310和業(yè)務(wù)表單信息替換 器 320。
[0177] 業(yè)務(wù)表單信息查看器310從業(yè)務(wù)表單數(shù)據(jù)庫230中取出業(yè)務(wù)表單數(shù)據(jù),并且根據(jù) 業(yè)務(wù)表單控制信息庫210來判斷是否要進(jìn)行業(yè)務(wù)表單數(shù)據(jù)的替換。
[0178] 當(dāng)在工作流處理頁面中查看業(yè)務(wù)表單數(shù)據(jù),并且業(yè)務(wù)表單數(shù)據(jù)在業(yè)務(wù)表單控制信 息庫210中有對應(yīng)的控制信息時,并且控制狀態(tài)為NewProcessState或NewFailState時, 則由業(yè)務(wù)表單信息替換器320將業(yè)務(wù)表單控制信息中的變化后的業(yè)務(wù)表單數(shù)據(jù)取出來,采 用反射技術(shù)構(gòu)造業(yè)務(wù)表單頁面的顯示字段。
[0179] 當(dāng)在工作流處理頁面中查看業(yè)務(wù)表單數(shù)據(jù),并且業(yè)務(wù)表單數(shù)據(jù)在業(yè)務(wù)表單 控制信息庫210中有對應(yīng)的控制信息時,并且控制狀態(tài)為ModifyProcessState或 ModifyFailState時,則由業(yè)務(wù)表單信息替換器320將業(yè)務(wù)表單控制信息中的變化后的業(yè) 務(wù)表單數(shù)據(jù)取出來,采用反射技術(shù)替換從業(yè)務(wù)表單數(shù)據(jù)庫230中取出業(yè)務(wù)表單數(shù)據(jù),并顯 示在業(yè)務(wù)表單頁面上。
[0180] 當(dāng)在工作流處理頁面中查看業(yè)務(wù)表單數(shù)據(jù),并且業(yè)務(wù)表單數(shù)據(jù)在業(yè)務(wù)表單控制信 息庫210中有對應(yīng)的控制信息時,并且控制狀態(tài)為DelProcessState時,不進(jìn)行業(yè)務(wù)表單數(shù) 據(jù)的替換,直接顯示從業(yè)務(wù)表單數(shù)據(jù)庫230中取出業(yè)務(wù)表單數(shù)據(jù)。
[0181] 當(dāng)在遺留業(yè)務(wù)表單頁面中查看業(yè)務(wù)表單數(shù)據(jù),業(yè)務(wù)表單的控制狀態(tài)只能處于 NormalState、ModifyProcessState 和 DelProcessState。
[0182] 當(dāng)處于NormalState時,業(yè)務(wù)表單信息替換器320不需要進(jìn)行任何替換。
[0183] 當(dāng)處于ModifyProcessState和DelProcessState時,業(yè)務(wù)表單信息替換器320需 要ModifyProcessState和DelProcessState狀態(tài)顯不在業(yè)務(wù)表單頁面中。
[0184] 下面以新建請假表單操作與工作流處理結(jié)合的實(shí)例來對技術(shù)方案進(jìn)行說明。
[0185] 發(fā)起新建請假單工作流
[0186] 執(zhí)行新建請假表單操作,110執(zhí)行后端業(yè)務(wù)邏輯操作。
[0187] 操作提交處理器120先從220中檢查,發(fā)現(xiàn)不存在該請假表單的控制狀態(tài)信息,則 根據(jù)請假表單的數(shù)據(jù),生成業(yè)務(wù)表單控制狀態(tài)信息,其中業(yè)務(wù)表單類型=請假表單,業(yè)務(wù)表 單id=新建的請假表單id,變化后的業(yè)務(wù)表單數(shù)據(jù)=請假表單數(shù)據(jù)進(jìn)行序列化后的二進(jìn)制 字節(jié)碼,業(yè)務(wù)表單的控制狀態(tài)=NewState。
[0188] 操作提交處理器120對該業(yè)務(wù)表單控制狀態(tài)信息執(zhí)行"提交"操作,使得業(yè)務(wù)表單 控制狀態(tài)信息中的業(yè)務(wù)表單的控制狀態(tài)變?yōu)镹ewProcessState。
[0189] 工作流發(fā)起攔截器130對請假表單的新建操作進(jìn)行攔截,發(fā)現(xiàn)該操作需要進(jìn)行工 作流處理,新建請假到的方法為 LeaveFormService.newLeaveForm(LeaveForm form)。則 130生成新建請假表單操作的方法調(diào)用堆棧信息,其中調(diào)用類名=LeaveFormService,調(diào)用 方法名=newLeaveForm、方法參數(shù)=LeaveForm form。并將該信息存入方法調(diào)用堆棧庫210 中。
[0190] 工作流處理中查看請假單信息
[0191] 業(yè)務(wù)表單信息查看器310從業(yè)務(wù)表單庫230中查詢是否有新建請假單數(shù)據(jù),發(fā)現(xiàn) 沒有。則業(yè)務(wù)表單信息替換器320從業(yè)務(wù)表單控制信息庫210中獲取到新建請假單的控制 狀態(tài)信息,并提取其中的變化后的業(yè)務(wù)表單數(shù)據(jù),采用反序列化的方法恢復(fù)其數(shù)據(jù)表示格 式,最后再采用反射技術(shù)實(shí)現(xiàn)到請假單頁面數(shù)據(jù)的加載與展示。
[0192] 成功完成新建請假單工作流
[0193] 新建請假單工作流處理完成時,工作流完成器150首先從業(yè)務(wù)表單控制信息 庫220中獲取之前存儲的新建請假單的狀態(tài)控制信息,操作接受處理器140在狀態(tài)控 制信息上執(zhí)行"接受"操作,使得業(yè)務(wù)表單控制狀態(tài)信息中的業(yè)務(wù)表單的控制狀態(tài)變?yōu)?NormalState。
[0194] 工作流完成器150在從方法調(diào)用堆棧庫210中提取新建請假單的操作方法堆 棧,其中調(diào)用類名=LeaveFormService,調(diào)用方法名=newLeaveForm、方法參數(shù)=LeaveForm form。并米用反射技術(shù),重新調(diào)用執(zhí)行 LeaveFormService. newLeaveForm (LeaveForm form),使得該請假單的數(shù)據(jù)存入業(yè)務(wù)表單庫230中。
[0195] 以上詳細(xì)描述了本發(fā)明的較佳具體實(shí)施例,應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)無需創(chuàng) 造性勞動就可以根據(jù)本發(fā)明的構(gòu)思做出諸多修改和變化。因此,凡本【技術(shù)領(lǐng)域】中技術(shù)人員 依本發(fā)明構(gòu)思在現(xiàn)有技術(shù)基礎(chǔ)上通過邏輯分析、推理或者根據(jù)有限的實(shí)驗(yàn)可以得到的技術(shù) 方案,均應(yīng)該在由本權(quán)利要求書所確定的保護(hù)范圍之中。
【權(quán)利要求】
1. 一種使遺留系統(tǒng)具備工作流處理能力的方法,其特征在于包括: 截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù),并將業(yè)務(wù)表單對象參數(shù)存儲至一方法調(diào)用 堆棧數(shù)據(jù)庫中; 根據(jù)所述業(yè)務(wù)表單對象參數(shù),判斷該業(yè)務(wù)表單操作是否需要進(jìn)行工作流處理; 如否,則從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表單對象參數(shù)以完成該業(yè)務(wù)表單 操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用; 如是,則發(fā)起并執(zhí)行工作流,然后判斷所述工作流是否成功結(jié)束; 如否,則使所述業(yè)務(wù)表單操作以失敗結(jié)束,同時獲取到該業(yè)務(wù)表單控制狀態(tài)信息,執(zhí)行 "拒絕"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換; 如是,則從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表單對象參數(shù)以完成該業(yè)務(wù)表單 操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用,同時獲取到該業(yè)務(wù)表單控制 狀態(tài)信息,執(zhí)行"接受"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換。
2. 根據(jù)權(quán)利要求1所述的使遺留系統(tǒng)具備工作流處理能力的方法,其特征在于: 所述業(yè)務(wù)表單對象參數(shù)包括調(diào)用類名、調(diào)用方法名和調(diào)用方法參數(shù)。
3. 根據(jù)權(quán)利要求1所述的使遺留系統(tǒng)具備工作流處理能力的方法,其特征在于: 在截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù)后還包括:根據(jù)所述業(yè)務(wù)表單對象參數(shù)生 成業(yè)務(wù)表單控制狀態(tài)信息,所述業(yè)務(wù)表單控制狀態(tài)信息包括在一定操作條件下可相互轉(zhuǎn)換 的八種控制狀態(tài):新建狀態(tài)、新建工作流處理中狀態(tài)、新建失敗狀態(tài)、正常狀態(tài)、修改工作流 處理中狀態(tài)、修改失敗裝置、刪除工作流處理中狀態(tài)以及被刪除狀態(tài)。
4. 根據(jù)權(quán)利要求3所述的使遺留系統(tǒng)具備工作流處理能力的方法,其特征在于還包括 遺留系統(tǒng)的查看業(yè)務(wù)表單數(shù)據(jù)的步驟,具體如下: 執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,加載業(yè)務(wù)表單的數(shù)據(jù); 檢查所述業(yè)務(wù)表單控制狀態(tài)信息,是否包含該業(yè)務(wù)表單數(shù)據(jù); 如不包含,則將業(yè)務(wù)表單的數(shù)據(jù)送業(yè)務(wù)表單處理頁面顯示; 如包含,則根據(jù)業(yè)務(wù)表單控制狀態(tài)信息,修改業(yè)務(wù)表單處理頁面的狀態(tài)。
5. 根據(jù)權(quán)利要求3所述的使遺留系統(tǒng)具備工作流處理能力的方法,其特征在于還包括 工作流處理中查看業(yè)務(wù)表單數(shù)據(jù)的步驟,具體如下: 在工作流處理頁面中顯示即將發(fā)生變化的業(yè)務(wù)表單信息; 在接收到工作流處理頁面顯示請求后,將執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,加載并 顯示業(yè)務(wù)表單數(shù)據(jù); 判斷業(yè)務(wù)表單操作類型,所述業(yè)務(wù)表單操作類型包括新建、刪除和修改三種類型; 如果是刪除,則將業(yè)務(wù)表單數(shù)據(jù)送工作流處理中的頁面中進(jìn)行顯示; 如果是新建或修改,則將前述加載的業(yè)務(wù)表單數(shù)據(jù)替換為新建或修改后的業(yè)務(wù)表單數(shù) 據(jù)。
6. -種使遺留系統(tǒng)具備工作流處理能力的系統(tǒng),其特征在于包括: 業(yè)務(wù)表單操作截取模塊,用于截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù),并將業(yè)務(wù)表 單對象參數(shù)存儲至一方法調(diào)用堆棧數(shù)據(jù)庫中; 工作流判斷模塊,用于根據(jù)所述業(yè)務(wù)表單對象參數(shù),判斷該業(yè)務(wù)表單操作是否需要進(jìn) 行工作流處理,如否,則執(zhí)行完成業(yè)務(wù)表單邏輯操作模塊,如是,則執(zhí)行工作流發(fā)起與結(jié)束 判斷模塊; 完成業(yè)務(wù)表單邏輯操作模塊,用于從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表單對 象參數(shù)以完成該業(yè)務(wù)表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用; 工作流發(fā)起和結(jié)束判斷模塊,用于發(fā)起并執(zhí)行工作流,然后判斷所述工作流是否成功 結(jié)束,如否,則執(zhí)行失敗結(jié)束模塊,如是,則執(zhí)行成功結(jié)束模塊; 失敗結(jié)束模塊,用于使所述業(yè)務(wù)表單操作以失敗結(jié)束,同時獲取到該業(yè)務(wù)表單控制狀 態(tài)信息,執(zhí)行"拒絕"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換; 成功結(jié)束模塊,用于從所述方法調(diào)用堆棧數(shù)據(jù)庫讀取相應(yīng)的業(yè)務(wù)表單對象參數(shù)以完成 該業(yè)務(wù)表單操作,然后存儲至業(yè)務(wù)表單數(shù)據(jù)庫中以供其他用戶查詢調(diào)用,同時獲取到該業(yè) 務(wù)表單控制狀態(tài)信息,執(zhí)行"接受"操作使得業(yè)務(wù)表單控制狀態(tài)信息進(jìn)行轉(zhuǎn)換。
7. 根據(jù)權(quán)利要求6所述的使遺留系統(tǒng)具備工作流處理能力的系統(tǒng),其特征在于: 所述業(yè)務(wù)表單對象參數(shù)包括調(diào)用類名、調(diào)用方法名和調(diào)用方法參數(shù)。
8. 根據(jù)權(quán)利要求6所述的使遺留系統(tǒng)具備工作流處理能力的系統(tǒng),其特征在于: 所述業(yè)務(wù)表單操作截取模塊,在截取業(yè)務(wù)表單操作中的業(yè)務(wù)表單對象參數(shù)后還包括: 根據(jù)所述業(yè)務(wù)表單對象參數(shù)生成業(yè)務(wù)表單控制狀態(tài)信息,所述業(yè)務(wù)表單控制狀態(tài)信息包括 在一定操作條件下可相互轉(zhuǎn)換的八種控制狀態(tài):新建狀態(tài)、新建工作流處理中狀態(tài)、新建失 敗狀態(tài)、正常狀態(tài)、修改工作流處理中狀態(tài)、修改失敗裝置、刪除工作流處理中狀態(tài)以及被 刪除狀態(tài)。
9. 根據(jù)權(quán)利要求8所述的使遺留系統(tǒng)具備工作流處理能力的系統(tǒng),其特征在于還包括 遺留系統(tǒng)的查看業(yè)務(wù)表單數(shù)據(jù)的模塊,用于具體執(zhí)行如下動作: 執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,加載業(yè)務(wù)表單的數(shù)據(jù); 檢查所述業(yè)務(wù)表單控制狀態(tài)信息,是否包含該業(yè)務(wù)表單數(shù)據(jù); 如不包含,則將業(yè)務(wù)表單的數(shù)據(jù)送業(yè)務(wù)表單處理頁面顯示; 如包含,則根據(jù)業(yè)務(wù)表單控制狀態(tài)信息,修改業(yè)務(wù)表單處理頁面的狀態(tài)。
10. 根據(jù)權(quán)利要求8所述的使遺留系統(tǒng)具備工作流處理能力的系統(tǒng),其特征在于還包 括工作流處理中查看業(yè)務(wù)表單數(shù)據(jù)的模塊,用于具體執(zhí)行如下動作: 在工作流處理頁面中顯示即將發(fā)生變化的業(yè)務(wù)表單信息; 在接收到工作流處理頁面顯示請求后,將執(zhí)行遺留系統(tǒng)的業(yè)務(wù)表單查詢方法,加載并 顯示業(yè)務(wù)表單數(shù)據(jù) 判斷業(yè)務(wù)表單操作類型,所述業(yè)務(wù)表單操作類型包括新建、刪除和修改三種類型; 如果是刪除,則將業(yè)務(wù)表單數(shù)據(jù)送工作流處理中的頁面中進(jìn)行顯示; 如果是新建或修改,則將前述加載的業(yè)務(wù)表單數(shù)據(jù)替換為新建或修改后的業(yè)務(wù)表單數(shù) 據(jù)。
【文檔編號】G06Q10/06GK104217271SQ201310217934
【公開日】2014年12月17日 申請日期:2013年6月4日 優(yōu)先權(quán)日:2013年6月4日
【發(fā)明者】李引, 袁峰 申請人:廣州中國科學(xué)院軟件應(yīng)用技術(shù)研究所