褚燕華 高鍵
摘要:為解決目前創(chuàng)業(yè)擔(dān)保貸款多部門審批時(shí)面臨的數(shù)據(jù)共享性差、審核效率低,以及創(chuàng)業(yè)者難以精確跟蹤審批進(jìn)程的問題。通過對(duì)核心業(yè)務(wù)建模,基于Activiti工作流引擎,結(jié)合SpringBoot、Shiro等Web開發(fā)技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了創(chuàng)業(yè)擔(dān)保貸款協(xié)同審批系統(tǒng)。利用該系統(tǒng),可以達(dá)到創(chuàng)業(yè)者網(wǎng)上在線申請(qǐng),各審批部門協(xié)同審批的目的,極大地提高了創(chuàng)業(yè)擔(dān)保貸款的申請(qǐng)、審批效率。
關(guān)鍵詞:Activiti流程引擎;創(chuàng)業(yè)擔(dān)保貸款;工作流;MVC模式;SpringBoot框架
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)11-0028-03
1背景
“互聯(lián)網(wǎng)+”理念的提出激發(fā)了傳統(tǒng)行業(yè)與互聯(lián)網(wǎng)技術(shù)的深度融合。在政務(wù)服務(wù)體系建設(shè)方面,政府在轉(zhuǎn)變職能的過程中,不斷扎實(shí)推進(jìn)“互聯(lián)網(wǎng)+政務(wù)服務(wù)”工程建設(shè),借助于現(xiàn)代的信息化手段,實(shí)現(xiàn)信息采集、信息監(jiān)控等技術(shù)手段上的創(chuàng)新,進(jìn)而實(shí)現(xiàn)政府不同部門間的數(shù)據(jù)互通,將極大地節(jié)約老百姓辦事的時(shí)間成本,對(duì)政府服務(wù)功能的提高有著重要意義。
創(chuàng)業(yè)擔(dān)保貸款是國家推出的一項(xiàng)惠民政策性貸款,通過政府出資設(shè)立擔(dān)?;?,以人社部門擔(dān)保、金融機(jī)構(gòu)發(fā)放貸款、財(cái)政部門補(bǔ)貼利息的方式運(yùn)行,旨在解決自謀職業(yè)、自主創(chuàng)業(yè)者在創(chuàng)業(yè)初期自籌資金不足的問題。
創(chuàng)業(yè)擔(dān)保貸款的申請(qǐng)審批共包含六類主體,分別是“創(chuàng)業(yè)者”“區(qū)級(jí)就業(yè)部門”“區(qū)級(jí)財(cái)政部門”“市級(jí)就業(yè)部門”“市級(jí)財(cái)政部門”“金融機(jī)構(gòu)”(通常是銀行)。創(chuàng)業(yè)者將申請(qǐng)資料遞交到屬地的區(qū)就業(yè)部門,區(qū)就業(yè)部門主要核查創(chuàng)業(yè)者個(gè)人資料與企業(yè)資料的完整性、準(zhǔn)確性,審核完畢后由區(qū)就業(yè)部門將創(chuàng)業(yè)者的申請(qǐng)資料報(bào)送至市就業(yè)部門和金融機(jī)構(gòu),由市就業(yè)部門和金融機(jī)構(gòu)對(duì)創(chuàng)業(yè)者的擔(dān)保信息、征信信息進(jìn)行審核,這一過程通常稱為“創(chuàng)業(yè)者基礎(chǔ)資料審核”?!皠?chuàng)業(yè)者基礎(chǔ)資料審核”完畢后,由審核部門組成的聯(lián)合考查小組對(duì)創(chuàng)業(yè)者的經(jīng)營場(chǎng)所、經(jīng)營狀況進(jìn)行“實(shí)地考查”,考查完畢后最終給出審批意見,審批結(jié)束。
這一申請(qǐng)審批流程在實(shí)際操作中存在一些缺陷,一方面,數(shù)據(jù)流向存在于六類不同的主體之間,目前開發(fā)的創(chuàng)業(yè)擔(dān)保貸款審批系統(tǒng)中,通常是就業(yè)系統(tǒng)或是金融系統(tǒng)基于本單位內(nèi)控制度的需求而設(shè)計(jì)的,數(shù)據(jù)流向僅僅存在于單一的審核主體中,而就業(yè)系統(tǒng)、財(cái)政系統(tǒng)、金融系統(tǒng)間的數(shù)據(jù)傳輸主要是通過Excel表進(jìn)行,數(shù)據(jù)共享性差。另一方面,創(chuàng)業(yè)者難以準(zhǔn)確地、實(shí)時(shí)地跟蹤其申請(qǐng)的創(chuàng)業(yè)貸款的審批進(jìn)程。
通過工作流的引入,可以很好地將各個(gè)主體的申請(qǐng)、審核職能進(jìn)行整合,形成一條統(tǒng)一的、完整的、數(shù)據(jù)可共享的申請(qǐng)、審核鏈條。將工作流的優(yōu)勢(shì)與現(xiàn)行的創(chuàng)業(yè)擔(dān)保業(yè)務(wù)流程結(jié)合,既能實(shí)現(xiàn)業(yè)務(wù)的自動(dòng)流轉(zhuǎn)、并行審批,達(dá)到節(jié)約行政成本,提高決策效率的目的,又能提高政策執(zhí)行力,進(jìn)而規(guī)避職務(wù)風(fēng)險(xiǎn)。本文基于SpringBoot框架進(jìn)行開發(fā),以Activiti工作流引擎驅(qū)動(dòng)創(chuàng)業(yè)擔(dān)保貸款的各個(gè)業(yè)務(wù)流程,實(shí)現(xiàn)了創(chuàng)業(yè)擔(dān)保貸款的規(guī)范化、高效化審批,提高了創(chuàng)業(yè)擔(dān)保貸款發(fā)放效率。
2系統(tǒng)框架設(shè)計(jì)
系統(tǒng)采用B/S(瀏覽器,服務(wù)器)的開發(fā)模式,以及經(jīng)典的J2EE三層體系架構(gòu),將整個(gè)應(yīng)用系統(tǒng)分為表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。表現(xiàn)層提供用戶與系統(tǒng)交互的UI界面,通過Ajax異步請(qǐng)求實(shí)現(xiàn)與后端的數(shù)據(jù)交互,本系統(tǒng)使用Thymeleaf模板引擎來實(shí)現(xiàn)對(duì)HTML頁面內(nèi)容的渲染;業(yè)務(wù)邏輯層以Spring框架為核心,整合了Activiti工作流引擎用來實(shí)現(xiàn)對(duì)業(yè)務(wù)流程的控制,Shiro權(quán)限管理框架用來實(shí)現(xiàn)不用角色用戶對(duì)資源的訪問控制。數(shù)據(jù)訪問層使用Mybatis框架實(shí)現(xiàn)對(duì)數(shù)據(jù)的持久化操作。數(shù)據(jù)庫采用Mysql來存儲(chǔ)業(yè)務(wù)數(shù)據(jù)與流程數(shù)據(jù)。
3系統(tǒng)實(shí)現(xiàn)
本系統(tǒng)使用SpringBoot2.0框架進(jìn)行開發(fā),SpringBoot是基于Spring擴(kuò)展而來的高效開發(fā)框架。SpringBoot基于“約定優(yōu)于配置”的原則,實(shí)現(xiàn)了Spring的最大自動(dòng)化配置,可以快速開發(fā)基于Spring的應(yīng)用程序。
3.1業(yè)務(wù)流程建模
通過對(duì)創(chuàng)業(yè)擔(dān)保貸款的申請(qǐng)審批流程進(jìn)行分析之后,采用基于eclipse的可視化流程設(shè)計(jì)器Activiti Designer插件對(duì)創(chuàng)業(yè)擔(dān)保貸款的申請(qǐng)、審批流程進(jìn)行流程定義。創(chuàng)業(yè)擔(dān)保貸款申請(qǐng)審批業(yè)務(wù)流程模型圖如圖1所示。
創(chuàng)業(yè)擔(dān)保貸款的申請(qǐng)審批流程主要分為四個(gè)過程,即創(chuàng)業(yè)者申請(qǐng)、基礎(chǔ)信息審批、實(shí)地考查、反饋審批結(jié)果。下面分別對(duì)這四個(gè)過程的實(shí)現(xiàn)進(jìn)行描述。
3.1.1創(chuàng)業(yè)者申請(qǐng)
創(chuàng)業(yè)者通過注冊(cè)登錄系統(tǒng)后,即可通過表單填寫申請(qǐng)信息,信息包括個(gè)人信息、企業(yè)信息、擔(dān)保信息、圖片附件等信息,經(jīng)過系統(tǒng)對(duì)創(chuàng)業(yè)者提供的申請(qǐng)信息進(jìn)行數(shù)據(jù)的完整性、約束性以及數(shù)據(jù)間的邏輯關(guān)系校驗(yàn)無誤后,系統(tǒng)啟動(dòng)審批流程。啟動(dòng)流程的控制器(Controller)主要設(shè)計(jì)了以下兩個(gè)方法。第一個(gè)方法為:
applicantService.startFlow(ApplicantDetail a,Guarantor g,String userAccount)
該方法傳中,參數(shù)ApplicantDetail實(shí)體類封裝了創(chuàng)業(yè)者申請(qǐng)貸款的基本信息,Guarantor封裝了用戶的擔(dān)保信息,userAc-count用來標(biāo)記啟動(dòng)流程的用戶賬號(hào)。該方法主要完成持久化申請(qǐng)信息、擔(dān)保信息,啟動(dòng)流程實(shí)例,并建立業(yè)務(wù)數(shù)據(jù)id與流程實(shí)例id的雙向綁定功能,該方法最后返回啟動(dòng)的流程的實(shí)例對(duì)象。第二個(gè)方法為:
applicantService.addAnnex(String instanceid,ArrayList files)
該方法主要用來將用戶上傳的附件信息綁定到流程實(shí)例中,以供后續(xù)操作讀取附件信息。在整個(gè)流程啟動(dòng)的過程中,通過spring的注解@Transactional定義了整個(gè)啟動(dòng)過程為一個(gè)切面,可以確保在啟動(dòng)流程實(shí)例的過程中如果發(fā)生異常,業(yè)務(wù)操作可以回滾到最初的狀態(tài)。
“創(chuàng)業(yè)者申請(qǐng)”任務(wù)完成時(shí),在Activiti工作流中,通過自定義代理表達(dá)式(delegateExpression)的方式指定一個(gè)實(shí)現(xiàn)了TaskListener的類作為“創(chuàng)業(yè)者申請(qǐng)”這個(gè)用戶任務(wù)的“任務(wù)監(jiān)聽器”,該監(jiān)聽器主要完成“指定后續(xù)任務(wù)的辦理人”的功能。在創(chuàng)業(yè)擔(dān)保貸款的實(shí)際工作中,需要根據(jù)用戶填寫的地址信息,由屬地的區(qū)級(jí)就業(yè)部門、區(qū)級(jí)財(cái)政部門、金融機(jī)構(gòu)去審核,該任務(wù)監(jiān)聽器主要獲取創(chuàng)業(yè)者申報(bào)信息,之后從數(shù)據(jù)庫中獲取創(chuàng)業(yè)者屬地的區(qū)級(jí)就業(yè)部門、區(qū)級(jí)財(cái)政部門、金融機(jī)構(gòu)審核人員的賬戶作為后續(xù)任務(wù)的辦理人,并封裝成一個(gè)HashMap,最后調(diào)用Activiti的API完成當(dāng)前任務(wù)。
3.1.2基礎(chǔ)信息審批
基礎(chǔ)信息審批包含區(qū)級(jí)就業(yè)部門、市級(jí)就業(yè)部門、金融機(jī)構(gòu)分別對(duì)創(chuàng)業(yè)者的個(gè)人信息、擔(dān)保信息、征信信息進(jìn)行審核。
創(chuàng)業(yè)者提交申請(qǐng)信息后,首先由屬地的就業(yè)部門對(duì)創(chuàng)業(yè)者提交的基礎(chǔ)信息進(jìn)行審核,審核確認(rèn)后流程流轉(zhuǎn)到一個(gè)并行網(wǎng)關(guān),由金融機(jī)構(gòu)和市就業(yè)部門的工作人員分別對(duì)創(chuàng)業(yè)者的個(gè)人征信信息和擔(dān)保信息進(jìn)行審核,并分別給出同意或者是駁回的審批意見,并行網(wǎng)關(guān)的出口通過代理表達(dá)式的方式指定了一個(gè)監(jiān)聽器,用來獲取市就業(yè)工作人員和金融機(jī)構(gòu)做出的審批意見,如果全部審核通過,流程會(huì)流轉(zhuǎn)到實(shí)地考查節(jié)點(diǎn)。
3.1.3實(shí)地考查
“實(shí)地考查”是指由市、區(qū)級(jí)就業(yè)部門、區(qū)級(jí)財(cái)政部門、金融機(jī)構(gòu)組成的聯(lián)合調(diào)查組,實(shí)地調(diào)研創(chuàng)業(yè)者的經(jīng)營場(chǎng)所、經(jīng)營狀況、帶動(dòng)就業(yè)人數(shù)等情況,并分別給出各自的審批意見。當(dāng)創(chuàng)業(yè)者申請(qǐng)貸款額度較大時(shí),往往需要市級(jí)財(cái)政部門參與審批。在Activiti流程圖中,用五個(gè)并行的用戶任務(wù)來表示,通過在包容網(wǎng)關(guān)的每條線路上設(shè)置條件,實(shí)現(xiàn)對(duì)于不同貸款額度下是否需要市級(jí)財(cái)政部門參與審批的需求。如果參與審批的單位全部審核通過,流程進(jìn)入到反饋審批結(jié)果。
3.1.4反饋審批結(jié)果
“反饋審批結(jié)果”主要用來向各個(gè)流程的參與者反饋此次審批的最終認(rèn)定結(jié)果。這一功能的實(shí)現(xiàn)主要通過Activiti的兩個(gè)服務(wù)任務(wù)(servicetask)來完成。第一個(gè)任務(wù)“反饋審核認(rèn)定審批表”用來獲取本次審批流程中的所有流程變量、流程批注,生成pdf文檔供向流程參與者在線預(yù)覽或下載。第二個(gè)任務(wù)“發(fā)送消息:審核通過”通過調(diào)用短信服務(wù)接口向創(chuàng)業(yè)者發(fā)送審核通過的信息。
3.2流程數(shù)據(jù)的查詢
系統(tǒng)中的各類主體均會(huì)涉及流程數(shù)據(jù)的查詢,如查詢正在審批的流程實(shí)例信息、待辦任務(wù)信息、歷史流程實(shí)例信息等。為減少冗余代碼,提高代碼的復(fù)用性,系統(tǒng)將這部分功能封裝成一個(gè)工具類,不同角色的用戶通過調(diào)用工具類中的方法來查詢所需要的流程信息。查詢功能的具體實(shí)現(xiàn)通過Activiti提供的兩類查詢API來完成,即標(biāo)準(zhǔn)查詢與本地化(NativeQuery)查詢。標(biāo)準(zhǔn)查詢是以Java對(duì)象的方式通過創(chuàng)建一個(gè)指定類型的查詢對(duì)象后用鏈?zhǔn)骄幊痰姆椒ㄔO(shè)置查詢參數(shù),最后返回查詢結(jié)果,如待辦任務(wù)信息、歷史流程實(shí)例等都通過標(biāo)準(zhǔn)查詢來實(shí)現(xiàn)。本地化(NativeQuery)的查詢方式允許用戶通過傳人標(biāo)準(zhǔn)的SQL語句,最終通過調(diào)用mybatis的API對(duì)數(shù)據(jù)庫中的流程表進(jìn)行查詢,可以滿足一些復(fù)雜的查詢需求。
3.3流程資源的管理
SpringBoot在集成Activiti時(shí),系統(tǒng)啟動(dòng)時(shí)默認(rèn)自動(dòng)部署re-sources/processes文件夾下的流程資源文件,但這種部署方式遇到流程圖調(diào)整時(shí)都需要頻繁更改系統(tǒng)源碼且重啟系統(tǒng)。為了能夠靈活、高效管理系統(tǒng)的流程資源,系統(tǒng)將這部分需求單獨(dú)抽取成為一個(gè)模塊,使系統(tǒng)管理人員可以通過Web頁面來管理系統(tǒng)的流程資源。流程資源的管理的后臺(tái)代碼主要通過一個(gè)控制器類來實(shí)現(xiàn),該類內(nèi)部封裝了Activiti工作流對(duì)流程資源管理的API,如流程資源的部署、刪除等,同時(shí)根據(jù)實(shí)際需求,新增了讀取流程資源信息的方法,如以XML或圖片的形式查看已部署的流程資源。
4結(jié)束語
Activiti是一款開源的、輕量級(jí)的、實(shí)現(xiàn)了BPMN2.0規(guī)范的工作流引擎,本文基于Activiti工作流引擎為創(chuàng)業(yè)擔(dān)保貸款的申請(qǐng)審批流程的優(yōu)化提供了高效的系統(tǒng)解決方案。本文從系統(tǒng)整體架構(gòu)設(shè)計(jì)、業(yè)務(wù)流程建模、流程數(shù)據(jù)查詢、流程資源管理幾個(gè)重要的方面對(duì)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)進(jìn)行了描述,通過該系統(tǒng),將創(chuàng)業(yè)擔(dān)保貸款的申請(qǐng)、審批流程制定成一套完整的業(yè)務(wù)流程規(guī)范,達(dá)到了將各審核部門有機(jī)地整合、協(xié)同辦公的目的,并實(shí)現(xiàn)了對(duì)“業(yè)務(wù)流程精確管控”的目標(biāo)。下一步工作是增強(qiáng)系統(tǒng)擴(kuò)展性,運(yùn)用柔性工作流技術(shù),滿足不同地區(qū)在不同的創(chuàng)業(yè)擔(dān)保貸款業(yè)務(wù)流程下也可以通過自定義業(yè)務(wù)流程實(shí)現(xiàn)高效的協(xié)同審批。