一种J2EE开发框架和基于该J2EE开发框架的开发方法与流程

文档序号:15444603发布日期:2018-09-14 23:12阅读:137来源:国知局

本发明属于软件开发技术领域,具体涉及一种j2ee开发框架和基于该j2ee开发框架的开发方法。



背景技术:

艾滋病是目前中国增长率最高的疾病,年增长率大于20%,每年新增感染者超过10万。不过,随着全球艾滋病医疗水平的提高,艾滋病已成为一种可以控制的慢性免疫系统疾病,但它仍然对一个人的健康产生可怕的威胁,需要在防艾、治疗、关爱服务方面更加重视。

得益于现有互联网科技的日益发展,“互联网+”是进一步提升艾滋病预防、治疗和关爱的有效手段。因此,对于面向艾滋病抗病毒治疗服务的软件开发亟待进行,这也是普遍关注的焦点。

然而,由于面向艾滋病抗病毒治疗服务的软件产品的特殊性,该类产品的系统兼容性和扩展性需求较高,与此相对应的是现有的软件开发框架无法满足该开发要求。现有的软件开发框架不适于复杂的艾滋病抗病毒治疗及管理体系的软件产品开发,进而常常导致软件开发效率低,也无法保证开发质量。

综上所述,现有的软件开发框架并非针对艾滋病抗病毒治疗服务项目的开发而设,普遍存在下述多种缺陷:1、代码冗余,开发质量和效率不高;2、所开发产品不容易充分满足医院、医生和患者的管理及使用需求;3、所开发的产品无法满足患者和医生高访问量和大数据量的需求。



技术实现要素:

为了解决现有技术存在的上述问题,本发明目的在于提供一种面向艾滋病抗病毒治疗的软件产品的开发效率高的j2ee开发框架。

本发明所采用的技术方案为:

为了实现上述目的,结合本发明的具体实施方式,本发明提供一种j2ee开发框架,包括:

视图模块,用于采取前台模板和视图组件结合数据形成视图或者后台模板结合数据形成页面片段;

权限控制模块,用于对资源进行统一授权和拦截控制;

业务支持模块,用于支持切面和事物管理;

数据持久层模块,用于对数据进行持久映射;

服务器监控模块,用于监控数据库内存、数据库连接池及并发情况。

根据本发明的具体实施方式,进一步优选,本发明提供的j2ee开发框架还包括报表模块、数据缓存模块、生成器和视图缓存模块。

根据本发明的具体实施方式,进一步优选,所述数据持久层模块包括结构化数据单元、非结构化数据单元、二进制流文档、缓存单元以及索引单元。

根据本发明的具体实施方式,进一步优选,所述数据持久层模块采用mybatis作为持久层支持。

根据本发明的具体实施方式,进一步优选,本发明提供的j2ee开发框架还包括日志模块,所述日志模块包括操作日志和数据日志。

根据本发明的具体实施方式,进一步优选,所述权限控制模块包括资源权限定义模块、与所述资源权限定义模块平层的session管理模块、以及与所述资源权限定义模块平层的访问拦截控制模块。

根据本发明的具体实施方式,进一步优选,所述业务支持模块包括:规则引擎模块、消息服务模块、组织架构模块以及流程引擎模块。

根据本发明的具体实施方式,进一步优选,所述j2ee开发框架的前端开发组件包括以require.js、jquery.js、bootstrap.js作为扩展web应用的基础库;所述core.js为本框架的应用的基础,所述core.js包含ajax调用模块、javascript对象继承模块和事件模块。

根据本发明的具体实施方式,进一步优选,所述j2ee开发框架的后端开发采用mvc框架,所述mvc框架集成strut2、spring和mybatis开源框架。

在前述本发明所提供的j2ee开发框架的基础上,根据本发明的具体实施方式,本发明还提供一种j2ee开发框架的开发方法,包括以下步骤:

s1、对数据业务进行梳理和抽象;

s2、建立pojo类;并同步依序进行人机交互界面设计、后台调用api和数据格式确认、以及界面编写;

s3、定义和实现服务方法;调用业务支持模块模块,编写业务实现逻辑;调用规则引擎模块,编写服务调用参数的校验;日志模块包括操作日志和数据日志;调用数据持久层模块,生成实体类和数据库表的映射,并编写sql语句和支持的查询方式;

s4、进行junit单元测试,若junit单元测试通过则继续进行压力测试,若junit单元测试未通过则返回s3;

s5、若压力测试未通过则返回s3,若压力测试通过则连同s2中的编写的界面进行业务验证;

