工作流引擎jBPM在高校科研管理系统中的应用研究
2023-07-06聂常红
聂常红
一、引 言
传统的科研管理系统主要是实现科研相关信息的收集、查询和发布等功能,而科研管理业务流程中核心的项目申报的评审、审批等业务无法做到自动、高效地进行。本文提出在科研管理系统中引入JBPM工作流技术,实现高效、智能的科研管理,提高科研管理水平和工作效率,最大可能实现无纸化和网络化的办公目的。
二、相关技术
(一)工作流
工作流就是工作流程的计算模型,即将工作流程中的工作组织在一起的逻辑和规则,在计算机中以恰当的模型进行表示并对其实施计算。工作流解决的主要问题是:为实现某个业务目标,在多个参与者之间,利用计算机,按某种预定规则自动传递文档、信息或者任务。
(二)工作流引擎JBPM4.4
JBPM4.4采用流程描述语言jPDL来描述业务流程,采用Hibernate對流程数据持久化。使用JBPM4.4开发工作流程管理系统时,首先需要定义流程定义文件,然后将流程定义文件部署到数据库中。
(三)JBPM4.4提供的服务
在开发项目时,我们主要是使用JBPM4.4提供的RepositoryService、ExecutionService、TaskService、HistoryService和ManagementService这几个服务来实现对工作流的管理,它们全部由J B P M的工厂类ProcessEngine来提供。
三、高校科研管理业务流程分析
高校科研管理系统中涉及工作流内容的主要有立项管理和流程管理两个模块。流程管理包括流程定义管理和流程监控。定义流程文件后,科研管理员将流程定义部署到数据库中,管理员可以查看每个流程定义文件和删除不需要的流程定义;科研管理员还可查看每个流程的工作进度。科研人员可以在线申报项目,查看评审意见以及下载和上传申报书。科研管理员可以审核科研人员提交的申报书、添加审核意见并决定将申报书提交评审或退回给申报者修改。申报评审使用会签的方式,科研管理员审核通过的申报书会同时提交给2~3名专家进行评审。每个评审专家可以下载申报书进行评审,填写评审意见。所有专家评审完后,如果专家评审意见为“同意”的累加个数大于或等于2,申报书将流转到主管院长审批,否则申报流程结束,同时修改申报项目状态为“未立项”。流转到主管院长中的申报书,在院长审批完后,结束整个流程,如果审批意见为“同意”,则修改申报项目状态为“立项”,否则修改申报项目状态为“未立项”。在立项管理流程中,每个任务分配给参与者后马上发Email通知任务承办人,之后两天,如果任务仍没执行,将自动给任务承办人发催办Email,并且每隔一天发一次催办Email,直到任务完成为止。
四、JBPM4.4在高校科研管理系统中的应用
使用JBPM4.4主要包括定义流程文件、部署流程文件、启动流程以及各个流程参与者执行任务如下四个步骤。
(一)流程定义
根据前面的业务流程分析,可得到如图1所示的流程定义。
(二)流程部署
部署流程需要使用RepositoryService流程资源实例。通过Spring框架提供的SpringHelper可以创建流程引擎,得到了流程引擎后就可以使用它来创建各个服务实例。
(三)启动流程
科研人员登录系统后,点击“项目申报”超链接后启动流程,涉及的关键代码是:executionService.startP rocessInstanceByKey("proj",map),其中“proj”是流程定义的key值,map是流程实例绑定的一个map类型的变量,其中保存登录用户帐号等信息。
(四)任务分配及提交
科研人员点击“项目申报”超链接启动流程后,即给该科研人员分配了一个申报项目的任务。当科研人员提交申报资料后,完成申报任务,同时系统给科研管理员分配一个申报书审核的任务。科研管理员登录系统后,单击立项管理中的“待办任务”超链接,可查看所有需要自己审核的项目申报任务。科研管理员选择一个任务审核,可以签署“通过”或“不通过”意见。审核为“通过”时,该项目申报资料流转给专家评审,否则将申报资料退回给申报者修改。评审采用会签方式,评审任务同时分配给两个专家评审,每个专家登录系统后,单击立项管理中的“待办任务”超链接后,显示分配给他的所有评审任务。专家可下载某个任务中的申报书进行评审,在系统中签署评审意见和“同意”或“不同意”评审结果,提交评审后完成评审任务。两个专家都评审完后,流程对他们的评审结果进行判断,如果都为“同意”,则给主管院长分配审批任务,否则结束流程。主管院长登录系统后,单击立项管理中的“待办任务”超链接,可查看所有分配给自己的审批任务。主管院长选择一项任务进行审批,签署“同意”或“不同意”意见并提交审批完成审批任务。如果审批意见为“同意”系统将修改项目申报状态为“立项”,同时结束流程,否则修改项目申报状态为“未立项”,同时结束流程。每一项任务在流转到下一个任务节点时都携带了承办人的意见,并且在提交之前,这些意见都被持久化到审批意见表中。另外,任务分配给科研管理员、评审专家和主管院长后立即发送任务通知Email,之后两天,如果承办人仍未完成任务,则发送任务催办Email,并且每隔一天发送一次,直到完成任务为止。上述各项任务涉及的关键代码如下。
1.查询个人任务
taskService.findPersonalTasks(user),其中taskService由Spring通过实例工厂的方式创建,user是用户登录帐号。
2.提交任务
设置任务:taskService.setVariables(tid,proj)和提交任务:taskService.completeTask(tid)。“proj”是保存申报资料的一个对象,tid是任务标识符。通过任务服务调用它的setVariables方法,把申报资料绑定到任务。
3.任务退回
科研管理员审核后流程流转到决策节点,以判断流程是进入专家会签评审还是退回申报资料给申报者修改,其中涉及流程路由设置、视图页面审核结果的传递、以及任务提交时路由的指定等内容。指定路由代码是taskService.completeTask(tid,result),该方法中的参数result的值是提交任务后传递过来的审核结果,通过该参数来指定路由。
4.任务通知及催办
任务通知只需在流程定义文件的相应节点中增加
任务催办可在流程定义文件的相应