一套完整自定義工作流的實(shí)現(xiàn)_第1頁(yè)
一套完整自定義工作流的實(shí)現(xiàn)_第2頁(yè)
一套完整自定義工作流的實(shí)現(xiàn)_第3頁(yè)
一套完整自定義工作流的實(shí)現(xiàn)_第4頁(yè)
一套完整自定義工作流的實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一套完整自定義工作流的實(shí)現(xiàn)概述:本工作流以一套金融軟件業(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ì)算。工作流要解決的主要問題是:為實(shí)現(xiàn)某個(gè)業(yè)務(wù)目標(biāo),在 多個(gè)參與者之間,利用計(jì)算機(jī),按某種預(yù)定規(guī)則自動(dòng)傳遞文檔、信息或者任務(wù)。工作流管理 系統(tǒng)(Workflow Man

2、agement System, WfMS)的主要功能是通過計(jì)算機(jī)技術(shù)的支持 去定義、執(zhí)行和管理工作流,協(xié)調(diào)工作流執(zhí)行過程中工作之間以及群體成員之間的信息交互。 工作流需要依靠工作流管理系統(tǒng)來實(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)來源于本人參與開發(fā)的一套金融管理軟件,業(yè)務(wù)處理人分不同角色擁有不 同權(quán)限進(jìn)行業(yè)務(wù)處理,將貸款數(shù)據(jù)庫(kù)從貸款調(diào)查一直到貸款簽批的

3、完整流程。其中由于軟件 功能要求,需要將貸款調(diào)查固定置為第一步驟,將貸款簽批置為最后一步驟。其中數(shù)字表示當(dāng)前步驟重復(fù)次數(shù)。2、用戶業(yè)務(wù)處理部分包括:1)、通過:當(dāng)前步驟處理通過,(選擇下一處理人)進(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)行查看和操作,

4、必須當(dāng)前處理人處理完畢后,流程才能繼續(xù);并行是由上一處理人指定固定多個(gè)處理人時(shí), 由任一員工處理即可,不分前后順序,全部處理完成,進(jìn)入下一步驟,此處理人數(shù)目由當(dāng)前 步驟重復(fù)次數(shù)確定。兩者之間對(duì)應(yīng)關(guān)系如下。4)、流程處理明細(xì)表:L_tranct_proc(proc_id,loan_id,step_id,step_action,step_emp_id)(其中 loan_id 為數(shù)據(jù)主表主鍵,step_id 關(guān)聯(lián) S_action_info, step_action存儲(chǔ)處理結(jié)果:0-不通過,1-通過,2-退回,3-否決,4-撤回,step_emp_id為當(dāng)前處理員工編號(hào))流程信息表流程一步驟對(duì)應(yīng)表步

5、驟信息表其中流程表、步驟表、流程步驟關(guān)系表為核心數(shù)據(jù)表,它們?nèi)叽_定工作流的完全自定義。流程處理明細(xì)表為重要數(shù)據(jù)表,查詢數(shù)據(jù)主要通過此表進(jìn)行連接查詢。流程處理明細(xì)表其他相關(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,em

6、p_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ù)最開始發(fā)生時(shí),數(shù)據(jù)主表L_loan_info插入數(shù)據(jù),其step_id為其所在流程的第 一個(gè)步驟的編號(hào),可根據(jù)下一步驟的重復(fù)次數(shù)

7、來去將下一處理人的操作員編號(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:不通過,1:通過,2:退回,3:否決)插入到流程處理明細(xì)表中,若為通過由更新主表L_loan_info的step_id為下一步驟編號(hào),退回更新為上一步驟編號(hào),否決則更 新到第一個(gè)步驟編號(hào);4)在本人已處理數(shù)據(jù)中可查看已處理過的數(shù)據(jù),若下一步驟中操作員還沒有進(jìn)行操作,則 可對(duì)數(shù)據(jù)操作進(jìn)

