|
概述:
本工作流以一套金融軟件業(yè)務(wù)處理流程為例,實(shí)現(xiàn)功能包括:流程自定義、步驟自定義、步驟重復(fù)次數(shù)、步驟類型(順序/并行)、定義排序功能,完全使用數(shù)據(jù)庫(kù)實(shí)現(xiàn),本文將詳細(xì)分析業(yè)務(wù)流程、系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn)細(xì)節(jié)。
術(shù)語(yǔ):
工作流(Workflow)[1],是對(duì)工作流程及其各操作步驟之間業(yè)務(wù)規(guī)則的抽象、概括、描述。工作流建模,即將工作流程中的工作如何前后組織在一起的邏輯和規(guī)則在計(jì)算機(jī)中以恰當(dāng)?shù)哪P瓦M(jìn)行表示并對(duì)其實(shí)施計(jì)算。工作流要解決的主要問(wèn)題是:為實(shí)現(xiàn)某個(gè)業(yè)務(wù)目標(biāo),在多個(gè)參與者之間,利用計(jì)算機(jī),按某種預(yù)定規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù)。工作流管理系統(tǒng)(Workflow Management System, WfMS)的主要功能是通過(guò)計(jì)算機(jī)技術(shù)的支持去定義、執(zhí)行和管理工作流,協(xié)調(diào)工作流執(zhí)行過(guò)程中工作之間以及群體成員之間的信息交互。工作流需要依靠工作流管理系統(tǒng)來(lái)實(shí)現(xiàn)。
流程:工作流包含多個(gè)工作流程,處理時(shí)可任選一種流程進(jìn)行處理,其包含步驟信息;
步驟:流程中每一環(huán)節(jié)的名稱,某一流程將包含多個(gè)步驟(其他工作流中也稱為節(jié)點(diǎn))。
正文:
第一部分、業(yè)務(wù)邏輯分析
1、自定義工作流是指工作流各個(gè)環(huán)節(jié)及其參數(shù)完全自定義,常用于公文處理、業(yè)務(wù)流程簽批處理等。本系統(tǒng)來(lái)源于本人參與開(kāi)發(fā)的一套金融管理軟件,業(yè)務(wù)處理人分不同角色擁有不同權(quán)限進(jìn)行業(yè)務(wù)處理,將貸款數(shù)據(jù)庫(kù)從貸款調(diào)查一直到貸款簽批的完整流程。其中由于軟件功能要求,需要將貸款調(diào)查固定置為第一步驟,將貸款簽批置為最后一步驟。
其中數(shù)字表示當(dāng)前步驟重復(fù)次數(shù)。
2、用戶業(yè)務(wù)處理部分包括:
1)、通過(guò):當(dāng)前步驟處理通過(guò),(選擇下一處理人)進(jìn)入當(dāng)前流程中下一步驟,若為末步驟,則流程完成;
2)、退回:將步驟退回至上一步驟,即返回至上一處理人處,若為首步驟,則不可進(jìn)行退回;
3)、否決:將步驟直接結(jié)束,不可再進(jìn)行操作,或者回退至第一步驟;本系統(tǒng)中采用第二種方式;
4)、撤回:若當(dāng)前步驟已處理,且在下一處理人未進(jìn)行處理的情況下可進(jìn)行撤回操作。
3、順序與并行
順序是指上一處理人指定某一處理人時(shí),其他擁有此步驟權(quán)限的操作員不可進(jìn)行查看和操作,必須當(dāng)前處理人處理完畢后,流程才能繼續(xù);并行是由上一處理人指定固定多個(gè)處理人時(shí),由任一員工處理即可,不分前后順序,全部處理完成,進(jìn)入下一步驟,此處理人數(shù)目由當(dāng)前步驟重復(fù)次數(shù)確定。
兩者之間對(duì)應(yīng)關(guān)系如下。
第二部分、系統(tǒng)設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì)如下:
1)、流程信息表:S_flow_info(flow_id,flow_name)
2)、步驟信息表:S_action_info(action_id,action_name)
3)、流程-步驟信息表:S_step_info(step_id,action_id,flow_id,step_repeat_no,step_order_no,step_type)
(其中step_repeat_no為重復(fù)次數(shù),step_order_no為排序號(hào),step_type為類型:0為順序,1為并行)
4)、流程處理明細(xì)表:L_tranct_proc(proc_id,loan_id,step_id,step_action,step_emp_id)
(其中l(wèi)oan_id為數(shù)據(jù)主表主鍵,step_id關(guān)聯(lián)S_action_info,step_action
存儲(chǔ)處理結(jié)果:0--不通過(guò),1--通過(guò),2--退回,3--否決,4--撤回,step_emp_id為當(dāng)前處理員工編號(hào))
其中流程表、步驟表、流程步驟關(guān)系表為核心數(shù)據(jù)表,它們?nèi)叽_定工作流的完全自定義。流程處理明細(xì)表為重要數(shù)據(jù)表,查詢數(shù)據(jù)主要通過(guò)此表進(jìn)行連接查詢。
其他相關(guān)表包括:
1)、數(shù)據(jù)主表L_loan_info(loan_id,loan_name,flow_id,step_id,...)
(flow_id為流程編號(hào),step_id關(guān)聯(lián)S_action_info)
2)、操作員工表E_emp_info(emp_id,emp_name,..)
3)、角色信息表E_role_info(role_id,role_name)
4)、員工-角色關(guān)系表E_emp_role(emp_role_id,emp_id,role_id)
(關(guān)聯(lián)角色表與員工表)
5)、步驟角色關(guān)系表S_action_role(action_role_id,action_id,role_id)
(關(guān)聯(lián)角色表與步驟表)
6)、下一處理人表L_loan_next_emp(loan_next_emp_id,loan_id,next_emp_id,step_id)
(其中next_emp_id關(guān)聯(lián)操作員工表E_emp_info,step_id關(guān)聯(lián)S_action_info)
其中數(shù)據(jù)流向如下:
1)業(yè)務(wù)最開(kāi)始發(fā)生時(shí),數(shù)據(jù)主表L_loan_info插入數(shù)據(jù),其step_id為其所在流程的第一個(gè)步驟的編號(hào),可根據(jù)下一步驟的重復(fù)次數(shù)來(lái)去將下一處理人的操作員編號(hào)插入到下一處理人表L_loan_next_emp中;插入流程處理明細(xì)表中數(shù)據(jù),step_id為當(dāng)前步驟編號(hào);更新主表L_loan_info的step_id為下一步驟編號(hào);
2)流程進(jìn)入下一步驟;
3)下一處理人可查看當(dāng)前待處理數(shù)據(jù)(以及本環(huán)節(jié)待處理數(shù)據(jù)),選定進(jìn)行處理,將處理結(jié)果(0:不通過(guò),1:通過(guò),2:退回,3:否決)插入到流程處理明細(xì)表中,若為通過(guò)由更新主表L_loan_info的step_id為下一步驟編號(hào),退回更新為上一步驟編號(hào),否決則更新到第一個(gè)步驟編號(hào);
4)在本人已處理數(shù)據(jù)中可查看已處理過(guò)的數(shù)據(jù),若下一步驟中操作員還沒(méi)有進(jìn)行操作,則可對(duì)數(shù)據(jù)操作進(jìn)行撤回,撤回時(shí)將處理結(jié)果(4:撤回)插入到流程處理明細(xì)表中,其中的next_emp_id為本人操作員工編號(hào));更新主表L_loan_info的step_id為流程的第一步驟的編號(hào);
5)下一處理人繼續(xù)3)、4)的循環(huán),直至流程的結(jié)束;
6)流程最后一個(gè)步驟,將處理結(jié)果中step_id值為0插入至流程處理明細(xì)中。
第三部分、實(shí)現(xiàn)細(xì)節(jié)
1、第一步驟中獲得數(shù)據(jù)列表代碼如下:
SELECT * FROM L_loan_info WHERE step_id=@step_id
it知識(shí)庫(kù):一套完整自定義工作流的實(shí)現(xiàn),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。