s6、若业务验证未通过则返回s1,若业务验证通过则进行功能模块注册;调用权限控制模块,实现数据的权限管理和功能的分配和拦截。

本发明的有益效果为:

本发明所提供的开发框架针对艾滋病患者抗病毒治疗服务及管理设计,能够用于面向艾滋病患者抗病毒治疗服务及管理软件产品的开发,并具有较高的开发效率和开发质量。

本发明的开发框架所开发出的艾滋病患者抗病毒治疗服务及管理软件产品能够依托互联网服务平台以互联网作为桥梁,连接起患者和医生,让患者随时随地都可以享受到医生的治疗服务。通过将互联网医疗技术用于艾滋病患者抗病毒治疗服务及管理,从而优化和创新艾滋病抗病毒治疗及管理体系。

本发明的开发框架保持系统兼容性和扩展性,对于开发人员,api调用简单,易用性强;对于医院外部系统,能提供多种调用接口,采取高效稳定的方式保证数据安全性和完整性。

具体实施方式

下面结合具体实施例对本发明做进一步阐释。

实施例:

本实施例提供一种面向艾滋病抗病毒治疗服务的j2ee开发框架,包括视图模块、权限控制模块、业务支持模块、数据持久层模块、服务器监控模块、报表模块和日志模块。

视图模块,本框架支持前台模板和视图组件结合数据或者后台模板结合数据形成视图。这两种方式主要采取前台模版和组件结合数据形成视图。使用bootstrap、jquery1.9、jqueryeasyui作为基础库,构建表单组件、树、布局、列表等组件。

权限控制模块,用于对资源进行统一授权和拦截控制,所述权限控制模块包括资源权限定义模块;与所述资源权限定义模块平层的session管理模块;以及与所述资源权限定义模块平层的访问拦截控制模块。权限控制模块建立在组织架构模块基础上。资源使用url统一定义,或者xml接口暴露的方式,统一授权。会话session支持单机和分布式。

业务支持模块包括规则引擎模块、消息服务模块、组织架构模块以及流程引擎模块。业务支持模块主要使用spring作为基础框架,支持切面、事务管控。业务规则灵活定义。业务支持模块采用webservice调用或者rest调用,各模块自治解耦。

数据持久层模块,用于对数据进行持久映射,所述数据持久层模块包括结构化数据单元、非结构化数据单元、二进制流文档、缓存单元以及索引单元,数据持久层模块中的结构化数据单元采用mybatis3.4作为持久层支持,可在其基础上扩展自动生成工具以及其他的一些插件。

服务器监控模块,用于监控数据库内存、数据库连接池及并发情况等。所述报表模块包括数据缓存模块、生成器和视图缓存模块。所述日志模块包括操作日志和数据日志。

本实施例的j2ee开发框架还优选包括报表模块、数据缓存模块、生成器和视图缓存模块。

所述数据持久层模块包括结构化数据单元、非结构化数据单元、二进制流文档、缓存单元以及索引单元。

本实施例的j2ee开发框架的前端开发组件包括以require.js、jquery.js、bootstrap.js作为扩展web应用的基础库;所述core.js为前端应用基础,所述core.js包含ajax调用模块、javascript对象继承模块和事件模块。本实施例j2ee开发框架的前端组件丰富,易用,扩展性高。

本实施例中的j2ee开发框架对数据传递格式进行了统一,具体而言,任何从后台取得的数据都有统一格式的json数据结构。如{mes:””,data:null,status:”sucess”,type:list,code:””}。其中status为系统调用标志,当为success表示调用成功,此时data数据为有效;当为error为调用失败,此时mes为错误信息,code为错误编码,可作为跟踪错误的标识。type为data的适用数据,如当为list标识一个分页的列表数据。

本实施例中的j2ee开发框架将数据和视图进行分离,具体而言,统一接收了后台数据后,如果要处理复杂视图和操作逻辑,本平台提供了simpledata组件处理相关逻辑。simpledata为本平台核心模块,它以所有的数据改变事件的方式把事件添加到事件模块。主要包含数据加载完成事件(loadedevent),数据卸载事件(dismountevent),数据改变事件(datachangeevent)等。并提供了前端数据回滚的特殊操作。当simpledata配置为可改变的时候,后台会缓存当前session的数据状态,可适应各种复杂网络和操作逻辑,保证数据提交不会重复、不会错误覆盖、不会缺失。当把视图绑定了simpledata后,视图接收了data传递的事件,可作出相应的响应。视图的数据改变也会以事件的方式传递到data组件,在保证视图和数据分离的前提下,可以传递相应的操作逻辑改变的数据到后台处理。本实施例中的data组件好包含设置各个data组件的关联关系,包括但不限于数据关联中的各种关系,如一对多、一对一等。并且各data的关联数据正确无误的传递到后台处理。本实施例中提供的这样的处理方式可以尽量复用前端代码,兼容pc端页面和移动端页面。