8、行撤回,撤回時(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ù)列表代碼如下:1SELECT * FROM L_loan_info WHERE step_id=step_id其中step_id使用代碼得到當(dāng)前數(shù)據(jù)的第一步驟編號(hào)2、第一步驟獲得已處理數(shù)據(jù)列表代碼:1SELECT * FROM L_loan_inf

9、o WHERE loan_id IN (SELECT DISTINCT loan_id FROM l_tranct_proc WHERE step_id=step_id)3、獲得任一步驟數(shù)據(jù)列表(含未處理和已處理)View Code?12/ /方法:獲得審批(或簽批)數(shù)據(jù)列表/ 開發(fā): 王洪劍 HYPERLINK /walkingp /walkingp HYPERLINK / / 時(shí)間:2010-6-29/最后修改時(shí)間:2010-6-29/修改詳情:/ / 簽批人(默認(rèn)為當(dāng)前操作員):0、本環(huán)節(jié)其他、當(dāng)前處理人/ 步驟 / 操作值:0:待審批/簽批 1:已審批/簽批_ :所有/ 版本:3.0/

10、 public List GetModelByProcess(intstep_emp_id, int action_id, stringstep_action, int version)(#regionstring sql = SELECT COUNT(*) FROM s_flow_info WHEREdel_sign=1 and flow_id in(selectflow_id from s_step_info where action_id=action_id);34567891011121314151617181920212223242526SqlParameter口 para =( n

11、ew SqlParameter(action_id, SqlDbType.Int, 4) ;272829303132333435363738394041424344454647484950int count = int.Parse(DbHelperSQL.GetSingle(sql, para).ToString();string口 arrFlowId = new stringcount;/流程信息sql = SELECT flow_id FROM s_flow_info WHERE del_sign=1 andflow_id in(select flow_id froms_step_info

12、 where action_id=action_id);DataTable dt = DbHelperSQL.Query(sql, para).Tables0;for (int i = 0; i count; i+) ( arrFlowIdi = dt.Rowsiflow_id.ToString(); string pre_action_id = new stringcount;/當(dāng)前流程中上一 流程idstring next_action_id = new stringcount;/當(dāng)前流程中下 一流程idfor (int i = 0; i count; i+)(sql = SELECT T

13、OP 1 action_id FROM s_step_info WHERE step_order_no(SELECT order_no FROM S_action_info WHERE action_id=action_id) ANDflow_id= + arrFlowIdi + ORDER BY s_step_info.step_order_no DESC;SqlParameter口 paras =( new SqlParameter(action_id, SqlDbType.Int, 4) ;515253545556575859606162636465666768697071727374p

14、aras0.Value = action_id;dt.Clear();dt = DbHelperSQL.Query(sql, paras).Tables0;if (dt.Rows.Count 0)pre_action_idi = dt.Rows00.ToString();sql = SELECT TOP 1 action_id FROM s_step_info,l_loan_infoWHEREstep_order_no(SELECT order_no FROMS_action_info WHERE action_id=action_id) AND s_step_info.flow_id=+ a

15、rrFlowIdi + ORDER BYs_step_info.step_order_no”;SqlParameter口 paras_ =(new SqlParameter(action_id,SqlDbType.Int,4);paras_0.Value = action_id;dt.Clear();dt = DbHelperSQL.Query(sql, paras).Tables0;if (dt.Rows.Count 0)next_action_idi = dt.Rows00.ToString();DataSet ds = new DataSet();for (int k = 0; k co

16、unt; k+)(StringBuilder sbTmp = new StringBuilder();if (!string.IsNullOrEmpty(pre_action_idk)757677787980818283848586878889909192939495969798sbTmp.Append(step_id=+ pre_action_idk + ANDstep_action=1);if (!string.IsNullOrEmpty(pre_action_idk)& !string.IsNullOrEmpty(next_action_idk)sbTmp.Append( OR );if

17、 (!string.IsNullOrEmpty(next_action_idk)sbTmp.Append(step_id=+ next_action_idk + ANDstep_action=2);string strTemp = 1=1;if (!string.IsNullOrEmpty(sbTmp.ToString()strTemp += AND + sbTmp.ToString();sql = SELECT * FROM l_loan_info WHERE ;sql += 1=1;if (step_action = 1)/已審批(簽批)(sql += AND loan_id IN (SE

18、LECT loan_id FROM l_tranct_procWHEREstep_id=action_id AND step_action=1;if (step_emp_id = 0)sql +=);elsesql += AND step_emp_id=step_emp_id); else if (step_action = 0)/待審批(簽批)99100101102103104105106107108109110111112113114115116117118119120121122(sql += AND step_id=action_id AND loan_id IN (SELECT lo

19、an_id FROM l_tranct_proc WHERE +strTemp + );if (step_emp_id = 0)sql += ;elsesql += AND loan_id IN (select loan_id froml_loan_next_empwherenext_emp_id=step_emp_id);else if (step_action = )/所有(sql += AND loan_id IN (SELECT loan_id FROM l_tranct_procWHERE step_id=action_id ANDstep_action=1;if (step_emp

20、_id = 0)sql += 廣;elsesql += AND step_emp_id=step_emp_id);/ 已審批(簽批)sql += UNION ;sql += AND step_id=action_id AND loan_id IN (SELECT loan_id FROM l_tranct_proc WHERE + strTemp + );if (step_emp_id = 0)123124125126127128129sql += ;elsesql += AND loan_id IN (select loan_id froml_loan_next_empwherenext_e

21、mp_id=step_emp_id);/待審批(簽批)sql += ORDER BY loan_id DESC;SqlParameter口 parameters =(new SqlParameter(step_emp_id,SqlDbType.Int,4),new SqlParameter(action_id,SqlDbType.Int,4);parameters0.Value = step_emp_id;parameters1.Value = action_id;if (ds.Tables.Count = 0)ds = DbHelperSQL.Query(sql, parameters);e

22、lse(ds.Merge(DbHelperSQL.Query(sql, parameters), true,MissingSchemaAction.AddWithKey);dt = ds.Tables0;/*去除重復(fù)*/DataView dv = new DataView(dt);string strCol =( loan_id ;dt = dv.ToTable(true, strCol);Hope.Model.L_loan_info model;List modelList = newList();if (dt.Rows.Count 0)( #regionfor (int i = 0; i

23、1工作流配置Sfi號(hào)廠1周查蠱批疏程調(diào)查完成后亙接進(jìn)&簽批流程E周直-業(yè)努聿萱塞批流程調(diào)查后業(yè)會(huì)曰直,激人簽批流程r3周查-史蓉聿登孜險(xiǎn)畝登斐卅流程調(diào)查后進(jìn)行業(yè)務(wù)審查-鳳險(xiǎn)審查進(jìn)入簽北流程r4周查-業(yè)答審查-可險(xiǎn)審查狙蓉審查空先流程調(diào)查后進(jìn)行業(yè)蓉審查-風(fēng)險(xiǎn)審查也客審查,進(jìn)a筌r5貸審會(huì)流程調(diào)查復(fù)秋命門審孝3彼貸軍嘗前提落實(shí)落.添加流程選定修改選走刪除茶說流程不可冊(cè)際削E欄卜特.頃專殘選揮;阿晚調(diào)查正以數(shù)1T進(jìn)坯力.式偵序處理抖序號(hào)廠徑豆晝匿主氫注數(shù)廠隊(duì)章王尋數(shù)必在方丈岐廳處理二排序號(hào)1g弒II序卅理T猝序號(hào)2廠咂B杏圭*數(shù)Eg堂玷泌廠耕辦砂圭數(shù)廠芻甬H.申當(dāng)聿s沃歌遷玨方式1質(zhì)片處坦工n療021/it理方式姓丑方式1版

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論