基于LIMS的排程系统与流程设计器的开发
2022-04-08刘晓东孙陆楠刘亚伟关朋戎锡锋
刘晓东,孙陆楠,刘亚伟,关朋,戎锡锋
(天津电气科学研究院有限公司,天津 300180)
实验室信息管理系统(laboratory information management system,LIMS),是以实验室为中心,应用局域网,将信息技术与实验室管理理念相结合,对检测数据和相关信息进行收集、分析、报告和管理的系统[1-2]。LIMS在国外发达国家已经得到广泛应用,而国内实验室引入LIMS的时间较短[3]。据中国产业信息网发布的数据统计,截至2018年我国国内有检测机构3 947家且呈递增趋势[4]。LIMS的应用也呈发展趋势,由于国内第三方检测实验室信息化建设初期主要关注业务、流程、财务等经营层面的问题,而对于实验室任务计划运行、进度的控制、流程变更等问题关注的不够。当LIMS系统上线后,经调研发现一些不足,一是,实验任务计划需要人工来排程;二是,当试验流程发生变更时,需要修改后台程序,操作费时费力。因此,开发了排程系统和流程设计器。
排程系统一般用于高校排课[5]、生产车间排程[6],排程系统的设计将排程思想与实验室试验任务管理相结合,旨在合理安排试验任务,保证试验进度,提升效率。流程设计器针对LIMS流程经常变动而设计,通过流程设计器,用户可自己定义、编辑、发布流程,减少系统的运维成本。
1 主要技术
1)J2EE技术框架。Java2平台企业版(java 2 platform enterprise edition,J2EE),是由SUN公司领导、多厂家共同制定并得到广泛认可的工业标准,目前已经成为使用最广泛的Web程序设计技术。J2EE使用多层分布式应用模型,应用逻辑按功能划分成组件,各个应用组件根据他们所在的层分布在不同的机器上,J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制[7]。
2)JBPM工作流引擎。业务流程管理(java business process management,JBPM),它是一个开源的、灵活的、易扩展的可执行流程语言框架[8-9]。JBPM采用图形化开发工具和JPDL(JBoss process definition language)来描述流程图。JPDL的表示形式是 XML(extensible markup language)文件,它定义了这个流程图的每个部分,如起始节点、结束节点、节点之间的转换。通过图形化流程定义,能够直观地描述业务流程。
3)SVG。可缩放矢量图形(scalable vector graphics,SVG),他是使用XML来定义二维图形和绘图程序的语言。一般SVG用于定义基于网络的矢量图形,是万维网联盟标准。HTML5支持内联SVG元素,通过浏览器即可创建SVG矢量图。
2 LIMS系统现状
LIMS功能和任务流程是依据ISO/IEC17025《检测和校准实验室能力的通用要求》[10]和原有实验室管理模式设计的,具有通用性和适用性。LIMS系统架构如图1所示。
图1 LIMS系统架构图Fig.1 The system architecture chart of LIMS
1)数据层。数据是系统运行的基础,主要包括:客户信息、人员岗位信息、设备仪器信息、检测标准库、计量标准库、报告模板库等。由系统将基础数据组织起来,实现数据互通和共享,为数据统计、数据报表提供数据源。数据格式包括文字、图片、文档、声音等。
2)业务层。业务层描述检测实验室的核心业务流,包括合同签订流程和试验任务流程,业务流通过工作流引擎JBPM创建,用户和开发人员只需关心当前任务,当前任务处理完成后的下一个节点将由工作流自动引导流向。
3)应用层。应用层主要提供用户可操作的界面,主要是对基础数据的增、删、改、查询功能。不同岗位对任务的申请、审核、审批。数据统计图表、报表的展示和导出等。LIMS系统可通过接口服务与排程系统和流程设计器进行数据共享。
3 排程系统
3.1 优先权调度算法
优先级调度算法一般用于操作系统的作业调度,基于作业的紧迫程度,由外部赋予作业相应的优先级,系统根据优先级进行调度[11]。排程系统引用了这个算法思想,首先通过试验任务的紧迫程度计算优先级系数,然后根据优先级进行排程,优先级系数的计算如下式所示:
式中:r为优先级系数;st为服务时长;et为任务计划完成时间;at为任务到达时间。
可知,r越大代表任务越紧迫,优先级越高。
3.2 排程系统的设计
排程管理系统是对实验室的试验任务进行排程,首先由用户下发的任务卡对试验进行分割,将整个试验分割成多个任务。其次,由系统依照试验任务类型自动判断该试验所属的实验室,并计算同一个实验室试验的优先级系数,而后自动分配试验时间。优先级高代表任务较为紧迫,系统会优先安排试验。对于优先级相同的实验系统则按照“先来先服务”的原则分配时间。为减少排程计划变动对试验任务计划的影响,系统一旦为试验任务排好时间节点,便一直执行下去,至完成。以上只是正常预约排程,在实际操作过程中,发现还存在一些特殊情况,像任务加急处理、任务爽约,排程流程图如图2所示。
图2 排程系统流程图Fig.2 Flow chart of scheduling system
1)加急插队处理。“加急插队”同样以优先级为插队依据,如果有更紧急的实验任务进行“插队”,要先判断队列中正在执行任务是否小于等于“插队”任务的优先级,如判断条件为“真”,系统将截断正在执行的任务,插入加急任务,而队列中的其他任务将依次顺延。如判断条件为“假”,系统自动将任务插入到当前正在执行的任务之后。
2)爽约处理。“爽约”是指在工作预约排程后,由于某些特殊原因而未在预约的时间段内进行相应的实验。“爽约”分为“外因爽约”和“自身爽约”。“外因爽约”是由于外来因素而的造成“爽约”;“自身爽约”是实验员由于自身原因而造成的“爽约”。对于“外因爽约”的任务,系统先撤销排程,然后将此任务“插队”到原有优先级别的队列;对于“自身爽约”的任务,在撤销排程后将其按照新任务进行重新排程。
3.3 排程系统主要功能
排程系统的功能包括实验室管理、试验任务管理、试验排程看板、系统管理4大功能模块。
实验室管理为用户提供实验室信息(实验室名称、实验室类型、业务范围)的添加、修改、删除功能。试验任务管理功能模块可同步LIMS的试验任务信息、设置排程是否包含节假日、对试验任务进行排程、撤销试验任务排程、试验任务插队、结束试验任务。排程看板以甘特图的形式为用户展示自动排程结果,如图3所示。
图3 排程甘特图Fig.3 Schedule gantt chart
用户还可以通过手动的方式对甘特图进行修改、添加、删除试验时间节点。对于超期节点,系统将显示超期预警。用户可为超期任务赋予更高权限,重新排程,也可以通过手动修改甘特图的时间节点来调节超期。系统管理主要提供系统用户信息和权限等配置管理功能。
4 流程设计器
流程设计器利用工作流技术,将每个流程的工作节点按照前后逻辑组织在一起,以流程驱动任务,在多个参与者之间,自动传递执行任务、信息和文档。
4.1 流程设计器的设计原理
首先利用SVG技术与JS(JavaScript)搭建绘图前端,用户通过浏览器以鼠标拖曳的方式画出流程的活动和路径,设置路径和活动属性,将画好的流程数据保存到JS对象中,以便JS数据对象转换成JSON格式数据。同时将SVG流程图的文档对象模型元素转成Base64编码格式,确认无误后将表示流程图的JSON字符串和表示流程图片的Base64编码传输到后台等待解析。待后台接收到数据后,需要将JSON数据解析成JPDL的XML文件,也就是将SVG和JPDL的坐标相互转换。最后由系统将描述流程图的JPDL文件与.PNG图片打包并压缩成ZIP格式的文件。这样一个JBPM工作流文件就生成了,用户可以通过浏览器发布流程。当需要编辑流程时,可通过浏览器打开JPDL的XML文件,系统将JPDL表示的流程信息转换成JSON格式的字符串再发送到前端,浏览器接收到数据后,进行转换解析,重新渲染出SVG图像,通过浏览器用户就可以自由操作流程节点和连线了。
4.2 流程设计器的功能
LIMS的业务流程有系统通知流程、合同签订流程、检测试验流程、付款流程、设备仪器检定校准流程,在流程节点发生变动时,可通过流程设计器对LIMS已有的工作流程进行编辑、发布。
图4表示流程设计器与LIMS的关系图,定义好的流程发布后即对LIMS生效。
图4 流程设计器与LIMS关系图Fig.4 Relationship between process designer and LIMS
用户可通过流程设计器定义新流程,编辑原有流程,设置流程节点的角色,增加版本号,下载流程,发布流程、撤销流程。当原有流程经用户编辑后,生成一个新版本流程压缩包,新版本流程只适用于新任务,而对于已发起的任务,则按照之前版本继续运行。流程角色用来设置被选中流程节点的指派人(单人)或所指派的岗位(多人)。流程业务管理用于流程的发布和撤销。
5 系统实施与效果
排程系统和流程设计器属于小型系统,采用敏捷开发模式,通过与LIMS用户紧密协作,面对面沟通,频繁迭代新的软件版本,使软件提早被用户适应和接受。目前两款软件已经过在某第三方检测机构的测试运行。经测试,两套应用软件运行流畅、响应时间短、能够与已有的LIMS成功对接,实现数据共享,完成设计的功能。
经测试,排程系统可为控制试验任务进度和资源供应,提高实验室利用效率,缩短试验业务周期提供支持;流程设计器的应用使用户可直接在线编辑流程,发布流程,节约时间和运维成本。
6 结论
排程系统和流程设计器的开发完善了现有的LIMS,完全支持与LIMS的通信接口,保证在不影响系统运行的情况下实现系统间的数据通信,完成与LIMS的无缝对接。但作为相对独立的两个系统,系统还提供了人工干预的功能,通过手动录入的形式将试验信息同步到排程系统和流程设计器的后台数据库,因此,他们既能与各种B/S模式的信息系统进行耦合,又能独立运行的软件系统。