本实施例的j2ee开发框架中的前端组件的封装:本实施例中的view.js封装了视图的基础操作。其他的视图组件都是继承于view.js组件。视图目前在融合第三组件和自建的前提下,具备了大部分常用视图,主要有grid,select,checkbox,dateselect,dialog,combox,list,tabpanel,searchbox,pagenavigate等。本实施例j2ee开发框架中的样式文件基于bootstrap样式规范。html片段使用前端模板语言规范,维护和修改都较为方便。

本实施例的j2ee开发框架客户端和后端页面模板结合,在某些情况下,比如数据请求频繁操作简单的页面,或者客户机性能差需要优化特定页面,本实施例的j2ee开发框架使用后端数据加模板的方式渲染数据或者预编译的方式处理。主要使用配置文件,指定访问地址,和模板路径。模板路径统一配置,统一规定。当模板后缀为.ftl时候,用freemark解析;当为.jst时候,用jstl解析。解析器以插件的方式系统提供。解析指定多个解析器,pageflow封装了解析器组,每个解析器有自己的数据和视图,最后合并传递到前台。

本实施例的j2ee开发框架实现动态页面缓存,对于数据量大、变化不太频繁并发高的页面,如某些报表。根据条件,生成一个特定的key,堵塞所有访问相同key请求,计算后生成静态页面。可根据时间或者具体的业务规则置换此静态页面。置换方式提供默认的方式和插件的方式。具体页面优化根据xml配置文件,系统自动执行。

本实施例的j2ee开发框架在前端资源上,主要使用npm作为打包发布工具。主要处理js模块的压缩和合并操作,以提高运行效率。在此基础上优选以下改进:1.js代码混淆处理,主要作为代码保护;2.html片段开发时可以单独一个文件处理,易于修改维护。当打包发布的时候,会单独集中在对应的js代码中;3.打包脚模块化,混淆分模块代码;4.可以简单编译前台组件。

本实施例的j2ee开发框架的后端开发采用mvc框架,所述mvc框架集成strut2、spring和mybatis开源框架。提供了丰富简单易用的api,集成了业务处理的通用模块,提高了开发效率。封装了企业应用中的组织权限模块、工作流模块、即时通讯模块以及文档处理模块。

本实施例的j2ee开发框架的后端开发优选对struts2改进,采用shiro和struts2请求拦截。平台定义controller.xml,controller接口。controller.xml描述地址和具体controller的对应。首先所有请求corefilter,然后分发给sessioncreator或者sessionneeded以控制登录session。通过后进入authorityfiter,进行权限验证。然后以.v结尾的请求,会扫描controller.xml的配置,并根据不通的模板后缀,使用不同的模板解析器,如果有多个解析器,单个解析器返回false后将直接将视图返回到前台。解析器中定义默认strut2controller,如果配置的解析器中包含了它,将又把视图传递给strut2处理。.action或者不带后缀的请求,经过视图控制器后,将直接传递给struts2处理。除了系统提供的处理方式外。各个请求拦截器依据shiro的配置规则,可以自己扩展。

本实施例的j2ee开发框架的业务层封装:baseservice作为service基础业务封装,主要提供了数据uuid操作的封装。可以继承重写各个操作。simpledata作为数据操作的集合。主要提供数据提取和需要操作的数据。当在这里增加了数据的更改后,可以实时的传递到前台,提供给前台data组件处理。servicebuilder提供各个service工厂类,以提供给第三方使用。使用了javaassit作为代码增强。增加事务、日志等的切面处理。并在业务层提供乐观锁机制,控制数据的并发访问。封装了event模型,主要提供业务逻辑变化,传递到注册的逻辑模块处理相关变化逻辑。

本实施例的j2ee开发框架的后端开发中基础模块封装,封装基础模块包括:

1、组织机构模块:组织机构支持横向和纵向控制。涉及的表机构为sa_org、sa_person和sa_group表。其中sa_org表为树形结构,可以建立org,dept,pos,psn组织类型,和sa_person为多对一的关系。sa_group提供组织机构横向联系的能力。支持多岗切换等操作。提供了增加、移动、启停、删除、排序操作的api以及丰富的查询api。并可以把组织变动相关代码orgevent事件传递。

