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