计培良,林燕芬
(1.湖州师范学院 信息工程学院,浙江 湖州 313000;2.中国美术学院 网络中心,浙江 杭州 310000)
在教育部2006年制定的 “高等学校实验室信息统计”指标体系中,教学科研仪器设备相关报表有2个,它们分别是“基表一:教学科研仪器设备表(SJ1)”和“基表二:教学科研仪器设备增减变动情况表(SJ2)”。
文献[1]提出了基于Excel软件的数据处理方法,其主要思路是在电子表格中维护数据,用专门编写的公式将表格数据转换成特定格式的文本数据,然后通过一次复制和粘贴操作生成文本文件(报表)。由于Excel展示数据比较直观,便于人对其进行浏览,在上报方案的讨论和汇报等工作环节中具有明显的优势。如果不考虑表格数据的维护成本,那么基于Excel的数据处理方法是非常便捷和高效的。对于使用电子表格进行资产日常管理的学校,可以直接使用该方法。而对于使用专门的信息系统进行资产日常管理的学校,可以选择升级相应的管理系统,使之能够输出相应的Excel表;也可以选择开发一个教学科研仪器设备统计系统,专门输出相应的Excel表。升级原有系统需要原系统相关开发人员完成,而新开发一个统计管理系统则可能不受此限制。
应该选择哪种方式应根据学校的实际情况做出判断,笔者遇到的情形比较特殊,资产管理系统已经使用近15年,而且还是两校共享同一个资产管理系统,因此选择了后一种方式,专门开发了一个教学科研仪器设备统计系统。
教学科研仪器设备统计系统是一个学校内部使用的软件系统,采用B/S架构,主要解决各个年度的报表生成及其管理。系统主要分为资产库管理、“基表一”管理、“基表二”管理及系统配置管理四个模块,如图1所示。
图1 系统功能模块图
在资产库管理中,要做好资产信息管理,例如导入、报废等。“基表一”管理中,主要做好报表项的管理,由于仪器设备数量大,系统应具有批量处理数据的能力。在“基表一”和“基表二”的管理中,具有按年度导出Excel表的功能,报表导出时可设定选项,选项一为适合人阅读,选项二为适合生成报表。例如,对于“国别”字段,设定选项一时输出名称“中国”,设定选项二时输出代码“156”。
该系统集成学校现有的统一身份认证平台,信息统计人员不需要专门设定本系统的登录凭证。系统能够分角色管理权限,实现工作项责任到人。
该系统根据教学科研仪器设备表生成流程,确定了资产库管理员、本部报送员、求真报送员共3类参与者。每一类参与者都需要通过统一身份认证登录系统。各参与者描述为:①资产库管理员,有同步资产信息的权限,有办理资产变动业务的权限;②本部报送员,有管理本部报表的权限;③求真报送员,有管理求真报表的权限。
(1)资产库管理
资产库管理是指资产管理员维护资产信息所需的功能,主要分为同步及变动管理两部份。同步是指将校资产管理系统的设备信息导入到本系统,为本系统后续的报表形成做准备。变动管理主要是指设备报废,每一轮资产报废工作结束后,资产管理系统的数据就会有相应的变化,本系统的资产库也应该做出相应的变动。为了控制变化的传导,本系统要求有自动和非自动两种变动处理方式。此外,系统还提供资产库内设备信息的查询、统计与导出功能。资产库管理用例如图2所示。
图2 资产库管理用例图
(2)报表管理
报表管理是指报送员管理“基表一”和“基表二”两个报表所需的功能,有报本部、报求真、(手动/自动)不报送、新增、锁定、解锁及报表导出等功能。能够根据资产库中的信息提出报送建议,例如:仪器设备的分类号是 “01”、“02”、“11”、“13”、“15”及“16”开头的不报,使用方向为“行政”的不报等。自动不报送就是根据建议自动将设备设定为不报送。锁定是指报表数据确定后,可将报表锁定,锁定后报表内容不可变更,但解锁后可再次变更报表内容,新年度的报表被创建后,前一年度的报表处于存档状态并不能再被变更。在报表锁定前,导出的报表是适合人阅读的形式,锁定后导出的Excel表是适合形成最终报表的形式。报表管理用例如图3所示。
图3 报表管理用例图
本项目用状态机描述对象并分析对象行为,记录刺激对象反应的业务规则。以下是本系统的5个主要业务对象。
(1)资产项
资产项对象有三个状态,分别是初始、未(报送)处置和已(报送)处置,如图4所示。
图4 资产项状态图
新导入的资产项处于未报送处置状态,在不报(或者上报、或者报废)操作后转换为已处置状态。已处置的资产项可进行报废、撤销不报、撤销报废和撤销上报操作。已处置状态的资产项均关联一个资产报送摘要对象。
(2)报送摘要
资产报送摘要对象有四个状态,分别是初始、不报送、已报送和已报废,如图5所示。
图5 报送摘要状态图
该对象负责管理资产项的报送处置结果。报废和撤销报废的规则略显复杂,资产可以直接报废,也可以是先在某个年度上报然后再在以后的某个年度报废,还可以将不报的资产报废,相应地报废撤销后可以转换到初始、已报送或者不报送状态。
(3)学校
学校对象有三个状态,分别是无报表、当期填报和当期已报,如图6所示。
图6 学校状态图
创建(新一期)报表、删除(当期)报表、锁定(当期)报表和解除锁定会导致学校的状态发生变化。其它的业务规则有:仅在当期填报阶段可以变更报表内容,即添加报表项、移除报表项和删除报表;报废和导出报表操作在各个阶段有不同的逻辑。
(4)报表(基表一)
报表对象有三个状态,分别是编辑(填报中)、已锁定和已存档,如图7所示。
图7 报表状态图
创建下期报表、锁定(当期)报表、解除锁定和报废会导致报表的状态发生变化。只有处于当期填报阶段的报表才可以被销毁,也只有处于此状态的报表可以添加报表项和移除报表项。此外,与学校对象类似,报废和导出报表等业务操作,在不同阶段有完全不同的处理逻辑。
(5)报表项(基表一表项)
报表项对象有四个状态,分别是编辑(初始)、已报、已报废和下期报废,如图8所示。
图8 报表项状态图
设备添加到报表、从报表中移除、报废、撤销报废、设定报废期和清除报废期会导致报表项的状态发生变化。已报状态的报表项可以是往年上报的设备,也可以是今年新增的设备,下期报废和已报废两种状态是由已报状态转换而来的,转换的触发条件是报废操作。如果存在当期报表,则报废的设备数量和金额将影响当期报表减少数;如果当期报表不存在,被报废的往期设备将影响下一期报表减少数。只有处于已报状态的报表项才可以进行报废操作。此外,设定报废期、清除报废期、添加到报表和从报表中移出等操作,都对应着特定的状态。
文献[2]对.Net平台上面向领域的N层架构设计进行了较详细的讨论。根据本项目的实际情况,系统分基础结构层、领域层、应用层和表现层共4层,基础结构层主要含仓储实现、数据模型、持久化框架(EF)等,领域层主要有领域实体、领域服务、验证规则、仓储接口等,应用层主要包括服务、服务接口及DTO等。
领域层的主要内容是实体,要做好聚合划分及行为设计。文献[3]介绍了聚合划分的4个经验原则,本项目主要参考该规则进行聚合划分,具体划分如图9所示。
图9 对象模型图
主要的实体对象被划分成两个聚合,学校和资产项是聚合根实体。在资产项聚合内,报送摘要是非聚合根实体,部分摘要信息是冗余的,允许冗余信息存在的原因是便于查询。资产项与报送摘要是一对一关系。在学校聚合内,报表和报表项是非聚合根实体,学校与报表是一对多关系,报表与报表项是一对多关系。每一报表项对应着一个资产项,但并不设计成实体引用关系,而仅是引用了资产项的实体标识。
实体的行为规则已经在图4-图8中进行了描述,下面以学校实体为例,利用状态模式对对象行为进行建模,类设计如图10所示。
图10 学校对象类图
其主要的行为接口如表1所示。
应用层是表现层和领域层的边界,它是领域模型层的直接客户,同时为表现层提供粗粒度的接口方法供其调用,达到表现层与领域层解耦的目的。
本项目主要依据用例分析和用户界面设计应用服务接口。应用服务设计为无状态类,其功能是组织领域对象、协调基础结构中的仓储对象,管理包括事务、安全等事项,从而实现业务操作。
在面向领域设计中,本层主要解决持久化透明、并发控制及事务控制等方面的设计问题。本项目使用EntityFramework(EF)框架实现仓储,进而实现数据的管理;使用EF框架内置乐观并发锁机制实现并发控制;使用工作单元模式进行事务控制,特别要指出的是,这里的事务应界定为“业务事务”,与数据库系统等“系统事务”是不同的。每个聚合根有一个仓储,领域层的设计依赖仓储接口,因此能实现领域层与仓储的解耦,进而实现持久透明。
本项目采用Asp.net mvc框架进行表现层设计,mvc模式实现了表现层与其它层、表现逻辑与界面的分离。
系统使用Visual Studio 2017集成开发环境开发,编程语言为C#,.Net Framework版本为4.5.1,服务器端为Windows Server 2008 Enterprise SP1及IIS7.5,数据库为SQL Server 2008 R2。其它主要技术如表2所示。
本系统的功能点并不算多,但存在两处需要进行性能优化的地方:一是资产库管理中的资产信息同步操作;二是导出Excel表的操作。
资产信息同步操作中,要将校资产信息管理系统中当年新增的资产信息添加到本系统的资产库中。第一次同步操作有5万条左右的数据,此后每年新增的资产套数也会达到5000左右,系统采用的O/RM框架为EF框架,当向数据库插入大量数据时就会出现明显的不可接受的延时。本项目通过采用MS SQL 2008的表值类型参数实现了同步操作的性能优化,优化后插入数据的性能明显提高,达到平均每万条数据需要的时间为1-2秒。
本项目中,共有5个导出Excel表的功能点,而且每次导出的数据量都比较大,最多的资产表有近5万条数据。常规的做法是在内存中创建Excel表后按单元格填充数据,但这种做法性能极其低下,3万条数据耗费时间达到小时级别,不可接受。本项目最终采用数据区域填充矩阵的方法,性能得到明显优化,数据填充时间优化到秒级。
本系统于2018年8月上线,并在学校2017-2018学年实验室信息统计工作中发挥了重要作用,实验结果表明该系统功能正常可靠,性能良好,达到了预期目标。工作人员的工作效率明显提高,在2天时间内完成了两校“基表一”和“基表二”的报送工作,而在以往,这项工作需要约2周时间。系统还降低了对工作人员的技能要求,岗位新人也能快速完成数据报送任务。
将教学科研仪器设备统计功能从学校资产管理系统分离出来后,降低了相关软件的复杂度,有利于降低软件开发成本,也有利于后期各自进行功能升级。