2、权限控制模块:权限模型涉及了sa_role、sa_opauthorize和sa_oppermission。以fun.xx.xml的配置方式,控制粒度从设计模块、资源请求路径以及业务资源。统一资源路径格式:其中md:为模块;url:为请求地址;src://[url]//#a.class为页面资源,[url]部分为页面地址,#后部分为页面元素选择器格式。所有资源关联到sa_role(角色),所有角色关联到组织模型上。由于这里查询远远大于更改,所有均使用缓存机制。

3、文档服务模块:用于提供文档服务和全文检索支持。本模块主要提供文件的读取和存储。区别特点为:(1)采用nio,提高处理文件的处理效率;(2)采用hash算法,将不同的文件平均分配存储在不通的文件目录下;(3)将存储位置单独采用一个表存储,可以方便移动和修改;(4)可以分布式存储。在设置context.properties中设置cluster=true将运行在分布式模式下。设置replica=true后,将会在集群中文件双备份。(5)在插件的支持下,可将存储和查询引擎切换为gridfs或者hdfs。

全文检索使用lucene作为索引引擎。添加了中文分词管理,rdb索引管理,二进制文档索引管理。其中rdb索引可以作为rdb数据查询的二次索引使用。索引中添加创建人全路径信息,作为权限控制的关键字段。索引建立的时候,维护了分类字段后,可以按照分类索引。目前分类有文档、流程、人员、消息和通知等,可以维护增加。需要索引的数据(包含rdb的数据和文档数据)和建立索引逻辑分离,整个逻辑模板采用了命令行模式和任务分配模式,使建立索引的过程和具体数据提供模块独立。

4、即时通讯模块:本模块解决了患者和医生的及时的交流和信息提醒。技术上主要实现消息的收发和存储。其中服务可以采用目前第三方服务,如环信、极光推送等。也可以自建服务器的方式,本开发框架主要actor-im作为im服务中间件。所有的方式都实现了所有的消息记录自管。客户端主要采用websocket的方式,包含了pc端和移动端,支持语音、文字、图像、文件的收发。客户端采用主动拉取和服务器推送结合的模式,实现了不同客户端消息同步的算法逻辑。

患者app端主动给患者推送预约挂号成功提醒、复诊提醒、随访提醒、用药提醒等。针对需要复诊的患者,会根据患者每次就诊时间,周期性自动提醒。针对用药提醒,app可查看治疗方案中的用药情况给患者进行周期性提醒。复诊通知、健康咨询回复、随访等消息提醒,仅提示消息而不显示内容,打开消息时提示输入鉴权信息。

为了确保用户隐私,患者跟医生进行交流或者查看之前的聊天记录均需要进行密码校验。

医生端app提供给医生使用,方便医生对患者的管理。医生可通过该app查看与其建立医患关系的患者信息,定期对患者进行跟踪观察,了解患者病情变化,指导患者康复。同时医生之间可通过app进行交流,分享文件等。

5、患者帐号管理模块:患者端app必须登录后才能使用,未登录前可以进入注册功能,进行账号注册。注册过程需要输入患者的姓名、电话及就诊卡唯一标识,系统会自动根据后台数据对信息和就诊卡唯一标示关联的信息进行校验,校验成功后,即完成注册,之后患者既可以通过手机号或就诊卡唯一标示进行登录app。

6、预约挂号模块:艾滋病患者的预约挂号科室仅1个,不涉及其他科室。由于app不能直接跟医院his系统交互,需要医院工作人员先通过pc工作站维护科室医生及号源信息,之后患者才可通过患者端app进行预约,预约完成后,医生需要从pc工作站查看患者的预约挂号记录并导出,作为患者的就诊凭证,也便于后期统计。

7、知识库管理模块:本模块主要实现了知识、公告通知等信息的发布。主要有栏目管理,包括不同栏目下的发布权限控制、发布范围的管理、发布方式的管理。可以word上传,可以html上传,也可以直接在富文本框里面编辑发布。发布可以查阅已读未读,可以设置关注和评论等。艾滋病患者可以查看相关抗病毒治疗的公共文章和知识。

本实施例的j2ee开发框架的后端开发还涉及数据持久层模块的改进,具体而言,本实施例采用mybatis作为持久层支持。在此基础的改进主要体现在以下方面:1.增加乐观锁控制;2.增加mysql,oracle,sqserver,postgresql数据库方言支持。在sql中需要使用函数的情况,增加函数转义的支持,以:todate()为例,当解析遇到:todate后自动转化为当前的数据库支持的函数。增设分页插件,可适应不通数据库分页查询。4.mybatis配置文件增强,全自动化持久映射,弥补了mybatis的不足;5.增设redis缓存插件;6.增设分库分表路由。增加注解@dbroute,指定路由算法。

