聶常紅
傳統(tǒng)的科研管理系統(tǒng)主要是實現(xiàn)科研相關信息的收集、查詢和發(fā)布等功能,而科研管理業(yè)務流程中核心的項目申報的評審、審批等業(yè)務無法做到自動、高效地進行。本文提出在科研管理系統(tǒng)中引入JBPM工作流技術,實現(xiàn)高效、智能的科研管理,提高科研管理水平和工作效率,最大可能實現(xiàn)無紙化和網(wǎng)絡化的辦公目的。
(一)工作流
工作流就是工作流程的計算模型,即將工作流程中的工作組織在一起的邏輯和規(guī)則,在計算機中以恰當?shù)哪P瓦M行表示并對其實施計算。工作流解決的主要問題是:為實現(xiàn)某個業(yè)務目標,在多個參與者之間,利用計算機,按某種預定規(guī)則自動傳遞文檔、信息或者任務。
(二)工作流引擎JBPM4.4
JBPM4.4采用流程描述語言jPDL來描述業(yè)務流程,采用Hibernate對流程數(shù)據(jù)持久化。使用JBPM4.4開發(fā)工作流程管理系統(tǒng)時,首先需要定義流程定義文件,然后將流程定義文件部署到數(shù)據(jù)庫中。
(三)JBPM4.4提供的服務
在開發(fā)項目時,我們主要是使用JBPM4.4提供的RepositoryService、ExecutionService、TaskService、HistoryService和ManagementService這幾個服務來實現(xiàn)對工作流的管理,它們全部由J B P M的工廠類ProcessEngine來提供。
高校科研管理系統(tǒng)中涉及工作流內容的主要有立項管理和流程管理兩個模塊。流程管理包括流程定義管理和流程監(jiān)控。定義流程文件后,科研管理員將流程定義部署到數(shù)據(jù)庫中,管理員可以查看每個流程定義文件和刪除不需要的流程定義;科研管理員還可查看每個流程的工作進度。科研人員可以在線申報項目,查看評審意見以及下載和上傳申報書??蒲泄芾韱T可以審核科研人員提交的申報書、添加審核意見并決定將申報書提交評審或退回給申報者修改。申報評審使用會簽的方式,科研管理員審核通過的申報書會同時提交給2~3名專家進行評審。每個評審專家可以下載申報書進行評審,填寫評審意見。所有專家評審完后,如果專家評審意見為“同意”的累加個數(shù)大于或等于2,申報書將流轉到主管院長審批,否則申報流程結束,同時修改申報項目狀態(tài)為“未立項”。流轉到主管院長中的申報書,在院長審批完后,結束整個流程,如果審批意見為“同意”,則修改申報項目狀態(tài)為“立項”,否則修改申報項目狀態(tài)為“未立項”。在立項管理流程中,每個任務分配給參與者后馬上發(fā)Email通知任務承辦人,之后兩天,如果任務仍沒執(zhí)行,將自動給任務承辦人發(fā)催辦Email,并且每隔一天發(fā)一次催辦Email,直到任務完成為止。
使用JBPM4.4主要包括定義流程文件、部署流程文件、啟動流程以及各個流程參與者執(zhí)行任務如下四個步驟。
(一)流程定義
根據(jù)前面的業(yè)務流程分析,可得到如圖1所示的流程定義。
(二)流程部署
部署流程需要使用RepositoryService流程資源實例。通過Spring框架提供的SpringHelper可以創(chuàng)建流程引擎,得到了流程引擎后就可以使用它來創(chuàng)建各個服務實例。
(三)啟動流程
科研人員登錄系統(tǒng)后,點擊“項目申報”超鏈接后啟動流程,涉及的關鍵代碼是:executionService.startP rocessInstanceByKey("proj",map),其中“proj”是流程定義的key值,map是流程實例綁定的一個map類型的變量,其中保存登錄用戶帳號等信息。
(四)任務分配及提交
科研人員點擊“項目申報”超鏈接啟動流程后,即給該科研人員分配了一個申報項目的任務。當科研人員提交申報資料后,完成申報任務,同時系統(tǒng)給科研管理員分配一個申報書審核的任務??蒲泄芾韱T登錄系統(tǒng)后,單擊立項管理中的“待辦任務”超鏈接,可查看所有需要自己審核的項目申報任務??蒲泄芾韱T選擇一個任務審核,可以簽署“通過”或“不通過”意見。審核為“通過”時,該項目申報資料流轉給專家評審,否則將申報資料退回給申報者修改。評審采用會簽方式,評審任務同時分配給兩個專家評審,每個專家登錄系統(tǒng)后,單擊立項管理中的“待辦任務”超鏈接后,顯示分配給他的所有評審任務。專家可下載某個任務中的申報書進行評審,在系統(tǒng)中簽署評審意見和“同意”或“不同意”評審結果,提交評審后完成評審任務。兩個專家都評審完后,流程對他們的評審結果進行判斷,如果都為“同意”,則給主管院長分配審批任務,否則結束流程。主管院長登錄系統(tǒng)后,單擊立項管理中的“待辦任務”超鏈接,可查看所有分配給自己的審批任務。主管院長選擇一項任務進行審批,簽署“同意”或“不同意”意見并提交審批完成審批任務。如果審批意見為“同意”系統(tǒng)將修改項目申報狀態(tài)為“立項”,同時結束流程,否則修改項目申報狀態(tài)為“未立項”,同時結束流程。每一項任務在流轉到下一個任務節(jié)點時都攜帶了承辦人的意見,并且在提交之前,這些意見都被持久化到審批意見表中。另外,任務分配給科研管理員、評審專家和主管院長后立即發(fā)送任務通知Email,之后兩天,如果承辦人仍未完成任務,則發(fā)送任務催辦Email,并且每隔一天發(fā)送一次,直到完成任務為止。上述各項任務涉及的關鍵代碼如下。
1.查詢個人任務
taskService.findPersonalTasks(user),其中taskService由Spring通過實例工廠的方式創(chuàng)建,user是用戶登錄帳號。
2.提交任務
設置任務:taskService.setVariables(tid,proj)和提交任務:taskService.completeTask(tid)?!皃roj”是保存申報資料的一個對象,tid是任務標識符。通過任務服務調用它的setVariables方法,把申報資料綁定到任務。
3.任務退回
科研管理員審核后流程流轉到?jīng)Q策節(jié)點,以判斷流程是進入專家會簽評審還是退回申報資料給申報者修改,其中涉及流程路由設置、視圖頁面審核結果的傳遞、以及任務提交時路由的指定等內容。指定路由代碼是taskService.completeTask(tid,result),該方法中的參數(shù)result的值是提交任務后傳遞過來的審核結果,通過該參數(shù)來指定路由。
4.任務通知及催辦
任務通知只需在流程定義文件的相應節(jié)點中增加
任務催辦可在流程定義文件的相應