Flowable工作流的高校财务报销系统的研究与实现
2020-06-09赵赛
赵 赛
(安徽广播电视大学 信息与工程学院,安徽 合肥 230022)
0 引言
信息化技术推进了高校行政管理办公自动化,然而大部分高校财务报销仍停留在传统纸质操作方式.由于对财务政策的掌握水平不同以及时间因素的限制,报销人员会认为财务报销不仅流程麻烦,而且还耗费时间和精力[1].财务报销要求项目负责人、所在部门领导或归口学院领导进行审批签字,有的高校还需要校领导签字审批,最终财务处领导再进行审查批准执行报销.层层审批签字,遇见领导开会、出差等特殊情况时,报销人员需要多次办理才能完成所有签字,甚至会发生在最后签字的环节被退回修改的情况,那么就需要从初始环节重新办理,加大了各个部门和报销人员的工作量[2].高校的工作业务在某些时间段容易出现集中报销的情况,这样会造成特殊时间段内报销单激增[3],财务人员需要加班审查单据,可能会影响服务的质量[4].随着高校的发展,报销科目增多,工作内容变得复杂,就造成了报销处理速度缓慢、产生错误等问题[5].
业务流程建模标注(BPMN)是一种业务流程建模与标注方法,帮助业务人员易于理解、设计、实现和管理业务流程[6].Flowable是一个使用JAVA编写的轻量级业务流程引擎,可以部署BPMN2.0版本的流程定义.采用BPMN描述财务报销各个流程过程,集成Flowable业务流程引擎到财务报销管理系统,规范高校报销流程,提高财务报销管理的工作效率.
1 Flowable工作流引擎框架
Flowable通过核心引擎提供服务,实现管理和执行工作流程.流程引擎包含8个Service接口,如表1所示,支持链式的编码风格.RepositoryService提供对流程部署和定义、管理和控制的操作功能,可用于挂起或激活部署的流程,解析部署文件,获取部署对象和资源对象;RuntimeService通过流程定义来启动一个新的流程实例,用于存储、解析流程变量,查询流程实例和执行过程,并可以给流程实例发送触发信号,从而使流程实例继续执行下一环节;TaskService提供的功能有管理流程任务,对任务进行查询、分配、认领、完成等操作,存储任务节点的批注信息以及附件;IdentityService管理任务关联的用户或用户组,实现创建、更新、删除、查询操作,但是不会对用户或组进行身份认证,而是提供接口让开发者访问自己的用户认证管理模块,增强了灵活性;FormService是一个可选功能,提供流程任务节点关联的业务表单,在BPMN2.0流程定义中配置,在前端渲染后供用户填写;HistoryService提供由Flowable引擎收集的历史数据,例如流程实例启动的开始时间、任务持续时间、任务完成人以及流程中任务节点信息等;ManagementService是对数据库操作的封装,一般不会被开发者直接使用,功能是查询数据库表和字段元数据,以及作业的查询和管理操作等;DynamicBpmnService可以在不重新部署流程的情况下对其进行部分更改,例如修改流程中的办理人信息或者执行服务的类名.
表1 流程引擎服务
2 财务报销工作流设计与实现
2.1 财务报销业务流程
按照报销使用的资金来源,目前高校中的财务报销申请主要分为科研经费报销和部门工作开支报销.每次的审批有两种结果:通过或退回.通过是指申请获得审核批准,可以继续执行下一步操作.退回包括否决和补充两种情况:否决是指终止申请,填写否决理由信息,然后反馈给申请者;补充是指把申请退回给申请者,要求申请者根据退回原因修改申请信息或补充文件材料等,申请者可以再次申请.
以某高校的财务报销过程为例,纸质的报销操作方式如图1所示.首先,报销人员上网下载并打印报销单(或者财务处领取),填写报销单信息,包括报销金额、报销事项或说明、发生日期、票据信息等,而对于出差的情况还包括出差始发地与目的地、住宿情况、交通工具信息等,并附上原始单据.然后,报销人员拿着纸质的报销材料,根据费用报销使用的资金来源决定下一个环节审批签字人员.对于从科研经费列支的,需要经过项目负责人签字批准,科研处领导审批,再人工跑到所属学院,找院领导审批;而对于使用部门经费报销的,需要找部门领导审批.最后,报销人员根据报销金额大小,来决定下一环节如何操作.报销总金额如果小于1 000元,则直接经过财务处审核是否批准;否则,必须先经过财务分管校领导签字同意,才能去财务处进行审核是否报销.
图1 报销流程图
2.2 工作流设计
BPMN采用了图形化的符号,来表示工作流的执行流程,并最终以xml文件的形式进行保存,可加载到Flowable引擎中进行解析,执行整个流程的操作.BPMN中,最常使用的有启动事件、用户任务、排他性网关、终止事件等[7],也可以将他们统称为活动,而活动之间是通过带箭头的顺序流线进行连接.启动事件表示具体业务流程实例的起点;用户任务表示业务流程中用户需要操作的步骤;排他网关也称为基于数据的排他网关,是对流程中的决策进行建模,当排他网关有多个路径为真时,Flowable引擎只会沿着xml文件中最先定义为真的路径数据流向下执行;终止事件表示整个业务流程实例的终止,引擎会结束当前执行分支.活动对应的元素符号如表2所示.
Flowable工作流引擎在执行工作流过程中,采用了任务驱动型模型方式,业务事项会作为任务分配给工作人员进行处理,待办任务会主动推送给处理人,而不需要等待接收.对于高校财务报销业务,BPMN工作流定义如图2所示,Flowable工作流引擎执行过程如下:
1)报销者启动流程,填写表单信息,提交申请流程.工作流自动流转到第一个用于判断报销类型的排他网关,根据后台分析,选择下一个任务节点.
2)Flowable引擎根据报销经费的类型进行判断,对于非科研经费支付的财务报销,申请会发送给部门领导并位于其待办任务列表中,部门领导对申请进行办理(如果有多个领导被授权可以办理,那么将需要办理者先签收任务),填写审批意见,如果通过,则流程自动进入下一个节点,否则,填写驳回原因,流程回退给流程启动者.如果报销经费从科研项目中列支,那么流程会自动依次流转到科研项目负责人审批、归属学院审批、科研处审批任务节点.在这个过程中,任意任务节点没有通过批准,就需要填写驳回原因,流程回退给流程启动者,而不是流转到下一个审批节点.所有批准同意后,则流程执行下一步.
表2 BPMN对应元素符号
图2 报销BPMN工作流
3)后台自动计算报销金额,根据金额大小选择下一任务节点是分管校领导审批还是财务审批.如果金额小于1 000元,则流程进入财务审批任务节点,否则,进入分管校领导审批任务节点,在审核批准后,自动流转到财务审批任务节点,否则,填写驳回原因,流程回退给流程启动者.财务审核如果通过,则整个报销流程执行完毕,否则,填写驳回原因,流程回退给流程启动者.
4)如果申请被驳回,流程会流转到申请人修改节点,申请人可以选择再次申请或者放弃申请.如果重新提交申请,则按照以上步骤重新执行;如果选择终止申请则流程也执行完毕.
3 系统的设计实现
3.1 系统架构设计
系统采用B/S架构,使用了Spring、SpringBoot、MyBatis框架[8],并把Flowable流程引擎集成到系统中.用户认证和权限授权使用了Shiro框架进行控制,数据库采用了MySQL关系型数据库,并通过MyBatis进行数据库访问操作,如图3所示.
表现层是用户展示界面,提供用户可视化操作,是SpringMVC架构中的视图层.使用了Themleaf前端模板引擎,其能够同时支持HTML原型,在不依赖后端的情况下就能查看页面展示效果.
业务逻辑层是系统的核心,采用的是SpringBoot框架,并集成了权限认证框架Shiro以及工作流引擎Flowable.向上对表现层提供接口,返回前端渲染所需要的数据,向下通过调用持久层接口访问数据库数据.对于工作流而言,是通过工作流引擎的8个服务来与其进行交互,控制工作流的启动、终止以及任务的执行和流转.
持久层采用的是MyBatis框架,可以定制化SQL语句、存储过程和高级映射,使用了简单的XML或者注解来配置和映射,实现接口和业务对象数据之间的映射.可以很方便对单表进行增删改查等基本操作,并且用户可以使用定制化接口完成复杂业务逻辑的操作.
数据库使用的是关系型数据库MySQL,能够满足业务的存储需求.财务报销系统的数据表包含了人员关系等基础数据表、存储表单信息的业务表以及工作流需要的数据表.
3.2 安全性实现
工作流关联的业务信息的安全依赖于系统的安全,系统登录时设置了验证码校验,通过MD5对账号密码信息进行编码后与后台数据库进行比对,以加强系统的安全性能.通过对教职工进行权限控制,实现不同级别的教职工拥有不同的资源访问权限,保证不同报销业务信息的隔离,并且可以赋予特殊角色拥有更高的权限,例如查看所有报销信息的权限.系统被访问操作时,会记录操作日志,包括访问人、操作时间、操作的业务等信息,以便对异常情况或误操作进行追踪分析.
图3 系统架构图
3.3 流程部署与执行
报销工作流设计完成后,需要把流程定义部署到系统中.Flowable流程定义部署可以使用编程部署方式,通过RepositoryService提供的接口加载包含了流程定义的文件,这些文件可以是包含流程定义的bar、zip压缩文件,也可以是流程定义的单个BPMN文件.前者可以批量上传部署,在部署时会扫描以bpmn20.xml或bpmn为扩展名的BPMN文件进行加载.
流程部署也可以使用Flowable业务流程设计器,通过web界面操作方式,上传bpmn20.xml或bpmn为扩展名的BPMN XML格式文件,把工作流模型导入到数据库中实现部署.流程定义部署到Flowable引擎后,会生成流程定义对象和流程图,如图4所示.
报销流程定义在部署后,报销人员点击报销申请按钮,会弹出报销表单,填写完毕后点击发起流程按钮实现流程的启动执行.流程启动后,Flowable引擎会根据报销业务设计的流程定义决定下一步流程的走向,对于人工执行的任务节点,可以采用默认的流程走向,也可以在某些特殊状况下指定流程流转的下一节点,从而实现工作流的灵活处理.报销流程从启动到执行结束,申请人、已办理人以及待办理人都能看到各个节点的处理结果以及审批意见,实现对流程的跟踪查看.如图5所示,非科研项目报销时,校领导在审核申请时看到的页面,包括了待办理表单和流程经过的办理人员及其意见信息.
图4 流程定义导入部署
图5 审批页面
4 总结
随着高校教育信息化建设,财务报销业务必然会采用工作流技术实现信息化.基于BPMN2.0标准的Flowable工作流引擎,能够很好地解决业务流程中复杂的逻辑处理问题.介绍了BPMN的常用元素,立足于某高校的财务报销审批管理的需求,定义了财务报销的工作流流程,使用了SpringBoot、Shiro、MyBatis框架,基于Flowable工作流引擎设计并实现了财务报销系统,并对系统中流程的部署和执行进行了说明.该方案提高了财务报销的效率,能够促进报销各个环节的规范化和标准化;可以实现对各个环节的处理过程进行跟踪,提高了报销审批的灵活性;可拓展到高校中的教职工请假、资产管理、会议室使用等具有流程特点的业务,具有很高的实用性.