本实施例的j2ee开发框架的后端开发还涉及分布式和集群支持改进,具体而言涉及:(1)会话处理:由于会话session实时性高,并要求做到负载均衡、高可靠性。本实施例集成了redis,所有会话都缓存在redis里。当web请求到达的时候,会从cookie或者参数取_as_ssn的值。并从本地缓存以及redis读取session状态。如果没有,则标识未登录。当登录成功后,生成一个标识,写到redis,同时以结果或者cookie的方式返回客户端。这么处理可以兼容各种客户端访问,并且处理了分布式部署中的session共享的问题。(2)全局锁:在部分情况下,比如操作订单库存,就需要在集群内实现全局锁。本实施例主要使用redis的setnx命令的特性,并在setnx的值设置过期时间(默认为3秒)。在获取锁之前开启线程不断尝试获取锁,在获取后开启线程间隔保持锁的存活。这样处理避免了获取锁的资源挂掉,也能及时释放锁。(3)服务注册和调用:集群间服务提供了服务注册和调用的功能。当服务注册的时候,会把服务名称,服务提供者(serviceprovider)ip和端口维护好,这里一个服务名称可能有多个服务提供者。然后维护好服务消费者(serviceconsumer)ip和端口,并注册provider的名称。这些信息都写进redis。当调用的时候,serviceinvoke调用即可。这里首先会根据名称查找服务提供者,从中选择空闲服务调用。如果没有相关的注册信息,则返回授权错误信息。当成功后统一返回json格式数据。

本实施例的j2ee开发框架的后端开发还包含ide插件支持模块,具体而言,为了提高研发效率,研发预设多个ide插件,主要为流程设计插件、mybatis生成插件、数据库表建立插件、以及基础service、action生成和配置一键生成插件。

本实施例的j2ee开发框架的后端开发还包含日志管理模块,具体而言,aop处理日志,定义了@actionas,@serviceas注解。使用了@actionas注解的将异步记录操作日志,主要为操作者编码,ip,时间等。@serviceas注解主要执行业务日志,主要记录业务操作前后数据的变化。同时也提供了servicelog,主动把需要写入的日志异步记录到数据库。

本实施例的j2ee开发框架的后端开发还包含模块依赖和打包测试模块,具体而言,使用maven处理模块依赖关系和打包发布。目前为core,document,message,cloud,weweb,pay等模块。core为基础模块,封装大部分调用以及决定了其他模块的代码风格;document为文档模块,封装了文档中心的操作和api调用;message为im模块;cloud为分布式开发基础包;pay为订单支付模块等;web模块主要提供处理http请求和视图返回的能力。单元测试规范采用junit和mockito。性能测试使用jmeter。

在以上的本实施例所提供的j2ee开发框架的基础上,本实施例还提供一种j2ee开发框架的开发方法,包括步骤为:

s1、对数据业务进行梳理和抽象;

s2、建立pojo类;并同步依序进行人机交互界面设计、后台调用api和数据格式确认、以及界面编写;

s3、定义和实现服务方法;调用业务支持模块模块,编写业务实现逻辑;调用规则引擎模块,编写服务调用参数的校验;日志模块包括操作日志和数据日志;调用数据持久层模块,生成实体类和数据库表的映射,并编写sql语句和支持的查询方式;

s4、进行junit单元测试,若junit单元测试通过则继续进行压力测试,若junit单元测试未通过则返回s3;

s5、若压力测试未通过则返回s3,若压力测试通过则连同s2中的编写的界面进行业务验证;

s6、若业务验证未通过则返回s1,若业务验证通过则进行功能模块注册;调用权限控制模块,实现数据的权限管理和功能的分配和拦截。

基于以上本实施例提供的j2ee开发框架以及相应的开发方法,程序开发人员通过方便的api调用,可以高效率高质量的实现面向艾滋病患者抗病毒治疗服务及管理软件产品的开发。并且开发出的面向艾滋病患者抗病毒治疗服务及管理软件产品兼容性强、扩展性好,进而通过将互联网医疗技术用于艾滋病患者抗病毒治疗服务及管理,从而优化和创新艾滋病抗病毒治疗及管理体系。

本发明不局限于上述可选的实施方式,任何人在本发明的启示下都可得出其他各种形式的产品。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1